@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
package/cli.ts ADDED
@@ -0,0 +1,177 @@
1
+ #!/usr/bin/env node
2
+
3
+ import {
4
+ registerApp,
5
+ updateApp,
6
+ listApps,
7
+ deleteApp,
8
+ deployAppCode,
9
+ getAppLogs,
10
+ } from "./applications";
11
+ import { Command } from 'commander';
12
+ import { login } from "./login";
13
+ import { registerUser } from "./register";
14
+ import { createUserDb, getUserDb, deleteUserDb, migrate, rollbackMigration } from "./userdb";
15
+ import { credentialsExist } from "./cloudutils";
16
+
17
+ const program = new Command();
18
+
19
+ const DEFAULT_HOST = process.env.DBOS_DOMAIN; // TODO: Once we have a "production" cluster, hardcode its domain name here
20
+
21
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
22
+ const packageJson = require('../../../package.json') as { version: string };
23
+ program.
24
+ version(packageJson.version);
25
+
26
+ /////////////////////
27
+ /* AUTHENTICATION */
28
+ /////////////////////
29
+
30
+ program
31
+ .command('login')
32
+ .description('Log in to DBOS cloud')
33
+ .requiredOption('-u, --username <string>', 'Username')
34
+ .action(async (options: { username: string }) => {
35
+ const exitCode = await login(options.username);
36
+ process.exit(exitCode);
37
+ });
38
+
39
+ program
40
+ .command('register')
41
+ .description('Register a user and log in to DBOS cloud')
42
+ .requiredOption('-u, --username <string>', 'Username')
43
+ .option('-h, --host <string>', 'Specify the host', DEFAULT_HOST)
44
+ .action(async (options: { username: string, host: string}) => {
45
+ if (!credentialsExist()) {
46
+ const exitCode = await login(options.username);
47
+ if (exitCode !== 0) {
48
+ process.exit(exitCode);
49
+ }
50
+ }
51
+ const exitCode = await registerUser(options.username, options.host);
52
+ process.exit(exitCode);
53
+ });
54
+
55
+ /////////////////////////////
56
+ /* APPLICATIONS MANAGEMENT */
57
+ /////////////////////////////
58
+
59
+ const applicationCommands = program
60
+ .command('applications')
61
+ .description('Manage your DBOS applications')
62
+ .option('-h, --host <string>', 'Specify the host', DEFAULT_HOST)
63
+
64
+ applicationCommands
65
+ .command('register')
66
+ .description('Register a new application')
67
+ .requiredOption('-d, --database <string>', 'Specify the app database name')
68
+ .option('-m, --machines <string>', 'Number of VMs to deploy', '1')
69
+ .action(async (options: { database: string, machines: string }) => {
70
+ const { host }: { host: string } = applicationCommands.opts()
71
+ const exitCode = await registerApp(options.database, host, parseInt(options.machines));
72
+ process.exit(exitCode);
73
+ });
74
+
75
+ applicationCommands
76
+ .command('update')
77
+ .description('Update an application')
78
+ .requiredOption('-m, --machines <string>', 'Number of VMs to deploy')
79
+ .action(async (options: { machines: string }) => {
80
+ const { host }: { host: string } = applicationCommands.opts()
81
+ const exitCode = await updateApp(host, parseInt(options.machines));
82
+ process.exit(exitCode);
83
+ });
84
+
85
+ applicationCommands
86
+ .command('deploy')
87
+ .description('Deploy an application code to the cloud')
88
+ .option('--no-docker', 'Build the code locally without using Docker')
89
+ .action(async (options: { docker: boolean }) => {
90
+ const { host }: { host: string } = applicationCommands.opts()
91
+ const exitCode = await deployAppCode(host, options.docker);
92
+ process.exit(exitCode);
93
+ });
94
+
95
+ applicationCommands
96
+ .command('delete')
97
+ .description('Delete a previously deployed application')
98
+ .action(async () => {
99
+ const { host }: { host: string } = applicationCommands.opts()
100
+ const exitCode = await deleteApp(host);
101
+ process.exit(exitCode);
102
+ });
103
+
104
+ applicationCommands
105
+ .command('list')
106
+ .description('List all deployed applications')
107
+ .action(async () => {
108
+ const { host }: { host: string } = applicationCommands.opts()
109
+ const exitCode = await listApps(host);
110
+ process.exit(exitCode);
111
+ });
112
+
113
+ applicationCommands
114
+ .command('logs')
115
+ .description('Print the microVM logs of a deployed application')
116
+ .action(async () => {
117
+ const { host }: { host: string } = applicationCommands.opts()
118
+ const exitCode = await getAppLogs(host);
119
+ process.exit(exitCode);
120
+ });
121
+
122
+ //////////////////////////////
123
+ /* USER DATABASE MANAGEMENT */
124
+ //////////////////////////////
125
+
126
+ const userdbCommands = program
127
+ .command('userdb')
128
+ .description('Manage your databases')
129
+ .option('-h, --host <string>', 'Specify the host', DEFAULT_HOST)
130
+
131
+ userdbCommands
132
+ .command('create')
133
+ .argument('<string>', 'database name')
134
+ .requiredOption('-a, --admin <string>', 'Specify the admin user')
135
+ .requiredOption('-W, --password <string>', 'Specify the admin password')
136
+ .option('-s, --sync', 'make synchronous call', true)
137
+ .action((async (dbname: string, options: { admin: string, password: string, sync: boolean }) => {
138
+ const { host }: { host: string } = userdbCommands.opts()
139
+ await createUserDb(host, dbname, options.admin, options.password, options.sync)
140
+ }))
141
+
142
+ userdbCommands
143
+ .command('status')
144
+ .argument('<string>', 'database name')
145
+ .action((async (dbname: string) => {
146
+ const { host }: { host: string } = userdbCommands.opts()
147
+ await getUserDb(host, dbname)
148
+ }))
149
+
150
+ userdbCommands
151
+ .command('delete')
152
+ .argument('<string>', 'database name')
153
+ .action((async (dbname: string) => {
154
+ const { host }: { host: string } = userdbCommands.opts()
155
+ await deleteUserDb(host, dbname)
156
+ }))
157
+
158
+ userdbCommands
159
+ .command('migrate')
160
+ .action((async () => {
161
+ const exitCode = await migrate();
162
+ process.exit(exitCode);
163
+ }))
164
+
165
+ userdbCommands
166
+ .command('rollbackmigration')
167
+ .action((() => {
168
+ const exitCode = rollbackMigration();
169
+ process.exit(exitCode);
170
+ }))
171
+
172
+ program.parse(process.argv);
173
+
174
+ // If no arguments provided, display help by default
175
+ if (!process.argv.slice(2).length) {
176
+ program.outputHelp();
177
+ }
@@ -0,0 +1,2 @@
1
+ export declare function deleteApp(host: string): Promise<number>;
2
+ //# sourceMappingURL=delete-app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-app.d.ts","sourceRoot":"","sources":["../../../../applications/delete-app.ts"],"names":[],"mappings":"AAKA,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA8B7D"}
@@ -0,0 +1,42 @@
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.deleteApp = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const logs_1 = require("../../../src/telemetry/logs");
9
+ const cloudutils_1 = require("../cloudutils");
10
+ const node_path_1 = __importDefault(require("node:path"));
11
+ async function deleteApp(host) {
12
+ const logger = new logs_1.GlobalLogger();
13
+ const userCredentials = (0, cloudutils_1.getCloudCredentials)();
14
+ const bearerToken = "Bearer " + userCredentials.token;
15
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
16
+ const packageJson = require(node_path_1.default.join(process.cwd(), 'package.json'));
17
+ const appName = packageJson.name;
18
+ logger.info(`Loaded application name from package.json: ${appName}`);
19
+ logger.info(`Deleting application: ${appName}`);
20
+ try {
21
+ await axios_1.default.delete(`https://${host}/${userCredentials.userName}/application/${appName}`, {
22
+ headers: {
23
+ "Content-Type": "application/json",
24
+ Authorization: bearerToken,
25
+ },
26
+ });
27
+ logger.info(`Successfully deleted application: ${appName}`);
28
+ return 0;
29
+ }
30
+ catch (e) {
31
+ if (axios_1.default.isAxiosError(e) && e.response) {
32
+ logger.error(`Failed to delete application ${appName}: ${e.response?.data}`);
33
+ return 1;
34
+ }
35
+ else {
36
+ logger.error(`Failed to delete application ${appName}: ${e.message}`);
37
+ return 1;
38
+ }
39
+ }
40
+ }
41
+ exports.deleteApp = deleteApp;
42
+ //# sourceMappingURL=delete-app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-app.js","sourceRoot":"","sources":["../../../../applications/delete-app.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,sDAA2D;AAC3D,8CAAoD;AACpD,0DAA6B;AAEtB,KAAK,UAAU,SAAS,CAAC,IAAY;IAC1C,MAAM,MAAM,GAAG,IAAI,mBAAY,EAAE,CAAC;IAClC,MAAM,eAAe,GAAG,IAAA,gCAAmB,GAAE,CAAC;IAC9C,MAAM,WAAW,GAAG,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC;IAEtD,8DAA8D;IAC9D,MAAM,WAAW,GAAG,OAAO,CAAC,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAqB,CAAC;IAC1F,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC;IACjC,MAAM,CAAC,IAAI,CAAC,8CAA8C,OAAO,EAAE,CAAC,CAAA;IACpE,MAAM,CAAC,IAAI,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAA;IAE/C,IAAI,CAAC;QACH,MAAM,eAAK,CAAC,MAAM,CAAC,WAAW,IAAI,IAAI,eAAe,CAAC,QAAQ,gBAAgB,OAAO,EAAE,EAAE;YACvF,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,WAAW;aAC3B;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,qCAAqC,OAAO,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,eAAK,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,CAAC,KAAK,CAAC,gCAAgC,OAAO,KAAK,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7E,OAAO,CAAC,CAAC;QACX,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,gCAAgC,OAAO,KAAM,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YACjF,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;AACH,CAAC;AA9BD,8BA8BC"}
@@ -0,0 +1,2 @@
1
+ export declare function deployAppCode(host: string, docker: boolean): Promise<number>;
2
+ //# sourceMappingURL=deploy-app-code.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy-app-code.d.ts","sourceRoot":"","sources":["../../../../applications/deploy-app-code.ts"],"names":[],"mappings":"AAgBA,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CA2FlF"}
@@ -0,0 +1,145 @@
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.deployAppCode = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const child_process_1 = require("child_process");
9
+ const fs_1 = require("fs");
10
+ const logs_1 = require("../../../src/telemetry/logs");
11
+ const cloudutils_1 = require("../cloudutils");
12
+ const utils_1 = require("../../../src/utils");
13
+ const path_1 = __importDefault(require("path"));
14
+ const deployDirectoryName = "dbos_deploy";
15
+ async function deployAppCode(host, docker) {
16
+ const logger = new logs_1.GlobalLogger();
17
+ const userCredentials = (0, cloudutils_1.getCloudCredentials)();
18
+ const bearerToken = "Bearer " + userCredentials.token;
19
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
20
+ const packageJson = require(path_1.default.join(process.cwd(), 'package.json'));
21
+ const appName = packageJson.name;
22
+ logger.info(`Loaded application name from package.json: ${appName}`);
23
+ (0, utils_1.createDirectory)(deployDirectoryName);
24
+ // Verify that package-lock.json exists
25
+ if (!(0, fs_1.existsSync)(path_1.default.join(process.cwd(), 'package-lock.json'))) {
26
+ logger.error("package-lock.json not found. Please run 'npm install' before deploying.");
27
+ return 1;
28
+ }
29
+ if (docker) {
30
+ // Build the application inside a Docker container using the same base image as our cloud setup
31
+ logger.info(`Building ${appName} using Docker`);
32
+ const dockerSuccess = await buildAppInDocker(appName);
33
+ if (!dockerSuccess) {
34
+ return 1;
35
+ }
36
+ }
37
+ else {
38
+ // Zip the current directory and deploy from there. Requires app to have already been built. Only for testing.
39
+ (0, child_process_1.execSync)(`zip -ry ${deployDirectoryName}/${appName}.zip ./* -x ${deployDirectoryName}/* > /dev/null`);
40
+ }
41
+ try {
42
+ const zipData = (0, utils_1.readFileSync)(`${deployDirectoryName}/${appName}.zip`, "base64");
43
+ // Submit the deploy request
44
+ logger.info(`Submitting deploy request for ${appName}`);
45
+ const response = await axios_1.default.post(`https://${host}/${userCredentials.userName}/application/${appName}`, {
46
+ application_archive: zipData,
47
+ }, {
48
+ headers: {
49
+ "Content-Type": "application/json",
50
+ Authorization: bearerToken,
51
+ },
52
+ });
53
+ const deployOutput = response.data;
54
+ logger.info(`Submitted deploy request for ${appName}. Assigned version: ${deployOutput.ApplicationVersion}`);
55
+ // Wait for the application to become available
56
+ let count = 0;
57
+ let applicationAvailable = false;
58
+ while (!applicationAvailable) {
59
+ count += 1;
60
+ if (count % 5 === 0) {
61
+ logger.info(`Waiting for ${appName} with version ${deployOutput.ApplicationVersion} to be available`);
62
+ if (count > 20) {
63
+ logger.info(`If ${appName} takes too long to become available, check its logs at...`);
64
+ }
65
+ }
66
+ // Retrieve the application status, check if it is "AVAILABLE"
67
+ const list = await axios_1.default.get(`https://${host}/${userCredentials.userName}/application`, {
68
+ headers: {
69
+ Authorization: bearerToken,
70
+ },
71
+ });
72
+ const applications = list.data;
73
+ for (const application of applications) {
74
+ if (application.Name === appName && application.Status === "AVAILABLE") {
75
+ applicationAvailable = true;
76
+ }
77
+ }
78
+ await (0, utils_1.sleep)(1000);
79
+ }
80
+ logger.info(`Application ${appName} successfuly deployed`);
81
+ logger.info(`Access your application at https://${host}/${userCredentials.userName}/application/${appName}`);
82
+ return 0;
83
+ }
84
+ catch (e) {
85
+ if (axios_1.default.isAxiosError(e) && e.response) {
86
+ logger.error(`Failed to deploy application ${appName}: ${e.response?.data}`);
87
+ return 1;
88
+ }
89
+ else {
90
+ logger.error(`Failed to deploy application ${appName}: ${e.message}`);
91
+ return 1;
92
+ }
93
+ }
94
+ }
95
+ exports.deployAppCode = deployAppCode;
96
+ async function buildAppInDocker(appName) {
97
+ const logger = new logs_1.GlobalLogger();
98
+ // Verify Docker is running
99
+ try {
100
+ (0, child_process_1.execSync)(`docker > /dev/null 2>&1`);
101
+ }
102
+ catch (e) {
103
+ logger.error("Docker not available. To deploy, please start the Docker daemon and make the `docker` command runnable without sudo.");
104
+ return false;
105
+ }
106
+ const dockerFileName = `${deployDirectoryName}/Dockerfile.dbos`;
107
+ const containerName = `dbos-builder-${appName}`;
108
+ // Dockerfile content
109
+ const dockerFileContent = `
110
+ FROM node:lts-bookworm-slim
111
+ RUN apt update
112
+ RUN apt install -y zip
113
+ WORKDIR /app
114
+ COPY . .
115
+ RUN npm clean-install
116
+ RUN npm run build
117
+ RUN npm prune --omit=dev
118
+ RUN zip -ry ${appName}.zip ./* -x "${appName}.zip" -x "${deployDirectoryName}/*" > /dev/null
119
+ `;
120
+ const dockerIgnoreContent = `
121
+ node_modules/
122
+ ${deployDirectoryName}/
123
+ dist/
124
+ `;
125
+ try {
126
+ // Write the Dockerfile and .dockerignore
127
+ (0, fs_1.writeFileSync)(dockerFileName, dockerFileContent);
128
+ (0, fs_1.writeFileSync)(`${deployDirectoryName}/Dockerfile.dbos.dockerignore`, dockerIgnoreContent);
129
+ // Build the Docker image. As build takes a long time, use runCommand to stream its output to stdout.
130
+ await (0, cloudutils_1.runCommand)('docker', ['build', '-t', appName, '-f', dockerFileName, '.']);
131
+ // Run the container
132
+ (0, child_process_1.execSync)(`docker run -d --name ${containerName} ${appName}`);
133
+ // Copy the archive from the container to the local deploy directory
134
+ (0, child_process_1.execSync)(`docker cp ${containerName}:/app/${appName}.zip ${deployDirectoryName}/${appName}.zip`);
135
+ // Stop and remove the container
136
+ (0, child_process_1.execSync)(`docker stop ${containerName}`);
137
+ (0, child_process_1.execSync)(`docker rm ${containerName}`);
138
+ return true;
139
+ }
140
+ catch (e) {
141
+ logger.error(`Failed to build application ${appName}: ${e.message}`);
142
+ return false;
143
+ }
144
+ }
145
+ //# sourceMappingURL=deploy-app-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy-app-code.js","sourceRoot":"","sources":["../../../../applications/deploy-app-code.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function getAppLogs(host: string): Promise<number>;
2
+ //# sourceMappingURL=get-app-logs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-app-logs.d.ts","sourceRoot":"","sources":["../../../../applications/get-app-logs.ts"],"names":[],"mappings":"AAKA,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA8B9D"}
@@ -0,0 +1,42 @@
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.getAppLogs = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const logs_1 = require("../../../src/telemetry/logs");
9
+ const cloudutils_1 = require("../cloudutils");
10
+ const node_path_1 = __importDefault(require("node:path"));
11
+ async function getAppLogs(host) {
12
+ const logger = new logs_1.GlobalLogger();
13
+ const userCredentials = (0, cloudutils_1.getCloudCredentials)();
14
+ const bearerToken = "Bearer " + userCredentials.token;
15
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
16
+ const packageJson = require(node_path_1.default.join(process.cwd(), 'package.json'));
17
+ const appName = packageJson.name;
18
+ logger.info(`Retrieving logs for application: ${appName}`);
19
+ try {
20
+ const res = await axios_1.default.get(`https://${host}/${userCredentials.userName}/logs/application/${appName}`, {
21
+ headers: {
22
+ "Content-Type": "application/json",
23
+ Authorization: bearerToken,
24
+ },
25
+ });
26
+ logger.info(`Successfully retrieved logs of application: ${appName}`);
27
+ logger.info(res.data);
28
+ return 0;
29
+ }
30
+ catch (e) {
31
+ if (axios_1.default.isAxiosError(e) && e.response) {
32
+ logger.error(`Failed to retrieve logs of application ${appName}: ${e.response?.data}`);
33
+ return 1;
34
+ }
35
+ else {
36
+ logger.error(`Failed to retrieve logs of application ${appName}: ${e.message}`);
37
+ return 1;
38
+ }
39
+ }
40
+ }
41
+ exports.getAppLogs = getAppLogs;
42
+ //# sourceMappingURL=get-app-logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-app-logs.js","sourceRoot":"","sources":["../../../../applications/get-app-logs.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,sDAA2D;AAC3D,8CAAoD;AACpD,0DAA6B;AAEtB,KAAK,UAAU,UAAU,CAAC,IAAY;IAC3C,MAAM,MAAM,GAAG,IAAI,mBAAY,EAAE,CAAC;IAClC,MAAM,eAAe,GAAG,IAAA,gCAAmB,GAAE,CAAC;IAC9C,MAAM,WAAW,GAAG,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC;IAEtD,8DAA8D;IAC9D,MAAM,WAAW,GAAG,OAAO,CAAC,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAqB,CAAC;IAC1F,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC;IACjC,MAAM,CAAC,IAAI,CAAC,oCAAoC,OAAO,EAAE,CAAC,CAAA;IAE1D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,eAAe,CAAC,QAAQ,qBAAqB,OAAO,EAAE,EAAE;YACrG,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,WAAW;aAC3B;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,+CAA+C,OAAO,EAAE,CAAC,CAAC;QACtE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACrB,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,eAAK,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,CAAC,KAAK,CAAC,0CAA0C,OAAO,KAAK,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YACvF,OAAO,CAAC,CAAC;QACX,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,0CAA0C,OAAO,KAAM,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3F,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;AACH,CAAC;AA9BD,gCA8BC"}
@@ -0,0 +1,7 @@
1
+ export { registerApp } from './register-app';
2
+ export { listApps } from './list-apps';
3
+ export { deleteApp } from './delete-app';
4
+ export { deployAppCode } from './deploy-app-code';
5
+ export { getAppLogs } from './get-app-logs';
6
+ export { updateApp } from './update-app';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../applications/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateApp = exports.getAppLogs = exports.deployAppCode = exports.deleteApp = exports.listApps = exports.registerApp = void 0;
4
+ var register_app_1 = require("./register-app");
5
+ Object.defineProperty(exports, "registerApp", { enumerable: true, get: function () { return register_app_1.registerApp; } });
6
+ var list_apps_1 = require("./list-apps");
7
+ Object.defineProperty(exports, "listApps", { enumerable: true, get: function () { return list_apps_1.listApps; } });
8
+ var delete_app_1 = require("./delete-app");
9
+ Object.defineProperty(exports, "deleteApp", { enumerable: true, get: function () { return delete_app_1.deleteApp; } });
10
+ var deploy_app_code_1 = require("./deploy-app-code");
11
+ Object.defineProperty(exports, "deployAppCode", { enumerable: true, get: function () { return deploy_app_code_1.deployAppCode; } });
12
+ var get_app_logs_1 = require("./get-app-logs");
13
+ Object.defineProperty(exports, "getAppLogs", { enumerable: true, get: function () { return get_app_logs_1.getAppLogs; } });
14
+ var update_app_1 = require("./update-app");
15
+ Object.defineProperty(exports, "updateApp", { enumerable: true, get: function () { return update_app_1.updateApp; } });
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../applications/index.ts"],"names":[],"mappings":";;;AAAA,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,yCAAuC;AAA9B,qGAAA,QAAQ,OAAA;AACjB,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,qDAAkD;AAAzC,gHAAA,aAAa,OAAA;AACtB,+CAA4C;AAAnC,0GAAA,UAAU,OAAA;AACnB,2CAAyC;AAAhC,uGAAA,SAAS,OAAA"}
@@ -0,0 +1,2 @@
1
+ export declare function listApps(host: string): Promise<number>;
2
+ //# sourceMappingURL=list-apps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-apps.d.ts","sourceRoot":"","sources":["../../../../applications/list-apps.ts"],"names":[],"mappings":"AAKA,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAmC5D"}
@@ -0,0 +1,45 @@
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.listApps = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const logs_1 = require("../../../src/telemetry/logs");
9
+ const cloudutils_1 = require("../cloudutils");
10
+ async function listApps(host) {
11
+ const logger = new logs_1.GlobalLogger();
12
+ const userCredentials = (0, cloudutils_1.getCloudCredentials)();
13
+ const bearerToken = "Bearer " + userCredentials.token;
14
+ try {
15
+ const list = await axios_1.default.get(`https://${host}/${userCredentials.userName}/application`, {
16
+ headers: {
17
+ Authorization: bearerToken,
18
+ },
19
+ });
20
+ const data = list.data;
21
+ if (data.length === 0) {
22
+ logger.info("No applications found");
23
+ return 1;
24
+ }
25
+ const formattedData = [];
26
+ for (const application of data) {
27
+ formattedData.push({ "Name": application.Name, "ID": application.ID, "Version": application.Version, "DatabaseName": application.DatabaseName, "MaxVMs": application.MaxVMs, "Status": application.Status });
28
+ }
29
+ logger.info(`Listing applications for ${userCredentials.userName}`);
30
+ console.log(JSON.stringify(formattedData));
31
+ return 0;
32
+ }
33
+ catch (e) {
34
+ if (axios_1.default.isAxiosError(e) && e.response) {
35
+ logger.error(`Failed to list applications: ${e.response?.data}`);
36
+ return 1;
37
+ }
38
+ else {
39
+ logger.error(`Failed to list applications: ${e.message}`);
40
+ return 1;
41
+ }
42
+ }
43
+ }
44
+ exports.listApps = listApps;
45
+ //# sourceMappingURL=list-apps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-apps.js","sourceRoot":"","sources":["../../../../applications/list-apps.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,sDAA2D;AAC3D,8CAAoD;AAG7C,KAAK,UAAU,QAAQ,CAAC,IAAY;IACzC,MAAM,MAAM,GAAG,IAAI,mBAAY,EAAE,CAAC;IAClC,MAAM,eAAe,GAAG,IAAA,gCAAmB,GAAE,CAAC;IAC9C,MAAM,WAAW,GAAG,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC;IAEtD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,eAAK,CAAC,GAAG,CAC1B,WAAW,IAAI,IAAI,eAAe,CAAC,QAAQ,cAAc,EACzD;YACE,OAAO,EAAE;gBACP,aAAa,EAAE,WAAW;aAC3B;SACF,CACF,CAAC;QACF,MAAM,IAAI,GAAkB,IAAI,CAAC,IAAqB,CAAC;QACvD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YACrC,OAAO,CAAC,CAAC;QACX,CAAC;QACD,MAAM,aAAa,GAAkB,EAAE,CAAA;QACvC,KAAK,MAAM,WAAW,IAAI,IAAI,EAAE,CAAC;YAC/B,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,OAAO,EAAE,cAAc,EAAE,WAAW,CAAC,YAAY,EAAE,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/M,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,4BAA4B,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAA;QACnE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;QAC3C,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,eAAK,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YACjE,OAAO,CAAC,CAAC;QACX,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,gCAAiC,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YACrE,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;AACH,CAAC;AAnCD,4BAmCC"}
@@ -0,0 +1,2 @@
1
+ export declare function registerApp(dbname: string, host: string, machines: number): Promise<number>;
2
+ //# sourceMappingURL=register-app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-app.d.ts","sourceRoot":"","sources":["../../../../applications/register-app.ts"],"names":[],"mappings":"AAKA,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAuCjG"}
@@ -0,0 +1,48 @@
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.registerApp = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const logs_1 = require("../../../src/telemetry/logs");
9
+ const cloudutils_1 = require("../cloudutils");
10
+ const node_path_1 = __importDefault(require("node:path"));
11
+ async function registerApp(dbname, host, machines) {
12
+ const logger = new logs_1.GlobalLogger();
13
+ const userCredentials = (0, cloudutils_1.getCloudCredentials)();
14
+ const bearerToken = "Bearer " + userCredentials.token;
15
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
16
+ const packageJson = require(node_path_1.default.join(process.cwd(), 'package.json'));
17
+ const appName = packageJson.name;
18
+ logger.info(`Loaded application name from package.json: ${appName}`);
19
+ logger.info(`Registering application: ${appName}`);
20
+ try {
21
+ const register = await axios_1.default.put(`https://${host}/${userCredentials.userName}/application`, {
22
+ name: appName,
23
+ database: dbname,
24
+ max_vms: machines,
25
+ }, {
26
+ headers: {
27
+ "Content-Type": "application/json",
28
+ Authorization: bearerToken,
29
+ },
30
+ });
31
+ const uuid = register.data;
32
+ logger.info(`Successfully registered: ${appName}`);
33
+ logger.info(`${appName} ID: ${uuid}`);
34
+ return 0;
35
+ }
36
+ catch (e) {
37
+ if (axios_1.default.isAxiosError(e) && e.response) {
38
+ logger.error(`Failed to register application ${appName}: ${e.response?.data}`);
39
+ return 1;
40
+ }
41
+ else {
42
+ logger.error(`Failed to register application ${appName}: ${e.message}`);
43
+ return 1;
44
+ }
45
+ }
46
+ }
47
+ exports.registerApp = registerApp;
48
+ //# sourceMappingURL=register-app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-app.js","sourceRoot":"","sources":["../../../../applications/register-app.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,sDAA2D;AAC3D,8CAAoD;AACpD,0DAA6B;AAEtB,KAAK,UAAU,WAAW,CAAC,MAAc,EAAE,IAAY,EAAE,QAAgB;IAC9E,MAAM,MAAM,GAAG,IAAI,mBAAY,EAAE,CAAC;IAClC,MAAM,eAAe,GAAG,IAAA,gCAAmB,GAAE,CAAC;IAC9C,MAAM,WAAW,GAAG,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC;IAEtD,8DAA8D;IAC9D,MAAM,WAAW,GAAG,OAAO,CAAC,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAqB,CAAC;IAC1F,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC;IACjC,MAAM,CAAC,IAAI,CAAC,8CAA8C,OAAO,EAAE,CAAC,CAAA;IACpE,MAAM,CAAC,IAAI,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAA;IAElD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAC9B,WAAW,IAAI,IAAI,eAAe,CAAC,QAAQ,cAAc,EACzD;YACE,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,QAAQ;SAClB,EACD;YACE,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,WAAW;aAC3B;SACF,CACF,CAAC;QACF,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAc,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,QAAQ,IAAI,EAAE,CAAC,CAAC;QACtC,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,eAAK,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,CAAC,KAAK,CAAC,kCAAkC,OAAO,KAAK,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/E,OAAO,CAAC,CAAC;QACX,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,kCAAkC,OAAO,KAAM,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YACnF,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;AACH,CAAC;AAvCD,kCAuCC"}
@@ -0,0 +1,9 @@
1
+ export type Application = {
2
+ Name: string;
3
+ ID: string;
4
+ DatabaseName: string;
5
+ Status: string;
6
+ Version: string;
7
+ MaxVMs: string;
8
+ };
9
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../applications/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../applications/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export declare function updateApp(host: string, machines: number): Promise<number>;
2
+ //# sourceMappingURL=update-app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-app.d.ts","sourceRoot":"","sources":["../../../../applications/update-app.ts"],"names":[],"mappings":"AAMA,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAwC/E"}