@dbos-inc/dbos-sdk 0.7.18-preview

Sign up to get free protection for your applications and to get access to all the features.
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,52 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const config_1 = require("./config");
8
+ const runtime_1 = require("./runtime");
9
+ const commander_1 = require("commander");
10
+ const init_1 = require("./init");
11
+ const openApi_1 = require("./openApi");
12
+ const yaml_1 = __importDefault(require("yaml"));
13
+ const promises_1 = __importDefault(require("node:fs/promises"));
14
+ const node_path_1 = __importDefault(require("node:path"));
15
+ const program = new commander_1.Command();
16
+ program
17
+ .command("openapi")
18
+ .argument('<entrypoint>', 'Specify the entrypoint file path')
19
+ .action(async (entrypoint) => {
20
+ const openapi = await (0, openApi_1.generateOpenApi)(entrypoint);
21
+ if (openapi) {
22
+ const filename = node_path_1.default.join(node_path_1.default.dirname(entrypoint), "openapi.yaml");
23
+ const yaml = `# OpenApi specification generated for application\n\n` + yaml_1.default.stringify(openapi, { aliasDuplicateObjects: false });
24
+ await promises_1.default.writeFile(filename, yaml, { encoding: 'utf-8' });
25
+ }
26
+ });
27
+ program
28
+ .command('start')
29
+ .description('Start the server')
30
+ .option('-p, --port <number>', 'Specify the port number')
31
+ .option('-l, --loglevel <string>', 'Specify log level')
32
+ .option('-c, --configfile <string>', 'Specify the config file path', config_1.dbosConfigFilePath)
33
+ .option('-e, --entrypoint <string>', 'Specify the entrypoint file path')
34
+ .action(async (options) => {
35
+ const [dbosConfig, runtimeConfig] = (0, config_1.parseConfigFile)(options);
36
+ const runtime = new runtime_1.DBOSRuntime(dbosConfig, runtimeConfig);
37
+ await runtime.init();
38
+ runtime.startServer();
39
+ });
40
+ program
41
+ .command('init')
42
+ .description('Init a DBOS application')
43
+ .option('-n, --appName <application-name>', 'Application name', 'dbos-hello-app')
44
+ .action(async (options) => {
45
+ await (0, init_1.init)(options.appName);
46
+ });
47
+ program.parse(process.argv);
48
+ // If no arguments provided, display help by default
49
+ if (!process.argv.slice(2).length) {
50
+ program.outputHelp();
51
+ }
52
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/dbos-runtime/cli.ts"],"names":[],"mappings":";;;;;;AAEA,qCAA+D;AAC/D,uCAA2D;AAC3D,yCAAoC;AAEpC,iCAA8B;AAC9B,uCAA4C;AAC5C,gDAAwB;AACxB,gEAAkC;AAClC,0DAA6B;AAE7B,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAa9B,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,QAAQ,CAAC,cAAc,EAAE,kCAAkC,CAAC;KAC5D,MAAM,CAAC,KAAK,EAAE,UAAkB,EAAE,EAAE;IACnC,MAAM,OAAO,GAAG,MAAM,IAAA,yBAAe,EAAC,UAAU,CAAC,CAAC;IAClD,IAAI,OAAO,EAAE;QACX,MAAM,QAAQ,GAAG,mBAAI,CAAC,IAAI,CAAC,mBAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,cAAc,CAAC,CAAC;QACrE,MAAM,IAAI,GAAG,uDAAuD,GAAG,cAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC,CAAC;QACjI,MAAM,kBAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;KAC3D;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,kBAAkB,CAAC;KAC/B,MAAM,CAAC,qBAAqB,EAAE,yBAAyB,CAAC;KACxD,MAAM,CAAC,yBAAyB,EAAE,mBAAmB,CAAC;KACtD,MAAM,CAAC,2BAA2B,EAAE,8BAA8B,EAAE,2BAAkB,CAAC;KACvF,MAAM,CAAC,2BAA2B,EAAE,kCAAkC,CAAC;KACvE,MAAM,CAAC,KAAK,EAAE,OAA4B,EAAE,EAAE;IAC7C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAoC,IAAA,wBAAe,EAAC,OAAO,CAAC,CAAC;IAC9F,MAAM,OAAO,GAAG,IAAI,qBAAW,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IAC3D,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IACrB,OAAO,CAAC,WAAW,EAAE,CAAC;AACxB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,yBAAyB,CAAC;KACtC,MAAM,CAAC,kCAAkC,EAAE,kBAAkB,EAAE,gBAAgB,CAAC;KAChF,MAAM,CAAC,KAAK,EAAE,OAA4B,EAAE,EAAE;IAC7C,MAAM,IAAA,WAAI,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B,oDAAoD;AACpD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;IACjC,OAAO,CAAC,UAAU,EAAE,CAAC;CACtB"}
@@ -0,0 +1,28 @@
1
+ import { DBOSConfig } from "../dbos-executor";
2
+ import { DBOSRuntimeConfig } from "./runtime";
3
+ import { UserDatabaseName } from "../user_database";
4
+ import { DBOSCLIStartOptions } from "./cli";
5
+ import { TelemetryConfig } from "../telemetry";
6
+ export declare const dbosConfigFilePath = "dbos-config.yaml";
7
+ export interface ConfigFile {
8
+ version: string;
9
+ database: {
10
+ hostname: string;
11
+ port: number;
12
+ username: string;
13
+ password?: string;
14
+ connectionTimeoutMillis: number;
15
+ user_database: string;
16
+ system_database: string;
17
+ ssl_ca?: string;
18
+ observability_database: string;
19
+ user_dbclient?: UserDatabaseName;
20
+ };
21
+ telemetry?: TelemetryConfig;
22
+ application: any;
23
+ runtimeConfig?: DBOSRuntimeConfig;
24
+ dbClientMetadata?: any;
25
+ }
26
+ export declare function loadConfigFile(configFilePath: string): ConfigFile | undefined;
27
+ export declare function parseConfigFile(cliOptions?: DBOSCLIStartOptions): [DBOSConfig, DBOSRuntimeConfig];
28
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/dbos-runtime/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAG/C,eAAO,MAAM,kBAAkB,qBAAqB,CAAC;AAErD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,uBAAuB,EAAE,MAAM,CAAC;QAChC,aAAa,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE,MAAM,CAAC;QACxB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,sBAAsB,EAAE,MAAM,CAAC;QAE/B,aAAa,CAAC,EAAE,gBAAgB,CAAC;KAClC,CAAC;IACF,SAAS,CAAC,EAAE,eAAe,CAAC;IAE5B,WAAW,EAAE,GAAG,CAAC;IACjB,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAElC,gBAAgB,CAAC,EAAE,GAAG,CAAC;CACxB;AAcD,wBAAgB,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAa7E;AAMD,wBAAgB,eAAe,CAAC,UAAU,CAAC,EAAE,mBAAmB,GAAG,CAAC,UAAU,EAAE,iBAAiB,CAAC,CA0EjG"}
@@ -0,0 +1,111 @@
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.parseConfigFile = exports.loadConfigFile = exports.dbosConfigFilePath = void 0;
7
+ const error_1 = require("../error");
8
+ const utils_1 = require("../utils");
9
+ const yaml_1 = __importDefault(require("yaml"));
10
+ const user_database_1 = require("../user_database");
11
+ const applicationVersion_1 = require("./applicationVersion");
12
+ exports.dbosConfigFilePath = "dbos-config.yaml";
13
+ /*
14
+ * Substitute environment variables using a regex for matching.
15
+ * Will find anything in curly braces.
16
+ * TODO: Use a more robust solution.
17
+ */
18
+ function substituteEnvVars(content) {
19
+ const regex = /\${([^}]+)}/g; // Regex to match ${VAR_NAME} style placeholders
20
+ return content.replace(regex, (_, g1) => {
21
+ return process.env[g1] || ""; // If the env variable is not set, return an empty string.
22
+ });
23
+ }
24
+ function loadConfigFile(configFilePath) {
25
+ let configFile;
26
+ try {
27
+ const configFileContent = (0, utils_1.readFileSync)(configFilePath);
28
+ const interpolatedConfig = substituteEnvVars(configFileContent);
29
+ configFile = yaml_1.default.parse(interpolatedConfig);
30
+ }
31
+ catch (e) {
32
+ if (e instanceof Error) {
33
+ throw new error_1.DBOSInitializationError(`Failed to load config from ${configFilePath}: ${e.message}`);
34
+ }
35
+ }
36
+ return configFile;
37
+ }
38
+ exports.loadConfigFile = loadConfigFile;
39
+ /*
40
+ * Parse `dbosConfigFilePath` and return DBOSConfig and DBOSRuntimeConfig
41
+ * Considers DBOSCLIStartOptions if provided, which takes precedence over config file
42
+ * */
43
+ function parseConfigFile(cliOptions) {
44
+ const configFilePath = cliOptions?.configfile ?? exports.dbosConfigFilePath;
45
+ const configFile = loadConfigFile(configFilePath);
46
+ if (!configFile) {
47
+ throw new error_1.DBOSInitializationError(`DBOS configuration file ${configFilePath} is empty`);
48
+ }
49
+ (0, applicationVersion_1.setApplicationVersion)(configFile.version);
50
+ /*******************************/
51
+ /* Handle user database config */
52
+ /*******************************/
53
+ if (!configFile.database) {
54
+ throw new error_1.DBOSInitializationError(`DBOS configuration ${configFilePath} does not contain database config`);
55
+ }
56
+ const poolConfig = {
57
+ host: configFile.database.hostname,
58
+ port: configFile.database.port,
59
+ user: configFile.database.username,
60
+ password: configFile.database.password,
61
+ connectionTimeoutMillis: configFile.database.connectionTimeoutMillis || 3000,
62
+ database: configFile.database.user_database,
63
+ };
64
+ if (!poolConfig.password) {
65
+ throw new error_1.DBOSInitializationError(`DBOS configuration ${configFilePath} does not contain database password`);
66
+ }
67
+ if (configFile.database.ssl_ca) {
68
+ poolConfig.ssl = { ca: [(0, utils_1.readFileSync)(configFile.database.ssl_ca)], rejectUnauthorized: true };
69
+ }
70
+ /***************************/
71
+ /* Handle telemetry config */
72
+ /***************************/
73
+ // Consider CLI --loglevel flag. A bit verbose because everything is optional.
74
+ if (cliOptions?.loglevel) {
75
+ if (!configFile.telemetry) {
76
+ configFile.telemetry = { logs: { logLevel: cliOptions.loglevel } };
77
+ }
78
+ else if (!configFile.telemetry.logs) {
79
+ configFile.telemetry.logs = { logLevel: cliOptions.loglevel };
80
+ }
81
+ else {
82
+ configFile.telemetry.logs.logLevel = cliOptions.loglevel;
83
+ }
84
+ }
85
+ /************************************/
86
+ /* Build final DBOS configuration */
87
+ /************************************/
88
+ const dbosConfig = {
89
+ poolConfig: poolConfig,
90
+ userDbclient: configFile.database.user_dbclient || user_database_1.UserDatabaseName.KNEX,
91
+ telemetry: configFile.telemetry || undefined,
92
+ system_database: configFile.database.system_database ?? "dbos_systemdb",
93
+ observability_database: configFile.database.observability_database || undefined,
94
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
95
+ application: configFile.application || undefined,
96
+ dbClientMetadata: {
97
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
98
+ entities: configFile.dbClientMetadata?.entities,
99
+ },
100
+ };
101
+ /*************************************/
102
+ /* Build final runtime Configuration */
103
+ /*************************************/
104
+ const runtimeConfig = {
105
+ entrypoint: cliOptions?.entrypoint || configFile.runtimeConfig?.entrypoint || "dist/operations.js",
106
+ port: cliOptions?.port || configFile.runtimeConfig?.port || 3000,
107
+ };
108
+ return [dbosConfig, runtimeConfig];
109
+ }
110
+ exports.parseConfigFile = parseConfigFile;
111
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/dbos-runtime/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ interface CopyOption {
2
+ rename?: (basename: string) => string;
3
+ }
4
+ export declare const copy: (src: string, targets: string[], dest: string, { rename }?: CopyOption) => Promise<void[]>;
5
+ export declare function init(appName: string): Promise<void>;
6
+ export {};
7
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/dbos-runtime/init.ts"],"names":[],"mappings":"AAMA,UAAU,UAAU;IAClB,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAA;CACtC;AAID,eAAO,MAAM,IAAI,QACV,MAAM,WACF,MAAM,EAAE,QACX,MAAM,eACW,UAAU,oBA6BlC,CAAA;AAED,wBAAsB,IAAI,CAAC,OAAO,EAAE,MAAM,iBAiBzC"}
@@ -0,0 +1,51 @@
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.init = exports.copy = void 0;
7
+ const fast_glob_1 = require("fast-glob");
8
+ const path_1 = __importDefault(require("path"));
9
+ const fs_1 = __importDefault(require("fs"));
10
+ const child_process_1 = require("child_process");
11
+ const error_1 = require("../error");
12
+ const identity = (x) => x;
13
+ const copy = async (src, targets, dest, { rename = identity } = {}) => {
14
+ if (targets.length === 0 || !dest) {
15
+ throw new TypeError('`src` and `dest` are required');
16
+ }
17
+ const sourceFiles = await (0, fast_glob_1.async)(targets, {
18
+ cwd: src,
19
+ dot: true,
20
+ absolute: false,
21
+ stats: false,
22
+ ignore: ['**/node_modules/**', '**/dist/**']
23
+ });
24
+ return Promise.all(sourceFiles.map(async (p) => {
25
+ const dirname = path_1.default.dirname(p);
26
+ const basename = rename(path_1.default.basename(p));
27
+ const from = path_1.default.resolve(src, p);
28
+ const to = path_1.default.join(dest, dirname, basename);
29
+ // Ensure the destination directory exists
30
+ await fs_1.default.promises.mkdir(path_1.default.dirname(to), { recursive: true });
31
+ return fs_1.default.promises.copyFile(from, to);
32
+ }));
33
+ };
34
+ exports.copy = copy;
35
+ async function init(appName) {
36
+ if (fs_1.default.existsSync(appName)) {
37
+ throw new error_1.DBOSError(`Directory ${appName} already exists, exiting...`);
38
+ }
39
+ const templatePath = path_1.default.resolve(__dirname, '..', '..', '..', 'examples', 'hello');
40
+ const targets = ["**"];
41
+ await (0, exports.copy)(templatePath, targets, appName);
42
+ const packageJsonName = path_1.default.resolve(appName, 'package.json');
43
+ const content = fs_1.default.readFileSync(packageJsonName, 'utf-8');
44
+ let updatedContent = content.replace('"name": "dbos-hello"', `"name": "${appName}"`);
45
+ updatedContent = updatedContent.replace('"@dbos-inc/dbos-sdk": "../..",', ``);
46
+ fs_1.default.writeFileSync(packageJsonName, updatedContent, 'utf-8');
47
+ (0, child_process_1.execSync)("npm i", { cwd: appName, stdio: 'inherit' });
48
+ (0, child_process_1.execSync)("npm install --save @dbos-inc/dbos-sdk", { cwd: appName, stdio: 'inherit' });
49
+ }
50
+ exports.init = init;
51
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/dbos-runtime/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import ts from 'typescript';
2
+ import { DecoratorInfo, MethodInfo, ClassInfo, ParameterInfo } from './TypeParser';
3
+ import { APITypes, ArgSources } from '../httpServer/handler';
4
+ import { Schema } from 'ts-json-schema-generator';
5
+ import { OpenAPIV3 as OpenApi3 } from 'openapi-types';
6
+ interface HttpEndpointInfo {
7
+ verb: APITypes;
8
+ path: string;
9
+ }
10
+ export declare class OpenApiGenerator {
11
+ #private;
12
+ readonly program: ts.Program;
13
+ get diags(): readonly ts.Diagnostic[];
14
+ constructor(program: ts.Program);
15
+ generate(classes: readonly ClassInfo[], title: string, version: string): OpenApi3.Document | undefined;
16
+ generatePath(method: MethodInfo, { verb, path }: HttpEndpointInfo, defaultRoles: readonly string[], securityScheme: string | undefined): [string, OpenApi3.PathItemObject] | undefined;
17
+ getMethodReturnType(node: ts.MethodDeclaration): ts.Type | undefined;
18
+ generateResponse(method: MethodInfo): [string, OpenApi3.ResponseObject] | undefined;
19
+ generateParameters(sourcedParams: [ParameterInfo, ArgSources][]): OpenApi3.ParameterObject[];
20
+ generateParameter(parameter: ParameterInfo, argSource: ArgSources): OpenApi3.ParameterObject | undefined;
21
+ getLocation(parameter: ParameterInfo, argSource: ArgSources): "query" | "path" | undefined;
22
+ generateRequestBody(sourcedParams: [ParameterInfo, ArgSources][]): OpenApi3.RequestBodyObject | undefined;
23
+ generateSchema(node?: ts.Node): OpenApi3.SchemaObject | OpenApi3.ReferenceObject | undefined;
24
+ getDBOSDecorator(decorated: MethodInfo | ParameterInfo | ClassInfo, name: string): DecoratorInfo | undefined;
25
+ getHttpInfo(method: MethodInfo): HttpEndpointInfo | undefined;
26
+ getParamSource(parameter: ParameterInfo, verb: APITypes): ArgSources.BODY | ArgSources.QUERY | ArgSources.URL | undefined;
27
+ getParamName(parameter: ParameterInfo): string | undefined;
28
+ mapSchema(schema: Schema): OpenApi3.SchemaObject | OpenApi3.ReferenceObject | undefined;
29
+ parseStringLiteralArray(node: ts.Expression | undefined): string[] | undefined;
30
+ parseSecurityScheme(arg?: ts.Expression): SecurityScheme | undefined;
31
+ }
32
+ type SecurityScheme = Exclude<OpenApi3.SecuritySchemeObject, OpenApi3.OAuth2SecurityScheme>;
33
+ export declare function generateOpenApi(entrypoint: string): Promise<OpenApi3.Document | undefined>;
34
+ export {};
35
+ //# sourceMappingURL=openApi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openApi.d.ts","sourceRoot":"","sources":["../../../src/dbos-runtime/openApi.ts"],"names":[],"mappings":"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"}