@dbos-inc/dbos-cloud 0.8.41-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 (170) hide show
  1. package/cli.ts +177 -0
  2. package/dist/packages/dbos-cloud/applications/delete-app.d.ts +2 -0
  3. package/dist/packages/dbos-cloud/applications/delete-app.d.ts.map +1 -0
  4. package/dist/packages/dbos-cloud/applications/delete-app.js +42 -0
  5. package/dist/packages/dbos-cloud/applications/delete-app.js.map +1 -0
  6. package/dist/packages/dbos-cloud/applications/deploy-app-code.d.ts +2 -0
  7. package/dist/packages/dbos-cloud/applications/deploy-app-code.d.ts.map +1 -0
  8. package/dist/packages/dbos-cloud/applications/deploy-app-code.js +145 -0
  9. package/dist/packages/dbos-cloud/applications/deploy-app-code.js.map +1 -0
  10. package/dist/packages/dbos-cloud/applications/get-app-logs.d.ts +2 -0
  11. package/dist/packages/dbos-cloud/applications/get-app-logs.d.ts.map +1 -0
  12. package/dist/packages/dbos-cloud/applications/get-app-logs.js +42 -0
  13. package/dist/packages/dbos-cloud/applications/get-app-logs.js.map +1 -0
  14. package/dist/packages/dbos-cloud/applications/index.d.ts +7 -0
  15. package/dist/packages/dbos-cloud/applications/index.d.ts.map +1 -0
  16. package/dist/packages/dbos-cloud/applications/index.js +16 -0
  17. package/dist/packages/dbos-cloud/applications/index.js.map +1 -0
  18. package/dist/packages/dbos-cloud/applications/list-apps.d.ts +2 -0
  19. package/dist/packages/dbos-cloud/applications/list-apps.d.ts.map +1 -0
  20. package/dist/packages/dbos-cloud/applications/list-apps.js +45 -0
  21. package/dist/packages/dbos-cloud/applications/list-apps.js.map +1 -0
  22. package/dist/packages/dbos-cloud/applications/register-app.d.ts +2 -0
  23. package/dist/packages/dbos-cloud/applications/register-app.d.ts.map +1 -0
  24. package/dist/packages/dbos-cloud/applications/register-app.js +48 -0
  25. package/dist/packages/dbos-cloud/applications/register-app.js.map +1 -0
  26. package/dist/packages/dbos-cloud/applications/types.d.ts +9 -0
  27. package/dist/packages/dbos-cloud/applications/types.d.ts.map +1 -0
  28. package/dist/packages/dbos-cloud/applications/types.js +3 -0
  29. package/dist/packages/dbos-cloud/applications/types.js.map +1 -0
  30. package/dist/packages/dbos-cloud/applications/update-app.d.ts +2 -0
  31. package/dist/packages/dbos-cloud/applications/update-app.d.ts.map +1 -0
  32. package/dist/packages/dbos-cloud/applications/update-app.js +49 -0
  33. package/dist/packages/dbos-cloud/applications/update-app.js.map +1 -0
  34. package/dist/packages/dbos-cloud/cli.d.ts +3 -0
  35. package/dist/packages/dbos-cloud/cli.d.ts.map +1 -0
  36. package/dist/packages/dbos-cloud/cli.js +149 -0
  37. package/dist/packages/dbos-cloud/cli.js.map +1 -0
  38. package/dist/packages/dbos-cloud/cloudutils.d.ts +5 -0
  39. package/dist/packages/dbos-cloud/cloudutils.d.ts.map +1 -0
  40. package/dist/packages/dbos-cloud/cloudutils.js +47 -0
  41. package/dist/packages/dbos-cloud/cloudutils.js.map +1 -0
  42. package/dist/packages/dbos-cloud/login.d.ts +9 -0
  43. package/dist/packages/dbos-cloud/login.d.ts.map +1 -0
  44. package/dist/packages/dbos-cloud/login.js +102 -0
  45. package/dist/packages/dbos-cloud/login.js.map +1 -0
  46. package/dist/packages/dbos-cloud/register.d.ts +2 -0
  47. package/dist/packages/dbos-cloud/register.d.ts.map +1 -0
  48. package/dist/packages/dbos-cloud/register.js +40 -0
  49. package/dist/packages/dbos-cloud/register.js.map +1 -0
  50. package/dist/packages/dbos-cloud/userdb.d.ts +13 -0
  51. package/dist/packages/dbos-cloud/userdb.d.ts.map +1 -0
  52. package/dist/packages/dbos-cloud/userdb.js +266 -0
  53. package/dist/packages/dbos-cloud/userdb.js.map +1 -0
  54. package/dist/schemas/system_db_schema.d.ts +34 -0
  55. package/dist/schemas/system_db_schema.d.ts.map +1 -0
  56. package/dist/schemas/system_db_schema.js +77 -0
  57. package/dist/schemas/system_db_schema.js.map +1 -0
  58. package/dist/schemas/user_db_schema.d.ts +11 -0
  59. package/dist/schemas/user_db_schema.d.ts.map +1 -0
  60. package/dist/schemas/user_db_schema.js +16 -0
  61. package/dist/schemas/user_db_schema.js.map +1 -0
  62. package/dist/src/communicator.d.ts +25 -0
  63. package/dist/src/communicator.d.ts.map +1 -0
  64. package/dist/src/communicator.js +26 -0
  65. package/dist/src/communicator.js.map +1 -0
  66. package/dist/src/context.d.ts +64 -0
  67. package/dist/src/context.d.ts.map +1 -0
  68. package/dist/src/context.js +96 -0
  69. package/dist/src/context.js.map +1 -0
  70. package/dist/src/data_validation.d.ts +3 -0
  71. package/dist/src/data_validation.d.ts.map +1 -0
  72. package/dist/src/data_validation.js +168 -0
  73. package/dist/src/data_validation.js.map +1 -0
  74. package/dist/src/dbos-executor.d.ts +102 -0
  75. package/dist/src/dbos-executor.d.ts.map +1 -0
  76. package/dist/src/dbos-executor.js +631 -0
  77. package/dist/src/dbos-executor.js.map +1 -0
  78. package/dist/src/dbos-runtime/applicationVersion.d.ts +3 -0
  79. package/dist/src/dbos-runtime/applicationVersion.d.ts.map +1 -0
  80. package/dist/src/dbos-runtime/applicationVersion.js +13 -0
  81. package/dist/src/dbos-runtime/applicationVersion.js.map +1 -0
  82. package/dist/src/dbos-runtime/cli.d.ts +8 -0
  83. package/dist/src/dbos-runtime/cli.d.ts.map +1 -0
  84. package/dist/src/dbos-runtime/cli.js +47 -0
  85. package/dist/src/dbos-runtime/cli.js.map +1 -0
  86. package/dist/src/dbos-runtime/config.d.ts +29 -0
  87. package/dist/src/dbos-runtime/config.d.ts.map +1 -0
  88. package/dist/src/dbos-runtime/config.js +111 -0
  89. package/dist/src/dbos-runtime/config.js.map +1 -0
  90. package/dist/src/dbos-runtime/debug.d.ts +4 -0
  91. package/dist/src/dbos-runtime/debug.d.ts.map +1 -0
  92. package/dist/src/dbos-runtime/debug.js +21 -0
  93. package/dist/src/dbos-runtime/debug.js.map +1 -0
  94. package/dist/src/dbos-runtime/init.d.ts +7 -0
  95. package/dist/src/dbos-runtime/init.d.ts.map +1 -0
  96. package/dist/src/dbos-runtime/init.js +51 -0
  97. package/dist/src/dbos-runtime/init.js.map +1 -0
  98. package/dist/src/dbos-runtime/runtime.d.ts +28 -0
  99. package/dist/src/dbos-runtime/runtime.d.ts.map +1 -0
  100. package/dist/src/dbos-runtime/runtime.js +95 -0
  101. package/dist/src/dbos-runtime/runtime.js.map +1 -0
  102. package/dist/src/debugger/debug_workflow.d.ts +38 -0
  103. package/dist/src/debugger/debug_workflow.d.ts.map +1 -0
  104. package/dist/src/debugger/debug_workflow.js +211 -0
  105. package/dist/src/debugger/debug_workflow.js.map +1 -0
  106. package/dist/src/decorators.d.ts +118 -0
  107. package/dist/src/decorators.d.ts.map +1 -0
  108. package/dist/src/decorators.js +467 -0
  109. package/dist/src/decorators.js.map +1 -0
  110. package/dist/src/error.d.ts +47 -0
  111. package/dist/src/error.d.ts.map +1 -0
  112. package/dist/src/error.js +171 -0
  113. package/dist/src/error.js.map +1 -0
  114. package/dist/src/httpServer/handler.d.ts +54 -0
  115. package/dist/src/httpServer/handler.d.ts.map +1 -0
  116. package/dist/src/httpServer/handler.js +175 -0
  117. package/dist/src/httpServer/handler.js.map +1 -0
  118. package/dist/src/httpServer/handlerTypes.d.ts +11 -0
  119. package/dist/src/httpServer/handlerTypes.d.ts.map +1 -0
  120. package/dist/src/httpServer/handlerTypes.js +19 -0
  121. package/dist/src/httpServer/handlerTypes.js.map +1 -0
  122. package/dist/src/httpServer/middleware.d.ts +56 -0
  123. package/dist/src/httpServer/middleware.d.ts.map +1 -0
  124. package/dist/src/httpServer/middleware.js +57 -0
  125. package/dist/src/httpServer/middleware.js.map +1 -0
  126. package/dist/src/httpServer/server.d.ts +45 -0
  127. package/dist/src/httpServer/server.d.ts.map +1 -0
  128. package/dist/src/httpServer/server.js +253 -0
  129. package/dist/src/httpServer/server.js.map +1 -0
  130. package/dist/src/system_database.d.ts +89 -0
  131. package/dist/src/system_database.d.ts.map +1 -0
  132. package/dist/src/system_database.js +447 -0
  133. package/dist/src/system_database.js.map +1 -0
  134. package/dist/src/telemetry/collector.d.ts +16 -0
  135. package/dist/src/telemetry/collector.d.ts.map +1 -0
  136. package/dist/src/telemetry/collector.js +65 -0
  137. package/dist/src/telemetry/collector.js.map +1 -0
  138. package/dist/src/telemetry/exporters.d.ts +15 -0
  139. package/dist/src/telemetry/exporters.d.ts.map +1 -0
  140. package/dist/src/telemetry/exporters.js +59 -0
  141. package/dist/src/telemetry/exporters.js.map +1 -0
  142. package/dist/src/telemetry/index.d.ts +11 -0
  143. package/dist/src/telemetry/index.d.ts.map +1 -0
  144. package/dist/src/telemetry/index.js +19 -0
  145. package/dist/src/telemetry/index.js.map +1 -0
  146. package/dist/src/telemetry/logs.d.ts +47 -0
  147. package/dist/src/telemetry/logs.d.ts.map +1 -0
  148. package/dist/src/telemetry/logs.js +195 -0
  149. package/dist/src/telemetry/logs.js.map +1 -0
  150. package/dist/src/telemetry/traces.d.ts +14 -0
  151. package/dist/src/telemetry/traces.d.ts.map +1 -0
  152. package/dist/src/telemetry/traces.js +52 -0
  153. package/dist/src/telemetry/traces.js.map +1 -0
  154. package/dist/src/transaction.d.ts +29 -0
  155. package/dist/src/transaction.d.ts.map +1 -0
  156. package/dist/src/transaction.js +27 -0
  157. package/dist/src/transaction.js.map +1 -0
  158. package/dist/src/user_database.d.ts +132 -0
  159. package/dist/src/user_database.d.ts.map +1 -0
  160. package/dist/src/user_database.js +332 -0
  161. package/dist/src/user_database.js.map +1 -0
  162. package/dist/src/utils.d.ts +6 -0
  163. package/dist/src/utils.d.ts.map +1 -0
  164. package/dist/src/utils.js +35 -0
  165. package/dist/src/utils.js.map +1 -0
  166. package/dist/src/workflow.d.ts +195 -0
  167. package/dist/src/workflow.d.ts.map +1 -0
  168. package/dist/src/workflow.js +498 -0
  169. package/dist/src/workflow.js.map +1 -0
  170. package/package.json +50 -0
@@ -0,0 +1,253 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DBOSHttpServer = exports.HealthUrl = exports.WorkflowRecoveryUrl = exports.WorkflowUUIDHeader = void 0;
7
+ const koa_1 = __importDefault(require("koa"));
8
+ const router_1 = __importDefault(require("@koa/router"));
9
+ const bodyparser_1 = require("@koa/bodyparser");
10
+ const cors_1 = __importDefault(require("@koa/cors"));
11
+ const handler_1 = require("./handler");
12
+ const handlerTypes_1 = require("./handlerTypes");
13
+ const error_1 = require("../error");
14
+ const api_1 = require("@opentelemetry/api");
15
+ exports.WorkflowUUIDHeader = "dbos-workflowuuid";
16
+ exports.WorkflowRecoveryUrl = "/dbos-workflow-recovery";
17
+ exports.HealthUrl = "/dbos-healthz";
18
+ class DBOSHttpServer {
19
+ dbosExec;
20
+ app;
21
+ router;
22
+ logger;
23
+ /**
24
+ * Create a Koa app.
25
+ * @param dbosExec User pass in an DBOS workflow executor instance.
26
+ * TODO: maybe call dbosExec.init() somewhere in this class?
27
+ */
28
+ constructor(dbosExec, config = {}) {
29
+ this.dbosExec = dbosExec;
30
+ if (!config.router) {
31
+ config.router = new router_1.default();
32
+ }
33
+ this.router = config.router;
34
+ this.logger = dbosExec.logger;
35
+ if (!config.koa) {
36
+ config.koa = new koa_1.default();
37
+ // Note: we definitely need bodyParser.
38
+ // For cors(), it doesn't work if we use it in a router, and thus we have to use it in app.
39
+ config.koa.use((0, bodyparser_1.bodyParser)());
40
+ config.koa.use((0, cors_1.default)());
41
+ }
42
+ this.app = config.koa;
43
+ // Register HTTP endpoints.
44
+ DBOSHttpServer.registerHealthEndpoint(this.dbosExec, this.router);
45
+ DBOSHttpServer.registerRecoveryEndpoint(this.dbosExec, this.router);
46
+ DBOSHttpServer.registerDecoratedEndpoints(this.dbosExec, this.router);
47
+ this.app.use(this.router.routes()).use(this.router.allowedMethods());
48
+ }
49
+ /**
50
+ * Register HTTP endpoints and attach to the app. Then start the server at the given port.
51
+ * @param port
52
+ */
53
+ listen(port) {
54
+ // Start the HTTP server.
55
+ return this.app.listen(port, () => {
56
+ this.logger.info(`DBOS Server is running at http://localhost:${port}`);
57
+ });
58
+ }
59
+ /**
60
+ * Health check endpoint.
61
+ */
62
+ static registerHealthEndpoint(dbosExec, router) {
63
+ // Handler function that parses request for recovery.
64
+ const healthHandler = async (koaCtxt, koaNext) => {
65
+ koaCtxt.body = "healthy";
66
+ await koaNext();
67
+ };
68
+ router.get(exports.HealthUrl, healthHandler);
69
+ dbosExec.logger.debug(`DBOS Server Registered Healthz POST ${exports.HealthUrl}`);
70
+ }
71
+ /**
72
+ * Register workflow recovery endpoint.
73
+ * Receives a list of executor IDs and returns a list of workflowUUIDs.
74
+ */
75
+ static registerRecoveryEndpoint(dbosExec, router) {
76
+ // Handler function that parses request for recovery.
77
+ const recoveryHandler = async (koaCtxt, koaNext) => {
78
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
79
+ const executorIDs = koaCtxt.request.body;
80
+ dbosExec.logger.info("Recovering workflows for executors: " + executorIDs.toString());
81
+ const recoverHandles = await dbosExec.recoverPendingWorkflows(executorIDs);
82
+ // Return a list of workflowUUIDs being recovered.
83
+ koaCtxt.body = await Promise.allSettled(recoverHandles.map((i) => i.getWorkflowUUID())).then((results) => results.filter((i) => i.status === "fulfilled").map((i) => i.value));
84
+ await koaNext();
85
+ };
86
+ router.post(exports.WorkflowRecoveryUrl, recoveryHandler);
87
+ dbosExec.logger.debug(`DBOS Server Registered Recovery POST ${exports.WorkflowRecoveryUrl}`);
88
+ }
89
+ /**
90
+ * Register decorated functions as HTTP endpoints.
91
+ */
92
+ static registerDecoratedEndpoints(dbosExec, router) {
93
+ // Register user declared endpoints, wrap around the endpoint with request parsing and response.
94
+ dbosExec.registeredOperations.forEach((registeredOperation) => {
95
+ const ro = registeredOperation;
96
+ if (ro.apiURL) {
97
+ // Ignore URL with "/dbos-workflow-recovery" prefix.
98
+ if (ro.apiURL.startsWith(exports.WorkflowRecoveryUrl)) {
99
+ dbosExec.logger.error(`Invalid URL: ${ro.apiURL} -- should not start with ${exports.WorkflowRecoveryUrl}!`);
100
+ return;
101
+ }
102
+ // Ignore URL with "/dbos-healthz" prefix.
103
+ if (ro.apiURL.startsWith(exports.HealthUrl)) {
104
+ dbosExec.logger.error(`Invalid URL: ${ro.apiURL} -- should not start with ${exports.HealthUrl}!`);
105
+ return;
106
+ }
107
+ // Check if we need to apply any Koa middleware.
108
+ const defaults = ro.defaults;
109
+ if (defaults?.koaMiddlewares) {
110
+ defaults.koaMiddlewares.forEach((koaMiddleware) => {
111
+ dbosExec.logger.debug(`DBOS Server applying middleware ${koaMiddleware.name} to ${ro.apiURL}`);
112
+ router.use(ro.apiURL, koaMiddleware);
113
+ });
114
+ }
115
+ // Wrapper function that parses request and send response.
116
+ const wrappedHandler = async (koaCtxt, koaNext) => {
117
+ const oc = new handler_1.HandlerContextImpl(dbosExec, koaCtxt);
118
+ try {
119
+ // Check for auth first
120
+ if (defaults?.authMiddleware) {
121
+ const res = await defaults.authMiddleware({
122
+ name: ro.name,
123
+ requiredRole: ro.getRequiredRoles(),
124
+ koaContext: koaCtxt,
125
+ logger: oc.logger,
126
+ span: oc.span,
127
+ getConfig: (key, def) => {
128
+ return oc.getConfig(key, def);
129
+ },
130
+ query: (query, ...args) => {
131
+ return dbosExec.userDatabase.queryFunction(query, ...args);
132
+ },
133
+ });
134
+ if (res) {
135
+ oc.authenticatedUser = res.authenticatedUser;
136
+ oc.authenticatedRoles = res.authenticatedRoles;
137
+ }
138
+ }
139
+ // Parse the arguments.
140
+ const args = [];
141
+ ro.args.forEach((marg, idx) => {
142
+ marg.argSource = marg.argSource ?? handlerTypes_1.ArgSources.DEFAULT; // Assign a default value.
143
+ if (idx === 0) {
144
+ return; // Do not parse the context.
145
+ }
146
+ let foundArg = undefined;
147
+ if ((ro.apiType === handlerTypes_1.APITypes.GET && marg.argSource === handlerTypes_1.ArgSources.DEFAULT) || marg.argSource === handlerTypes_1.ArgSources.QUERY) {
148
+ foundArg = koaCtxt.request.query[marg.name];
149
+ if (foundArg) {
150
+ args.push(foundArg);
151
+ }
152
+ }
153
+ else if ((ro.apiType === handlerTypes_1.APITypes.POST && marg.argSource === handlerTypes_1.ArgSources.DEFAULT) || marg.argSource === handlerTypes_1.ArgSources.BODY) {
154
+ if (!koaCtxt.request.body) {
155
+ throw new error_1.DBOSDataValidationError(`Argument ${marg.name} requires a method body.`);
156
+ }
157
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment
158
+ foundArg = koaCtxt.request.body[marg.name];
159
+ if (foundArg) {
160
+ args.push(foundArg);
161
+ }
162
+ }
163
+ // Try to parse the argument from the URL if nothing found.
164
+ if (!foundArg) {
165
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
166
+ args.push(koaCtxt.params[marg.name]);
167
+ }
168
+ //console.log(`found arg ${marg.name} ${idx} ${args[idx-1]}`);
169
+ });
170
+ // Extract workflow UUID from headers (if any).
171
+ // We pass in the specified workflow UUID to workflows and transactions, but doesn't restrict how handlers use it.
172
+ const headerWorkflowUUID = koaCtxt.get(exports.WorkflowUUIDHeader);
173
+ // Finally, invoke the transaction/workflow/plain function and properly set HTTP response.
174
+ // If functions return successfully and hasn't set the body, we set the body to the function return value. The status code will be automatically set to 200 or 204 (if the body is null/undefined).
175
+ // In case of an exception:
176
+ // - If a client-side error is thrown, we return 400.
177
+ // - If an error contains a `status` field, we return the specified status code.
178
+ // - Otherwise, we return 500.
179
+ const wfParams = { parentCtx: oc, workflowUUID: headerWorkflowUUID };
180
+ if (ro.txnConfig) {
181
+ koaCtxt.body = await dbosExec.transaction(ro.registeredFunction, wfParams, ...args);
182
+ }
183
+ else if (ro.workflowConfig) {
184
+ koaCtxt.body = await (await dbosExec.workflow(ro.registeredFunction, wfParams, ...args)).getResult();
185
+ }
186
+ else if (ro.commConfig) {
187
+ koaCtxt.body = await dbosExec.external(ro.registeredFunction, wfParams, ...args);
188
+ }
189
+ else {
190
+ // Directly invoke the handler code.
191
+ const retValue = await ro.invoke(undefined, [oc, ...args]);
192
+ // Set the body to the return value unless the body is already set by the handler.
193
+ if (koaCtxt.body === undefined) {
194
+ koaCtxt.body = retValue;
195
+ }
196
+ }
197
+ oc.span.setStatus({ code: api_1.SpanStatusCode.OK });
198
+ }
199
+ catch (e) {
200
+ if (e instanceof Error) {
201
+ oc.logger.error(e);
202
+ oc.span.setStatus({ code: api_1.SpanStatusCode.ERROR, message: e.message });
203
+ let st = e?.status || 500;
204
+ const dbosErrorCode = e?.dbosErrorCode;
205
+ if (dbosErrorCode && (0, error_1.isClientError)(dbosErrorCode)) {
206
+ st = 400; // Set to 400: client-side error.
207
+ }
208
+ koaCtxt.status = st;
209
+ koaCtxt.message = e.message;
210
+ koaCtxt.body = {
211
+ status: st,
212
+ message: e.message,
213
+ details: e,
214
+ };
215
+ }
216
+ else {
217
+ // FIXME we should have a standard, user friendly message for errors that are not instances of Error.
218
+ // using stringify() will not produce a pretty output, because our format function uses stringify() too.
219
+ oc.logger.error(JSON.stringify(e));
220
+ oc.span.setStatus({ code: api_1.SpanStatusCode.ERROR, message: JSON.stringify(e) });
221
+ koaCtxt.body = e;
222
+ koaCtxt.status = 500;
223
+ }
224
+ }
225
+ finally {
226
+ oc.W3CTraceContextPropagator.inject(api_1.trace.setSpanContext(api_1.ROOT_CONTEXT, oc.span.spanContext()), {
227
+ context: koaCtxt,
228
+ }, {
229
+ set: (carrier, key, value) => {
230
+ carrier.context.set(key, value);
231
+ },
232
+ });
233
+ dbosExec.tracer.endSpan(oc.span);
234
+ // Add requestID to response headers.
235
+ koaCtxt.set(handler_1.RequestIDHeader, oc.request.requestID);
236
+ await koaNext();
237
+ }
238
+ };
239
+ // Actually register the endpoint.
240
+ if (ro.apiType === handlerTypes_1.APITypes.GET) {
241
+ router.get(ro.apiURL, wrappedHandler);
242
+ dbosExec.logger.debug(`DBOS Server Registered GET ${ro.apiURL}`);
243
+ }
244
+ else if (ro.apiType === handlerTypes_1.APITypes.POST) {
245
+ router.post(ro.apiURL, wrappedHandler);
246
+ dbosExec.logger.debug(`DBOS Server Registered POST ${ro.apiURL}`);
247
+ }
248
+ }
249
+ });
250
+ }
251
+ }
252
+ exports.DBOSHttpServer = DBOSHttpServer;
253
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../../../src/httpServer/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ import { DBOSNull } from "./dbos-executor";
2
+ import { Pool, PoolClient, PoolConfig } from "pg";
3
+ import { WorkflowStatus } from "./workflow";
4
+ import { HTTPRequest } from "./context";
5
+ import { GlobalLogger as Logger } from "./telemetry/logs";
6
+ export interface SystemDatabase {
7
+ init(): Promise<void>;
8
+ destroy(): Promise<void>;
9
+ checkWorkflowOutput<R>(workflowUUID: string): Promise<DBOSNull | R>;
10
+ initWorkflowStatus<T extends any[]>(bufferedStatus: WorkflowStatusInternal, args: T): Promise<T>;
11
+ bufferWorkflowOutput(workflowUUID: string, status: WorkflowStatusInternal): void;
12
+ flushWorkflowStatusBuffer(): Promise<void>;
13
+ recordWorkflowError(workflowUUID: string, status: WorkflowStatusInternal): Promise<void>;
14
+ getPendingWorkflows(executorID: string): Promise<Array<string>>;
15
+ bufferWorkflowInputs<T extends any[]>(workflowUUID: string, args: T): void;
16
+ getWorkflowInputs<T extends any[]>(workflowUUID: string): Promise<T | null>;
17
+ flushWorkflowInputsBuffer(): Promise<void>;
18
+ checkOperationOutput<R>(workflowUUID: string, functionID: number): Promise<DBOSNull | R>;
19
+ recordOperationOutput<R>(workflowUUID: string, functionID: number, output: R): Promise<void>;
20
+ recordOperationError(workflowUUID: string, functionID: number, error: Error): Promise<void>;
21
+ getWorkflowStatus(workflowUUID: string, callerUUID?: string, functionID?: number): Promise<WorkflowStatus | null>;
22
+ getWorkflowResult<R>(workflowUUID: string): Promise<R>;
23
+ send<T extends NonNullable<any>>(workflowUUID: string, functionID: number, destinationUUID: string, message: T, topic?: string): Promise<void>;
24
+ recv<T extends NonNullable<any>>(workflowUUID: string, functionID: number, topic?: string, timeoutSeconds?: number): Promise<T | null>;
25
+ setEvent<T extends NonNullable<any>>(workflowUUID: string, functionID: number, key: string, value: T): Promise<void>;
26
+ getEvent<T extends NonNullable<any>>(workflowUUID: string, key: string, timeoutSeconds: number, callerUUID?: string, functionID?: number): Promise<T | null>;
27
+ }
28
+ export interface WorkflowStatusInternal {
29
+ workflowUUID: string;
30
+ status: string;
31
+ name: string;
32
+ authenticatedUser: string;
33
+ output: unknown;
34
+ error: string;
35
+ assumedRole: string;
36
+ authenticatedRoles: string[];
37
+ request: HTTPRequest;
38
+ executorID: string;
39
+ }
40
+ export interface ExistenceCheck {
41
+ exists: boolean;
42
+ }
43
+ export declare class PostgresSystemDatabase implements SystemDatabase {
44
+ readonly pgPoolConfig: PoolConfig;
45
+ readonly systemDatabaseName: string;
46
+ readonly logger: Logger;
47
+ readonly pool: Pool;
48
+ notificationsClient: PoolClient | null;
49
+ readonly notificationsMap: Record<string, () => void>;
50
+ readonly workflowEventsMap: Record<string, () => void>;
51
+ readonly workflowStatusBuffer: Map<string, WorkflowStatusInternal>;
52
+ readonly workflowInputsBuffer: Map<string, any[]>;
53
+ readonly flushBatchSize = 100;
54
+ constructor(pgPoolConfig: PoolConfig, systemDatabaseName: string, logger: Logger);
55
+ init(): Promise<void>;
56
+ destroy(): Promise<void>;
57
+ checkWorkflowOutput<R>(workflowUUID: string): Promise<DBOSNull | R>;
58
+ initWorkflowStatus<T extends any[]>(initStatus: WorkflowStatusInternal, args: T): Promise<T>;
59
+ bufferWorkflowOutput(workflowUUID: string, status: WorkflowStatusInternal): void;
60
+ /**
61
+ * Flush the workflow output buffer to the database.
62
+ */
63
+ flushWorkflowStatusBuffer(): Promise<void>;
64
+ recordWorkflowError(workflowUUID: string, status: WorkflowStatusInternal): Promise<void>;
65
+ getPendingWorkflows(executorID: string): Promise<Array<string>>;
66
+ bufferWorkflowInputs<T extends any[]>(workflowUUID: string, args: T): void;
67
+ flushWorkflowInputsBuffer(): Promise<void>;
68
+ getWorkflowInputs<T extends any[]>(workflowUUID: string): Promise<T | null>;
69
+ checkOperationOutput<R>(workflowUUID: string, functionID: number): Promise<DBOSNull | R>;
70
+ recordOperationOutput<R>(workflowUUID: string, functionID: number, output: R): Promise<void>;
71
+ recordOperationError(workflowUUID: string, functionID: number, error: Error): Promise<void>;
72
+ /**
73
+ * Guard the operation, throwing an error if a conflicting execution is detected.
74
+ */
75
+ recordNotificationOutput<R>(client: PoolClient, workflowUUID: string, functionID: number, output: R): Promise<void>;
76
+ readonly nullTopic = "__null__topic__";
77
+ send<T extends NonNullable<any>>(workflowUUID: string, functionID: number, destinationUUID: string, message: T, topic?: string): Promise<void>;
78
+ recv<T extends NonNullable<any>>(workflowUUID: string, functionID: number, topic?: string, timeoutSeconds?: number): Promise<T | null>;
79
+ setEvent<T extends NonNullable<any>>(workflowUUID: string, functionID: number, key: string, message: T): Promise<void>;
80
+ getEvent<T extends NonNullable<any>>(workflowUUID: string, key: string, timeoutSeconds: number, callerUUID?: string, functionID?: number): Promise<T | null>;
81
+ getWorkflowStatus(workflowUUID: string, callerUUID?: string, functionID?: number): Promise<WorkflowStatus | null>;
82
+ getWorkflowResult<R>(workflowUUID: string): Promise<R>;
83
+ /**
84
+ * A background process that listens for notifications from Postgres then signals the appropriate
85
+ * workflow listener by resolving its promise.
86
+ */
87
+ listenForNotifications(): Promise<void>;
88
+ }
89
+ //# sourceMappingURL=system_database.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system_database.d.ts","sourceRoot":"","sources":["../../../../src/system_database.ts"],"names":[],"mappings":"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"}