@dbos-inc/dbos-sdk 0.7.18-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 (203) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +30 -0
  3. package/dbos-config.schema.json +121 -0
  4. package/dbos-test-config.yaml +16 -0
  5. package/dist/schemas/system_db_schema.d.ts +34 -0
  6. package/dist/schemas/system_db_schema.d.ts.map +1 -0
  7. package/dist/schemas/system_db_schema.js +75 -0
  8. package/dist/schemas/system_db_schema.js.map +1 -0
  9. package/dist/schemas/user_db_schema.d.ts +11 -0
  10. package/dist/schemas/user_db_schema.d.ts.map +1 -0
  11. package/dist/schemas/user_db_schema.js +16 -0
  12. package/dist/schemas/user_db_schema.js.map +1 -0
  13. package/dist/src/cloud-cli/applications/configure.d.ts +2 -0
  14. package/dist/src/cloud-cli/applications/configure.d.ts.map +1 -0
  15. package/dist/src/cloud-cli/applications/configure.js +57 -0
  16. package/dist/src/cloud-cli/applications/configure.js.map +1 -0
  17. package/dist/src/cloud-cli/applications/delete-app.d.ts +2 -0
  18. package/dist/src/cloud-cli/applications/delete-app.d.ts.map +1 -0
  19. package/dist/src/cloud-cli/applications/delete-app.js +36 -0
  20. package/dist/src/cloud-cli/applications/delete-app.js.map +1 -0
  21. package/dist/src/cloud-cli/applications/deploy-app-code.d.ts +2 -0
  22. package/dist/src/cloud-cli/applications/deploy-app-code.d.ts.map +1 -0
  23. package/dist/src/cloud-cli/applications/deploy-app-code.js +64 -0
  24. package/dist/src/cloud-cli/applications/deploy-app-code.js.map +1 -0
  25. package/dist/src/cloud-cli/applications/get-app-logs.d.ts +2 -0
  26. package/dist/src/cloud-cli/applications/get-app-logs.d.ts.map +1 -0
  27. package/dist/src/cloud-cli/applications/get-app-logs.js +37 -0
  28. package/dist/src/cloud-cli/applications/get-app-logs.js.map +1 -0
  29. package/dist/src/cloud-cli/applications/index.d.ts +8 -0
  30. package/dist/src/cloud-cli/applications/index.d.ts.map +1 -0
  31. package/dist/src/cloud-cli/applications/index.js +18 -0
  32. package/dist/src/cloud-cli/applications/index.js.map +1 -0
  33. package/dist/src/cloud-cli/applications/list-apps.d.ts +2 -0
  34. package/dist/src/cloud-cli/applications/list-apps.d.ts.map +1 -0
  35. package/dist/src/cloud-cli/applications/list-apps.js +45 -0
  36. package/dist/src/cloud-cli/applications/list-apps.js.map +1 -0
  37. package/dist/src/cloud-cli/applications/register-app.d.ts +2 -0
  38. package/dist/src/cloud-cli/applications/register-app.d.ts.map +1 -0
  39. package/dist/src/cloud-cli/applications/register-app.js +41 -0
  40. package/dist/src/cloud-cli/applications/register-app.js.map +1 -0
  41. package/dist/src/cloud-cli/applications/types.d.ts +7 -0
  42. package/dist/src/cloud-cli/applications/types.d.ts.map +1 -0
  43. package/dist/src/cloud-cli/applications/types.js +3 -0
  44. package/dist/src/cloud-cli/applications/types.js.map +1 -0
  45. package/dist/src/cloud-cli/applications/update-app.d.ts +2 -0
  46. package/dist/src/cloud-cli/applications/update-app.d.ts.map +1 -0
  47. package/dist/src/cloud-cli/applications/update-app.js +42 -0
  48. package/dist/src/cloud-cli/applications/update-app.js.map +1 -0
  49. package/dist/src/cloud-cli/cli.d.ts +3 -0
  50. package/dist/src/cloud-cli/cli.d.ts.map +1 -0
  51. package/dist/src/cloud-cli/cli.js +148 -0
  52. package/dist/src/cloud-cli/cli.js.map +1 -0
  53. package/dist/src/cloud-cli/login.d.ts +7 -0
  54. package/dist/src/cloud-cli/login.d.ts.map +1 -0
  55. package/dist/src/cloud-cli/login.js +40 -0
  56. package/dist/src/cloud-cli/login.js.map +1 -0
  57. package/dist/src/cloud-cli/register.d.ts +2 -0
  58. package/dist/src/cloud-cli/register.d.ts.map +1 -0
  59. package/dist/src/cloud-cli/register.js +35 -0
  60. package/dist/src/cloud-cli/register.js.map +1 -0
  61. package/dist/src/cloud-cli/userdb.d.ts +4 -0
  62. package/dist/src/cloud-cli/userdb.d.ts.map +1 -0
  63. package/dist/src/cloud-cli/userdb.js +149 -0
  64. package/dist/src/cloud-cli/userdb.js.map +1 -0
  65. package/dist/src/cloud-cli/utils.d.ts +3 -0
  66. package/dist/src/cloud-cli/utils.d.ts.map +1 -0
  67. package/dist/src/cloud-cli/utils.js +17 -0
  68. package/dist/src/cloud-cli/utils.js.map +1 -0
  69. package/dist/src/communicator.d.ts +24 -0
  70. package/dist/src/communicator.d.ts.map +1 -0
  71. package/dist/src/communicator.js +26 -0
  72. package/dist/src/communicator.js.map +1 -0
  73. package/dist/src/context.d.ts +60 -0
  74. package/dist/src/context.d.ts.map +1 -0
  75. package/dist/src/context.js +94 -0
  76. package/dist/src/context.js.map +1 -0
  77. package/dist/src/data_validation.d.ts +3 -0
  78. package/dist/src/data_validation.d.ts.map +1 -0
  79. package/dist/src/data_validation.js +168 -0
  80. package/dist/src/data_validation.js.map +1 -0
  81. package/dist/src/dbos-executor.d.ts +79 -0
  82. package/dist/src/dbos-executor.d.ts.map +1 -0
  83. package/dist/src/dbos-executor.js +408 -0
  84. package/dist/src/dbos-executor.js.map +1 -0
  85. package/dist/src/dbos-runtime/TypeParser.d.ts +33 -0
  86. package/dist/src/dbos-runtime/TypeParser.d.ts.map +1 -0
  87. package/dist/src/dbos-runtime/TypeParser.js +104 -0
  88. package/dist/src/dbos-runtime/TypeParser.js.map +1 -0
  89. package/dist/src/dbos-runtime/applicationVersion.d.ts +3 -0
  90. package/dist/src/dbos-runtime/applicationVersion.d.ts.map +1 -0
  91. package/dist/src/dbos-runtime/applicationVersion.js +13 -0
  92. package/dist/src/dbos-runtime/applicationVersion.js.map +1 -0
  93. package/dist/src/dbos-runtime/cli.d.ts +8 -0
  94. package/dist/src/dbos-runtime/cli.d.ts.map +1 -0
  95. package/dist/src/dbos-runtime/cli.js +52 -0
  96. package/dist/src/dbos-runtime/cli.js.map +1 -0
  97. package/dist/src/dbos-runtime/config.d.ts +28 -0
  98. package/dist/src/dbos-runtime/config.d.ts.map +1 -0
  99. package/dist/src/dbos-runtime/config.js +111 -0
  100. package/dist/src/dbos-runtime/config.js.map +1 -0
  101. package/dist/src/dbos-runtime/init.d.ts +7 -0
  102. package/dist/src/dbos-runtime/init.d.ts.map +1 -0
  103. package/dist/src/dbos-runtime/init.js +51 -0
  104. package/dist/src/dbos-runtime/init.js.map +1 -0
  105. package/dist/src/dbos-runtime/openApi.d.ts +35 -0
  106. package/dist/src/dbos-runtime/openApi.d.ts.map +1 -0
  107. package/dist/src/dbos-runtime/openApi.js +595 -0
  108. package/dist/src/dbos-runtime/openApi.js.map +1 -0
  109. package/dist/src/dbos-runtime/runtime.d.ts +28 -0
  110. package/dist/src/dbos-runtime/runtime.d.ts.map +1 -0
  111. package/dist/src/dbos-runtime/runtime.js +96 -0
  112. package/dist/src/dbos-runtime/runtime.js.map +1 -0
  113. package/dist/src/dbos-runtime/tsDiagUtil.d.ts +16 -0
  114. package/dist/src/dbos-runtime/tsDiagUtil.d.ts.map +1 -0
  115. package/dist/src/dbos-runtime/tsDiagUtil.js +72 -0
  116. package/dist/src/dbos-runtime/tsDiagUtil.js.map +1 -0
  117. package/dist/src/decorators.d.ts +118 -0
  118. package/dist/src/decorators.d.ts.map +1 -0
  119. package/dist/src/decorators.js +467 -0
  120. package/dist/src/decorators.js.map +1 -0
  121. package/dist/src/error.d.ts +44 -0
  122. package/dist/src/error.d.ts.map +1 -0
  123. package/dist/src/error.js +164 -0
  124. package/dist/src/error.js.map +1 -0
  125. package/dist/src/httpServer/handler.d.ts +62 -0
  126. package/dist/src/httpServer/handler.d.ts.map +1 -0
  127. package/dist/src/httpServer/handler.js +168 -0
  128. package/dist/src/httpServer/handler.js.map +1 -0
  129. package/dist/src/httpServer/middleware.d.ts +56 -0
  130. package/dist/src/httpServer/middleware.d.ts.map +1 -0
  131. package/dist/src/httpServer/middleware.js +57 -0
  132. package/dist/src/httpServer/middleware.js.map +1 -0
  133. package/dist/src/httpServer/server.d.ts +40 -0
  134. package/dist/src/httpServer/server.d.ts.map +1 -0
  135. package/dist/src/httpServer/server.js +231 -0
  136. package/dist/src/httpServer/server.js.map +1 -0
  137. package/dist/src/index.d.ts +12 -0
  138. package/dist/src/index.d.ts.map +1 -0
  139. package/dist/src/index.js +75 -0
  140. package/dist/src/index.js.map +1 -0
  141. package/dist/src/provenance/provenance_daemon.d.ts +34 -0
  142. package/dist/src/provenance/provenance_daemon.d.ts.map +1 -0
  143. package/dist/src/provenance/provenance_daemon.js +86 -0
  144. package/dist/src/provenance/provenance_daemon.js.map +1 -0
  145. package/dist/src/system_database.d.ts +69 -0
  146. package/dist/src/system_database.d.ts.map +1 -0
  147. package/dist/src/system_database.js +384 -0
  148. package/dist/src/system_database.js.map +1 -0
  149. package/dist/src/telemetry/collector.d.ts +17 -0
  150. package/dist/src/telemetry/collector.d.ts.map +1 -0
  151. package/dist/src/telemetry/collector.js +77 -0
  152. package/dist/src/telemetry/collector.js.map +1 -0
  153. package/dist/src/telemetry/exporters.d.ts +29 -0
  154. package/dist/src/telemetry/exporters.d.ts.map +1 -0
  155. package/dist/src/telemetry/exporters.js +186 -0
  156. package/dist/src/telemetry/exporters.js.map +1 -0
  157. package/dist/src/telemetry/index.d.ts +7 -0
  158. package/dist/src/telemetry/index.d.ts.map +1 -0
  159. package/dist/src/telemetry/index.js +3 -0
  160. package/dist/src/telemetry/index.js.map +1 -0
  161. package/dist/src/telemetry/logs.d.ts +25 -0
  162. package/dist/src/telemetry/logs.d.ts.map +1 -0
  163. package/dist/src/telemetry/logs.js +91 -0
  164. package/dist/src/telemetry/logs.js.map +1 -0
  165. package/dist/src/telemetry/signals.d.ts +30 -0
  166. package/dist/src/telemetry/signals.d.ts.map +1 -0
  167. package/dist/src/telemetry/signals.js +11 -0
  168. package/dist/src/telemetry/signals.js.map +1 -0
  169. package/dist/src/telemetry/traces.d.ts +17 -0
  170. package/dist/src/telemetry/traces.d.ts.map +1 -0
  171. package/dist/src/telemetry/traces.js +76 -0
  172. package/dist/src/telemetry/traces.js.map +1 -0
  173. package/dist/src/testing/testing_runtime.d.ts +76 -0
  174. package/dist/src/testing/testing_runtime.d.ts.map +1 -0
  175. package/dist/src/testing/testing_runtime.js +147 -0
  176. package/dist/src/testing/testing_runtime.js.map +1 -0
  177. package/dist/src/transaction.d.ts +28 -0
  178. package/dist/src/transaction.d.ts.map +1 -0
  179. package/dist/src/transaction.js +27 -0
  180. package/dist/src/transaction.js.map +1 -0
  181. package/dist/src/user_database.d.ts +132 -0
  182. package/dist/src/user_database.d.ts.map +1 -0
  183. package/dist/src/user_database.js +324 -0
  184. package/dist/src/user_database.js.map +1 -0
  185. package/dist/src/utils.d.ts +6 -0
  186. package/dist/src/utils.d.ts.map +1 -0
  187. package/dist/src/utils.js +35 -0
  188. package/dist/src/utils.js.map +1 -0
  189. package/dist/src/workflow.d.ts +179 -0
  190. package/dist/src/workflow.d.ts.map +1 -0
  191. package/dist/src/workflow.js +446 -0
  192. package/dist/src/workflow.js.map +1 -0
  193. package/examples/hello/README.md +41 -0
  194. package/examples/hello/dbos-config.yaml +15 -0
  195. package/examples/hello/jest.config.js +8 -0
  196. package/examples/hello/knexfile.ts +23 -0
  197. package/examples/hello/migrations/create_dbos_hello_tables.ts +12 -0
  198. package/examples/hello/package.json +21 -0
  199. package/examples/hello/src/operations.test.ts +38 -0
  200. package/examples/hello/src/operations.ts +21 -0
  201. package/examples/hello/start_postgres_docker.sh +23 -0
  202. package/examples/hello/tsconfig.json +24 -0
  203. package/package.json +78 -0
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TestingRuntimeImpl = exports.createInternalTestRuntime = exports.createTestingRuntime = void 0;
4
+ const context_1 = require("../context");
5
+ const decorators_1 = require("../decorators");
6
+ const error_1 = require("../error");
7
+ const server_1 = require("../httpServer/server");
8
+ const dbos_executor_1 = require("../dbos-executor");
9
+ const config_1 = require("../dbos-runtime/config");
10
+ const lodash_1 = require("lodash");
11
+ const pg_1 = require("pg");
12
+ /**
13
+ * Create a testing runtime. Warn: this function will drop the existing system DB and create a clean new one. Don't run tests against your production database!
14
+ */
15
+ async function createTestingRuntime(userClasses, configFilePath = config_1.dbosConfigFilePath) {
16
+ const [dbosConfig] = (0, config_1.parseConfigFile)({ configfile: configFilePath });
17
+ // Drop system database. Testing runtime always uses Postgres for local testing.
18
+ const pgSystemClient = new pg_1.Client({
19
+ user: dbosConfig.poolConfig.user,
20
+ port: dbosConfig.poolConfig.port,
21
+ host: dbosConfig.poolConfig.host,
22
+ password: dbosConfig.poolConfig.password,
23
+ database: dbosConfig.poolConfig.database,
24
+ });
25
+ await pgSystemClient.connect();
26
+ await pgSystemClient.query(`DROP DATABASE IF EXISTS ${dbosConfig.system_database};`);
27
+ await pgSystemClient.end();
28
+ const otr = createInternalTestRuntime(userClasses, dbosConfig, undefined);
29
+ return otr;
30
+ }
31
+ exports.createTestingRuntime = createTestingRuntime;
32
+ /**
33
+ * For internal unit tests which allows us to provide different system DB and control its behavior.
34
+ */
35
+ async function createInternalTestRuntime(userClasses, testConfig, systemDB) {
36
+ const otr = new TestingRuntimeImpl();
37
+ await otr.init(userClasses, testConfig, systemDB);
38
+ return otr;
39
+ }
40
+ exports.createInternalTestRuntime = createInternalTestRuntime;
41
+ /**
42
+ * This class provides a runtime to test Opeorn functions in unit tests.
43
+ */
44
+ class TestingRuntimeImpl {
45
+ #server = null;
46
+ #applicationConfig = undefined;
47
+ /**
48
+ * Initialize the testing runtime by loading user functions specified in classes and using the specified config.
49
+ * This should be the first function call before any subsequent calls.
50
+ */
51
+ async init(userClasses, testConfig, systemDB) {
52
+ const dbosConfig = testConfig ? [testConfig] : (0, config_1.parseConfigFile)();
53
+ const dbosExec = new dbos_executor_1.DBOSExecutor(dbosConfig[0], systemDB);
54
+ await dbosExec.init(...userClasses);
55
+ this.#server = new server_1.DBOSHttpServer(dbosExec);
56
+ this.#applicationConfig = dbosExec.config.application;
57
+ }
58
+ /**
59
+ * Release resources after tests.
60
+ */
61
+ async destroy() {
62
+ await this.#server?.dbosExec.destroy();
63
+ }
64
+ getConfig(key, defaultValue) {
65
+ if (!this.#applicationConfig || !(0, lodash_1.has)(this.#applicationConfig, key)) {
66
+ if (defaultValue) {
67
+ return defaultValue;
68
+ }
69
+ return undefined;
70
+ }
71
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
72
+ const value = (0, lodash_1.get)(this.#applicationConfig, key);
73
+ if (defaultValue && typeof value !== typeof defaultValue) {
74
+ throw new error_1.DBOSConfigKeyTypeError(key, typeof defaultValue, typeof value);
75
+ }
76
+ return value;
77
+ }
78
+ /**
79
+ * Generate a proxy object for the provided class that wraps direct calls (i.e. OpClass.someMethod(param))
80
+ * to invoke workflows, transactions, and communicators;
81
+ */
82
+ invoke(object, workflowUUID, params) {
83
+ const dbosExec = this.getDBOSExec();
84
+ const ops = (0, decorators_1.getRegisteredOperations)(object);
85
+ const proxy = {};
86
+ // Creates a context to pass in necessary info.
87
+ const span = dbosExec.tracer.startSpan("test");
88
+ const oc = new context_1.DBOSContextImpl("test", span, dbosExec.logger);
89
+ oc.authenticatedUser = params?.authenticatedUser ?? "";
90
+ oc.request = params?.request ?? {};
91
+ oc.authenticatedRoles = params?.authenticatedRoles ?? [];
92
+ const wfParams = { workflowUUID: workflowUUID, parentCtx: oc };
93
+ for (const op of ops) {
94
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
95
+ proxy[op.name] = op.txnConfig
96
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
97
+ ? (...args) => dbosExec.transaction(op.registeredFunction, wfParams, ...args)
98
+ : op.workflowConfig
99
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
100
+ ? (...args) => dbosExec.workflow(op.registeredFunction, wfParams, ...args)
101
+ : op.commConfig
102
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
103
+ ? (...args) => dbosExec.external(op.registeredFunction, wfParams, ...args)
104
+ : undefined;
105
+ }
106
+ return proxy;
107
+ }
108
+ /**
109
+ * Return a request handler callback for node's native http/http2 server, which includes all registered HTTP endpoints.
110
+ */
111
+ getHandlersCallback() {
112
+ if (!this.#server) {
113
+ throw new error_1.DBOSError("Uninitialized testing runtime! Did you forget to call init() first?");
114
+ }
115
+ return this.#server.app.callback();
116
+ }
117
+ async send(destinationUUID, message, topic, idempotencyKey) {
118
+ return this.getDBOSExec().send(destinationUUID, message, topic, idempotencyKey);
119
+ }
120
+ async getEvent(workflowUUID, key, timeoutSeconds = dbos_executor_1.DBOSExecutor.defaultNotificationTimeoutSec) {
121
+ return this.getDBOSExec().getEvent(workflowUUID, key, timeoutSeconds);
122
+ }
123
+ retrieveWorkflow(workflowUUID) {
124
+ return this.getDBOSExec().retrieveWorkflow(workflowUUID);
125
+ }
126
+ async queryUserDB(sql, ...params) {
127
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
128
+ return this.getDBOSExec().userDatabase.query(sql, ...params);
129
+ }
130
+ async createUserSchema() {
131
+ return this.getDBOSExec().userDatabase.createSchema();
132
+ }
133
+ dropUserSchema() {
134
+ return this.getDBOSExec().userDatabase.dropSchema();
135
+ }
136
+ /**
137
+ * For internal tests use only -- return the workflow executor object.
138
+ */
139
+ getDBOSExec() {
140
+ if (!this.#server) {
141
+ throw new error_1.DBOSError("Uninitialized testing runtime! Did you forget to call init() first?");
142
+ }
143
+ return this.#server.dbosExec;
144
+ }
145
+ }
146
+ exports.TestingRuntimeImpl = TestingRuntimeImpl;
147
+ //# sourceMappingURL=testing_runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing_runtime.js","sourceRoot":"","sources":["../../../src/testing/testing_runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { UserDatabaseName, UserDatabaseClient } from "./user_database";
2
+ import { WorkflowContextImpl } from "./workflow";
3
+ import { Span } from "@opentelemetry/sdk-trace-base";
4
+ import { DBOSContext, DBOSContextImpl } from "./context";
5
+ import { ValuesOf } from "./utils";
6
+ import { WinstonLogger as Logger } from "./telemetry/logs";
7
+ export type Transaction<T extends any[], R> = (ctxt: TransactionContext<any>, ...args: T) => Promise<R>;
8
+ export interface TransactionConfig {
9
+ isolationLevel?: IsolationLevel;
10
+ readOnly?: boolean;
11
+ }
12
+ export declare const IsolationLevel: {
13
+ readonly ReadUncommitted: "READ UNCOMMITTED";
14
+ readonly ReadCommitted: "READ COMMITTED";
15
+ readonly RepeatableRead: "REPEATABLE READ";
16
+ readonly Serializable: "SERIALIZABLE";
17
+ };
18
+ export type IsolationLevel = ValuesOf<typeof IsolationLevel>;
19
+ export interface TransactionContext<T extends UserDatabaseClient> extends DBOSContext {
20
+ readonly client: T;
21
+ }
22
+ export declare class TransactionContextImpl<T extends UserDatabaseClient> extends DBOSContextImpl implements TransactionContext<T> {
23
+ readonly clientKind: UserDatabaseName;
24
+ readonly client: T;
25
+ readonly functionID: number;
26
+ constructor(clientKind: UserDatabaseName, client: T, workflowContext: WorkflowContextImpl, span: Span, logger: Logger, functionID: number, operationName: string);
27
+ }
28
+ //# sourceMappingURL=transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../src/transaction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,aAAa,IAAI,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAG3D,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAExG,MAAM,WAAW,iBAAiB;IAChC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,cAAc;;;;;CAKjB,CAAC;AACX,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,cAAc,CAAC,CAAC;AAE7D,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,kBAAkB,CAAE,SAAQ,WAAW;IACnF,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;CACpB;AAED,qBAAa,sBAAsB,CAAC,CAAC,SAAS,kBAAkB,CAAE,SAAQ,eAAgB,YAAW,kBAAkB,CAAC,CAAC,CAAC;IAEtH,QAAQ,CAAC,UAAU,EAAE,gBAAgB;IACrC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAIlB,QAAQ,CAAC,UAAU,EAAE,MAAM;gBALlB,UAAU,EAAE,gBAAgB,EAC5B,MAAM,EAAE,CAAC,EAClB,eAAe,EAAE,mBAAmB,EACpC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACL,UAAU,EAAE,MAAM,EAC3B,aAAa,EAAE,MAAM;CAQxB"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TransactionContextImpl = exports.IsolationLevel = void 0;
4
+ const context_1 = require("./context");
5
+ exports.IsolationLevel = {
6
+ ReadUncommitted: "READ UNCOMMITTED",
7
+ ReadCommitted: "READ COMMITTED",
8
+ RepeatableRead: "REPEATABLE READ",
9
+ Serializable: "SERIALIZABLE",
10
+ };
11
+ class TransactionContextImpl extends context_1.DBOSContextImpl {
12
+ clientKind;
13
+ client;
14
+ functionID;
15
+ constructor(clientKind, client, workflowContext, span, logger, functionID, operationName) {
16
+ super(operationName, span, logger, workflowContext);
17
+ this.clientKind = clientKind;
18
+ this.client = client;
19
+ this.functionID = functionID;
20
+ if (workflowContext.applicationConfig) {
21
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
22
+ this.applicationConfig = workflowContext.applicationConfig;
23
+ }
24
+ }
25
+ }
26
+ exports.TransactionContextImpl = TransactionContextImpl;
27
+ //# sourceMappingURL=transaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../src/transaction.ts"],"names":[],"mappings":";;;AAIA,uCAAyD;AAY5C,QAAA,cAAc,GAAG;IAC5B,eAAe,EAAE,kBAAkB;IACnC,aAAa,EAAE,gBAAgB;IAC/B,cAAc,EAAE,iBAAiB;IACjC,YAAY,EAAE,cAAc;CACpB,CAAC;AAOX,MAAa,sBAAqD,SAAQ,yBAAe;IAE5E;IACA;IAIA;IANX,YACW,UAA4B,EAC5B,MAAS,EAClB,eAAoC,EACpC,IAAU,EACV,MAAc,EACL,UAAkB,EAC3B,aAAqB;QAErB,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;QAR3C,eAAU,GAAV,UAAU,CAAkB;QAC5B,WAAM,GAAN,MAAM,CAAG;QAIT,eAAU,GAAV,UAAU,CAAQ;QAI3B,IAAI,eAAe,CAAC,iBAAiB,EAAE;YACrC,mEAAmE;YACnE,IAAI,CAAC,iBAAiB,GAAG,eAAe,CAAC,iBAAiB,CAAC;SAC5D;IACH,CAAC;CACF;AAhBD,wDAgBC"}
@@ -0,0 +1,132 @@
1
+ import { Pool, PoolConfig, PoolClient } from "pg";
2
+ import { IsolationLevel, TransactionConfig } from "./transaction";
3
+ import { ValuesOf } from "./utils";
4
+ import { Knex } from "knex";
5
+ export interface UserDatabase {
6
+ init(): Promise<void>;
7
+ destroy(): Promise<void>;
8
+ getName(): UserDatabaseName;
9
+ transaction<R, T extends unknown[]>(transactionFunction: UserDatabaseTransaction<R, T>, config: TransactionConfig, ...args: T): Promise<R>;
10
+ queryFunction<C extends UserDatabaseClient, R, T extends unknown[]>(queryFunction: UserDatabaseQuery<C, R, T>, ...params: T): Promise<R>;
11
+ query<R, T extends unknown[]>(sql: string, ...params: T): Promise<R[]>;
12
+ queryWithClient<R, T extends unknown[] = unknown[]>(client: UserDatabaseClient, sql: string, ...params: T): Promise<R[]>;
13
+ isRetriableTransactionError(error: unknown): boolean;
14
+ isKeyConflictError(error: unknown): boolean;
15
+ createSchema(): Promise<void>;
16
+ dropSchema(): Promise<void>;
17
+ }
18
+ type UserDatabaseQuery<C extends UserDatabaseClient, R, T extends unknown[]> = (ctxt: C, ...args: T) => Promise<R>;
19
+ type UserDatabaseTransaction<R, T extends unknown[]> = (ctxt: UserDatabaseClient, ...args: T) => Promise<R>;
20
+ export type UserDatabaseClient = PoolClient | PrismaClient | TypeORMEntityManager | Knex;
21
+ export declare const UserDatabaseName: {
22
+ readonly PGNODE: "pg-node";
23
+ readonly PRISMA: "prisma";
24
+ readonly TYPEORM: "typeorm";
25
+ readonly KNEX: "knex";
26
+ };
27
+ export type UserDatabaseName = ValuesOf<typeof UserDatabaseName>;
28
+ /**
29
+ * node-postgres user data access interface
30
+ */
31
+ export declare class PGNodeUserDatabase implements UserDatabase {
32
+ readonly poolConfig: PoolConfig;
33
+ readonly pool: Pool;
34
+ constructor(poolConfig: PoolConfig);
35
+ init(): Promise<void>;
36
+ destroy(): Promise<void>;
37
+ getName(): "pg-node";
38
+ transaction<R, T extends unknown[]>(txn: UserDatabaseTransaction<R, T>, config: TransactionConfig, ...args: T): Promise<R>;
39
+ queryFunction<C extends UserDatabaseClient, R, T extends unknown[]>(func: UserDatabaseQuery<C, R, T>, ...args: T): Promise<R>;
40
+ query<R, T extends unknown[]>(sql: string, ...params: T): Promise<R[]>;
41
+ queryWithClient<R, T extends unknown[]>(client: UserDatabaseClient, sql: string, ...params: T): Promise<R[]>;
42
+ getPostgresErrorCode(error: unknown): string | null;
43
+ isRetriableTransactionError(error: unknown): boolean;
44
+ isKeyConflictError(error: unknown): boolean;
45
+ createSchema(): Promise<void>;
46
+ dropSchema(): Promise<void>;
47
+ }
48
+ /**
49
+ * Prisma user data access interface
50
+ */
51
+ export interface PrismaClient {
52
+ $queryRawUnsafe<R, T extends unknown[]>(query: string, ...params: T): Promise<R[]>;
53
+ $transaction<R>(fn: (prisma: unknown) => Promise<R>, options?: {
54
+ maxWait?: number;
55
+ timeout?: number;
56
+ isolationLevel?: unknown;
57
+ }): Promise<R>;
58
+ $disconnect(): Promise<void>;
59
+ }
60
+ export declare class PrismaUserDatabase implements UserDatabase {
61
+ readonly prisma: PrismaClient;
62
+ constructor(prisma: PrismaClient);
63
+ init(): Promise<void>;
64
+ destroy(): Promise<void>;
65
+ getName(): "prisma";
66
+ transaction<R, T extends unknown[]>(transaction: UserDatabaseTransaction<R, T>, config: TransactionConfig, ...args: T): Promise<R>;
67
+ queryFunction<C extends UserDatabaseClient, R, T extends unknown[]>(func: UserDatabaseQuery<C, R, T>, ...args: T): Promise<R>;
68
+ query<R, T extends unknown[]>(sql: string, ...params: T): Promise<R[]>;
69
+ queryWithClient<R, T extends unknown[]>(client: UserDatabaseClient, sql: string, ...params: T): Promise<R[]>;
70
+ getPostgresErrorCode(error: unknown): string | null;
71
+ isRetriableTransactionError(error: unknown): boolean;
72
+ isKeyConflictError(error: unknown): boolean;
73
+ createSchema(): Promise<void>;
74
+ dropSchema(): Promise<void>;
75
+ }
76
+ export interface TypeORMDataSource {
77
+ readonly isInitialized: boolean;
78
+ readonly manager: TypeORMEntityManager;
79
+ initialize(): Promise<this>;
80
+ query<R = unknown>(query: string): Promise<R>;
81
+ destroy(): Promise<void>;
82
+ synchronize(): Promise<void>;
83
+ dropDatabase(): Promise<void>;
84
+ }
85
+ export interface TypeORMEntityManager {
86
+ query<R, T extends unknown[]>(query: string, parameters?: T): Promise<R>;
87
+ transaction<R>(isolationLevel: IsolationLevel, runinTransaction: (entityManager: TypeORMEntityManager) => Promise<R>): Promise<R>;
88
+ }
89
+ export interface QueryFailedError<T> {
90
+ driverError: T;
91
+ }
92
+ /**
93
+ * TypeORM user data access interface
94
+ */
95
+ export declare class TypeORMDatabase implements UserDatabase {
96
+ readonly ds: TypeORMDataSource;
97
+ readonly dataSource: TypeORMDataSource;
98
+ constructor(ds: TypeORMDataSource);
99
+ init(): Promise<void>;
100
+ destroy(): Promise<void>;
101
+ getName(): "typeorm";
102
+ transaction<R, T extends unknown[]>(txn: UserDatabaseTransaction<R, T>, config: TransactionConfig, ...args: T): Promise<R>;
103
+ queryFunction<C extends UserDatabaseClient, R, T extends unknown[]>(func: UserDatabaseQuery<C, R, T>, ...args: T): Promise<R>;
104
+ query<R>(sql: string, ...params: unknown[]): Promise<R[]>;
105
+ queryWithClient<R, T extends unknown[]>(client: UserDatabaseClient, sql: string, ...params: T): Promise<R[]>;
106
+ getPostgresErrorCode(error: unknown): string | null;
107
+ isRetriableTransactionError(error: unknown): boolean;
108
+ isKeyConflictError(error: unknown): boolean;
109
+ createSchema(): Promise<void>;
110
+ dropSchema(): Promise<void>;
111
+ }
112
+ /**
113
+ * Knex user data access interface
114
+ */
115
+ export declare class KnexUserDatabase implements UserDatabase {
116
+ readonly knex: Knex;
117
+ constructor(knex: Knex);
118
+ init(): Promise<void>;
119
+ destroy(): Promise<void>;
120
+ getName(): "knex";
121
+ transaction<R, T extends unknown[]>(transactionFunction: UserDatabaseTransaction<R, T>, config: TransactionConfig, ...args: T): Promise<R>;
122
+ queryFunction<C extends UserDatabaseClient, R, T extends unknown[]>(func: UserDatabaseQuery<C, R, T>, ...args: T): Promise<R>;
123
+ query<R, T extends unknown[]>(sql: string, ...params: T): Promise<R[]>;
124
+ queryWithClient<R, T extends unknown[]>(client: Knex, sql: string, ...uparams: T): Promise<R[]>;
125
+ getPostgresErrorCode(error: unknown): string | null;
126
+ isRetriableTransactionError(error: unknown): boolean;
127
+ isKeyConflictError(error: unknown): boolean;
128
+ createSchema(): Promise<void>;
129
+ dropSchema(): Promise<void>;
130
+ }
131
+ export {};
132
+ //# sourceMappingURL=user_database.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user_database.d.ts","sourceRoot":"","sources":["../../src/user_database.ts"],"names":[],"mappings":"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"}