@dbos-inc/dbos-sdk 2.2.10-preview.g90e74a1e32 → 2.3.7-preview
Sign up to get free protection for your applications and to get access to all the features.
- package/.husky/pre-commit +1 -0
- package/.prettierignore +3 -0
- package/.prettierrc +9 -0
- package/CODE_OF_CONDUCT.md +24 -18
- package/CONTRIBUTING.md +12 -10
- package/README.md +2 -2
- package/compose.yaml +17 -17
- package/dbos-config.schema.json +4 -13
- package/dist/schemas/user_db_schema.d.ts.map +1 -1
- package/dist/schemas/user_db_schema.js.map +1 -1
- package/dist/src/context.d.ts +12 -12
- package/dist/src/context.d.ts.map +1 -1
- package/dist/src/context.js +9 -9
- package/dist/src/context.js.map +1 -1
- package/dist/src/data_validation.d.ts +1 -1
- package/dist/src/data_validation.d.ts.map +1 -1
- package/dist/src/data_validation.js +14 -8
- package/dist/src/data_validation.js.map +1 -1
- package/dist/src/dbos-executor.d.ts +4 -2
- package/dist/src/dbos-executor.d.ts.map +1 -1
- package/dist/src/dbos-executor.js +131 -114
- package/dist/src/dbos-executor.js.map +1 -1
- package/dist/src/dbos-runtime/cli.d.ts +3 -3
- package/dist/src/dbos-runtime/cli.d.ts.map +1 -1
- package/dist/src/dbos-runtime/cli.js +79 -38
- package/dist/src/dbos-runtime/cli.js.map +1 -1
- package/dist/src/dbos-runtime/cloudutils/authentication.d.ts +1 -1
- package/dist/src/dbos-runtime/cloudutils/authentication.d.ts.map +1 -1
- package/dist/src/dbos-runtime/cloudutils/authentication.js +14 -14
- package/dist/src/dbos-runtime/cloudutils/authentication.js.map +1 -1
- package/dist/src/dbos-runtime/cloudutils/cloudutils.d.ts +2 -2
- package/dist/src/dbos-runtime/cloudutils/cloudutils.d.ts.map +1 -1
- package/dist/src/dbos-runtime/cloudutils/cloudutils.js +32 -32
- package/dist/src/dbos-runtime/cloudutils/cloudutils.js.map +1 -1
- package/dist/src/dbos-runtime/cloudutils/databases.d.ts +2 -2
- package/dist/src/dbos-runtime/cloudutils/databases.d.ts.map +1 -1
- package/dist/src/dbos-runtime/cloudutils/databases.js +25 -21
- package/dist/src/dbos-runtime/cloudutils/databases.js.map +1 -1
- package/dist/src/dbos-runtime/commands.d.ts +1 -1
- package/dist/src/dbos-runtime/commands.js +9 -9
- package/dist/src/dbos-runtime/config.d.ts +7 -7
- package/dist/src/dbos-runtime/config.d.ts.map +1 -1
- package/dist/src/dbos-runtime/config.js +30 -23
- package/dist/src/dbos-runtime/config.js.map +1 -1
- package/dist/src/dbos-runtime/configure.d.ts.map +1 -1
- package/dist/src/dbos-runtime/configure.js.map +1 -1
- package/dist/src/dbos-runtime/db_connection.d.ts.map +1 -1
- package/dist/src/dbos-runtime/db_connection.js +2 -2
- package/dist/src/dbos-runtime/db_connection.js.map +1 -1
- package/dist/src/dbos-runtime/db_wizard.d.ts +1 -1
- package/dist/src/dbos-runtime/db_wizard.d.ts.map +1 -1
- package/dist/src/dbos-runtime/db_wizard.js +18 -18
- package/dist/src/dbos-runtime/db_wizard.js.map +1 -1
- package/dist/src/dbos-runtime/debug.d.ts +2 -2
- package/dist/src/dbos-runtime/debug.d.ts.map +1 -1
- package/dist/src/dbos-runtime/debug.js +4 -4
- package/dist/src/dbos-runtime/debug.js.map +1 -1
- package/dist/src/dbos-runtime/migrate.d.ts +2 -2
- package/dist/src/dbos-runtime/migrate.d.ts.map +1 -1
- package/dist/src/dbos-runtime/migrate.js +14 -10
- package/dist/src/dbos-runtime/migrate.js.map +1 -1
- package/dist/src/dbos-runtime/reset.d.ts +2 -2
- package/dist/src/dbos-runtime/reset.js +2 -2
- package/dist/src/dbos-runtime/reset.js.map +1 -1
- package/dist/src/dbos-runtime/runtime.d.ts.map +1 -1
- package/dist/src/dbos-runtime/runtime.js +4 -4
- package/dist/src/dbos-runtime/runtime.js.map +1 -1
- package/dist/src/dbos-runtime/workflow_management.d.ts +5 -4
- package/dist/src/dbos-runtime/workflow_management.d.ts.map +1 -1
- package/dist/src/dbos-runtime/workflow_management.js +34 -14
- package/dist/src/dbos-runtime/workflow_management.js.map +1 -1
- package/dist/src/dbos.d.ts +23 -23
- package/dist/src/dbos.d.ts.map +1 -1
- package/dist/src/dbos.js +59 -59
- package/dist/src/dbos.js.map +1 -1
- package/dist/src/debugpoint.d.ts.map +1 -1
- package/dist/src/debugpoint.js +4 -4
- package/dist/src/debugpoint.js.map +1 -1
- package/dist/src/decorators.d.ts +8 -8
- package/dist/src/decorators.d.ts.map +1 -1
- package/dist/src/decorators.js +36 -33
- package/dist/src/decorators.js.map +1 -1
- package/dist/src/error.d.ts.map +1 -1
- package/dist/src/error.js +6 -5
- package/dist/src/error.js.map +1 -1
- package/dist/src/eventreceiver.d.ts +1 -1
- package/dist/src/eventreceiver.d.ts.map +1 -1
- package/dist/src/httpServer/handler.d.ts +8 -8
- package/dist/src/httpServer/handler.d.ts.map +1 -1
- package/dist/src/httpServer/handler.js.map +1 -1
- package/dist/src/httpServer/handlerTypes.d.ts.map +1 -1
- package/dist/src/httpServer/handlerTypes.js.map +1 -1
- package/dist/src/httpServer/middleware.d.ts +9 -9
- package/dist/src/httpServer/middleware.d.ts.map +1 -1
- package/dist/src/httpServer/middleware.js +6 -6
- package/dist/src/httpServer/middleware.js.map +1 -1
- package/dist/src/httpServer/server.d.ts +2 -2
- package/dist/src/httpServer/server.d.ts.map +1 -1
- package/dist/src/httpServer/server.js +27 -33
- package/dist/src/httpServer/server.js.map +1 -1
- package/dist/src/index.d.ts +16 -16
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/kafka/kafka.d.ts.map +1 -1
- package/dist/src/kafka/kafka.js +2 -2
- package/dist/src/kafka/kafka.js.map +1 -1
- package/dist/src/procedure.d.ts +6 -6
- package/dist/src/procedure.d.ts.map +1 -1
- package/dist/src/procedure.js.map +1 -1
- package/dist/src/scheduler/crontab.d.ts.map +1 -1
- package/dist/src/scheduler/crontab.js +54 -33
- package/dist/src/scheduler/crontab.js.map +1 -1
- package/dist/src/scheduler/scheduler.d.ts +3 -3
- package/dist/src/scheduler/scheduler.d.ts.map +1 -1
- package/dist/src/scheduler/scheduler.js +7 -7
- package/dist/src/scheduler/scheduler.js.map +1 -1
- package/dist/src/step.d.ts +4 -4
- package/dist/src/step.d.ts.map +1 -1
- package/dist/src/step.js.map +1 -1
- package/dist/src/system_database.d.ts +16 -11
- package/dist/src/system_database.d.ts.map +1 -1
- package/dist/src/system_database.js +136 -56
- package/dist/src/system_database.js.map +1 -1
- package/dist/src/telemetry/collector.d.ts +3 -3
- package/dist/src/telemetry/exporters.d.ts +1 -1
- package/dist/src/telemetry/exporters.js.map +1 -1
- package/dist/src/telemetry/index.d.ts +5 -5
- package/dist/src/telemetry/logs.d.ts +4 -4
- package/dist/src/telemetry/logs.d.ts.map +1 -1
- package/dist/src/telemetry/logs.js +18 -18
- package/dist/src/telemetry/logs.js.map +1 -1
- package/dist/src/telemetry/traces.d.ts +3 -3
- package/dist/src/telemetry/traces.js +7 -7
- package/dist/src/testing/testing_runtime.d.ts +11 -11
- package/dist/src/testing/testing_runtime.d.ts.map +1 -1
- package/dist/src/testing/testing_runtime.js +15 -8
- package/dist/src/testing/testing_runtime.js.map +1 -1
- package/dist/src/transaction.d.ts +6 -6
- package/dist/src/transaction.d.ts.map +1 -1
- package/dist/src/transaction.js +4 -4
- package/dist/src/transaction.js.map +1 -1
- package/dist/src/user_database.d.ts +4 -4
- package/dist/src/user_database.d.ts.map +1 -1
- package/dist/src/user_database.js +45 -45
- package/dist/src/user_database.js.map +1 -1
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +6 -12
- package/dist/src/utils.js.map +1 -1
- package/dist/src/wfqueue.d.ts +1 -1
- package/dist/src/wfqueue.d.ts.map +1 -1
- package/dist/src/wfqueue.js +5 -7
- package/dist/src/wfqueue.js.map +1 -1
- package/dist/src/workflow.d.ts +17 -10
- package/dist/src/workflow.d.ts.map +1 -1
- package/dist/src/workflow.js +19 -18
- package/dist/src/workflow.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/eslint.config.js +29 -27
- package/migrations/20240123182943_schema.js +7 -8
- package/migrations/20240123183021_tables.js +52 -48
- package/migrations/20240123183025_indexes.js +11 -14
- package/migrations/20240123183030_triggers.js +7 -8
- package/migrations/20240124015239_status_timestamp.js +12 -18
- package/migrations/20240201213211_replica_identity.js +8 -11
- package/migrations/20240205223925_foreign_keys.js +40 -18
- package/migrations/20240207192338_executor_id_index.js +8 -10
- package/migrations/20240430090000_tables.js +8 -10
- package/migrations/20240516004341_application_version.js +10 -12
- package/migrations/20240517000000_status_class_config.js +10 -14
- package/migrations/20240621000000_workflow_tries.js +8 -12
- package/migrations/20240924000000_workflowqueue.js +32 -23
- package/migrations/20241009150000_event_dispatch_kv.js +12 -14
- package/migrations/20252101000000_workflow_queues_executor_id.js +7 -9
- package/package.json +9 -2
- package/src/dbos-runtime/cloudutils/README.md +1 -1
@@ -7,11 +7,11 @@ exports.authenticate = void 0;
|
|
7
7
|
const axios_1 = __importDefault(require("axios"));
|
8
8
|
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
|
9
9
|
const jwks_rsa_1 = __importDefault(require("jwks-rsa"));
|
10
|
-
const DBOSCloudHost = process.env.DBOS_DOMAIN ||
|
11
|
-
const productionEnvironment = DBOSCloudHost ===
|
12
|
-
const Auth0Domain = productionEnvironment ?
|
13
|
-
const DBOSClientID = productionEnvironment ?
|
14
|
-
const DBOSCloudIdentifier =
|
10
|
+
const DBOSCloudHost = process.env.DBOS_DOMAIN || 'cloud.dbos.dev';
|
11
|
+
const productionEnvironment = DBOSCloudHost === 'cloud.dbos.dev';
|
12
|
+
const Auth0Domain = productionEnvironment ? 'login.dbos.dev' : 'dbos-inc.us.auth0.com';
|
13
|
+
const DBOSClientID = productionEnvironment ? '6p7Sjxf13cyLMkdwn14MxlH7JdhILled' : 'G38fLmVErczEo9ioCFjVIHea6yd0qMZu';
|
14
|
+
const DBOSCloudIdentifier = 'dbos-cloud-api';
|
15
15
|
const sleepms = (ms) => new Promise((r) => setTimeout(r, ms));
|
16
16
|
const client = (0, jwks_rsa_1.default)({
|
17
17
|
jwksUri: `https://${Auth0Domain}/.well-known/jwks.json`,
|
@@ -22,12 +22,12 @@ async function getSigningKey(kid) {
|
|
22
22
|
}
|
23
23
|
async function verifyToken(token) {
|
24
24
|
const decoded = jsonwebtoken_1.default.decode(token, { complete: true });
|
25
|
-
if (!decoded || typeof decoded ===
|
26
|
-
throw new Error(
|
25
|
+
if (!decoded || typeof decoded === 'string' || !decoded.header.kid) {
|
26
|
+
throw new Error('Invalid token');
|
27
27
|
}
|
28
28
|
const signingKey = await getSigningKey(decoded.header.kid);
|
29
29
|
return new Promise((resolve, reject) => {
|
30
|
-
jsonwebtoken_1.default.verify(token, signingKey, { algorithms: [
|
30
|
+
jsonwebtoken_1.default.verify(token, signingKey, { algorithms: ['RS256'] }, (err, verifiedToken) => {
|
31
31
|
if (err) {
|
32
32
|
reject(err);
|
33
33
|
}
|
@@ -41,12 +41,12 @@ async function verifyToken(token) {
|
|
41
41
|
async function authenticate(logger, getRefreshToken = false) {
|
42
42
|
logger.info(`Please authenticate with DBOS Cloud!`);
|
43
43
|
const deviceCodeRequest = {
|
44
|
-
method:
|
44
|
+
method: 'POST',
|
45
45
|
url: `https://${Auth0Domain}/oauth/device/code`,
|
46
|
-
headers: {
|
46
|
+
headers: { 'content-type': 'application/x-www-form-urlencoded' },
|
47
47
|
data: {
|
48
48
|
client_id: DBOSClientID,
|
49
|
-
scope: getRefreshToken ?
|
49
|
+
scope: getRefreshToken ? 'offline_access' : 'sub',
|
50
50
|
audience: DBOSCloudIdentifier,
|
51
51
|
},
|
52
52
|
};
|
@@ -65,11 +65,11 @@ async function authenticate(logger, getRefreshToken = false) {
|
|
65
65
|
const loginURL = deviceCodeResponse.verification_uri_complete;
|
66
66
|
console.log(`Login URL: ${loginURL}`);
|
67
67
|
const tokenRequest = {
|
68
|
-
method:
|
68
|
+
method: 'POST',
|
69
69
|
url: `https://${Auth0Domain}/oauth/token`,
|
70
|
-
headers: {
|
70
|
+
headers: { 'content-type': 'application/x-www-form-urlencoded' },
|
71
71
|
data: {
|
72
|
-
grant_type:
|
72
|
+
grant_type: 'urn:ietf:params:oauth:grant-type:device_code',
|
73
73
|
device_code: deviceCodeResponse.device_code,
|
74
74
|
client_id: DBOSClientID,
|
75
75
|
},
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"authentication.js","sourceRoot":"","sources":["../../../../src/dbos-runtime/cloudutils/authentication.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,gEAA+C;AAC/C,wDAAkC;AAGlC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,gBAAgB,CAAC;AAClE,MAAM,qBAAqB,GAAG,aAAa,KAAK,gBAAgB,CAAC;AACjE,MAAM,WAAW,GAAG,qBAAqB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,uBAAuB,CAAC;AACvF,MAAM,YAAY,GAAG,qBAAqB,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,kCAAkC,CAAC;AACrH,MAAM,mBAAmB,GAAG,gBAAgB,CAAC;AAC7C,MAAM,OAAO,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAuBtE,MAAM,MAAM,GAAG,IAAA,kBAAU,EAAC;IACxB,OAAO,EAAE,WAAW,WAAW,wBAAwB;CACxD,CAAC,CAAC;AAEH,KAAK,UAAU,aAAa,CAAC,GAAW;IACtC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC5C,OAAO,GAAG,CAAC,YAAY,EAAE,CAAC;AAC5B,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,KAAa;IACtC,MAAM,OAAO,GAAG,sBAAG,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAEtD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAE3D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,sBAAG,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE;YAC9E,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,aAA2B,CAAC,CAAC;YACvC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,0EAA0E;AACnE,KAAK,UAAU,YAAY,
|
1
|
+
{"version":3,"file":"authentication.js","sourceRoot":"","sources":["../../../../src/dbos-runtime/cloudutils/authentication.ts"],"names":[],"mappings":"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"}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/// <reference types="node" />
|
2
|
-
import { AxiosError } from
|
3
|
-
import { createLogger, Logger } from
|
2
|
+
import { AxiosError } from 'axios';
|
3
|
+
import { createLogger, Logger } from 'winston';
|
4
4
|
export interface DBOSCloudCredentials {
|
5
5
|
token: string;
|
6
6
|
refreshToken?: string;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"cloudutils.d.ts","sourceRoot":"","sources":["../../../../src/dbos-runtime/cloudutils/cloudutils.ts"],"names":[],"mappings":";AACA,OAAc,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAM1C,OAAO,EAAc,YAAY,EAAU,MAAM,EAAE,MAAM,SAAS,CAAC;AAEnE,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,oBAAY,YAAY;IACtB,IAAI,SAAS;IACb,MAAM,WAAW;CAClB;AAED,eAAO,MAAM,aAAa,QAA8C,CAAC;AACzE,eAAO,MAAM,WAAW,UAAU,CAAC;AAEnC,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD,wBAAgB,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAUtD;AAoBD,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAQrD;
|
1
|
+
{"version":3,"file":"cloudutils.d.ts","sourceRoot":"","sources":["../../../../src/dbos-runtime/cloudutils/cloudutils.ts"],"names":[],"mappings":";AACA,OAAc,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAM1C,OAAO,EAAc,YAAY,EAAU,MAAM,EAAE,MAAM,SAAS,CAAC;AAEnE,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,oBAAY,YAAY;IACtB,IAAI,SAAS;IACb,MAAM,WAAW;CAClB;AAED,eAAO,MAAM,aAAa,QAA8C,CAAC;AACzE,eAAO,MAAM,WAAW,UAAU,CAAC;AAEnC,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD,wBAAgB,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAUtD;AAoBD,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAQrD;AAED,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C;AAED,wBAAgB,iBAAiB,SAEhC;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,oBAAoB,QAGjE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,cAAuB,GAAG,MAAM,GAAG,MAAM,CAa9F;AAED,eAAO,MAAM,OAAO,OAAQ,MAAM,qBAA0C,CAAC;AAE7E,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEhE;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,qBAAqB,CAWlF;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,QAI3D;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,oBAAoB,CAAC,CA+B/B"}
|
@@ -17,8 +17,8 @@ var AppLanguages;
|
|
17
17
|
AppLanguages["Node"] = "node";
|
18
18
|
AppLanguages["Python"] = "python";
|
19
19
|
})(AppLanguages || (exports.AppLanguages = AppLanguages = {}));
|
20
|
-
exports.DBOSCloudHost = process.env.DBOS_DOMAIN ||
|
21
|
-
exports.dbosEnvPath =
|
20
|
+
exports.DBOSCloudHost = process.env.DBOS_DOMAIN || 'cloud.dbos.dev';
|
21
|
+
exports.dbosEnvPath = '.dbos';
|
22
22
|
let curLogger = undefined;
|
23
23
|
function getLogger(verbose) {
|
24
24
|
if (curLogger)
|
@@ -26,7 +26,7 @@ function getLogger(verbose) {
|
|
26
26
|
const winstonTransports = [];
|
27
27
|
winstonTransports.push(new winston_1.transports.Console({
|
28
28
|
format: consoleFormat,
|
29
|
-
level: verbose ?
|
29
|
+
level: verbose ? 'debug' : 'info',
|
30
30
|
}));
|
31
31
|
return (curLogger = (0, winston_1.createLogger)({ transports: winstonTransports }));
|
32
32
|
}
|
@@ -35,11 +35,11 @@ const consoleFormat = winston_1.format.combine(winston_1.format.errors({ stack:
|
|
35
35
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
36
36
|
const { timestamp, level, message, stack } = info;
|
37
37
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-assignment
|
38
|
-
const ts = timestamp.slice(0, 19).replace(
|
38
|
+
const ts = timestamp.slice(0, 19).replace('T', ' ');
|
39
39
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-assignment
|
40
|
-
const formattedStack = stack?.split(
|
41
|
-
const messageString = typeof message ===
|
42
|
-
return `${ts} [${level}]: ${messageString} ${stack ?
|
40
|
+
const formattedStack = stack?.split('\n').slice(1).join('\n');
|
41
|
+
const messageString = typeof message === 'string' ? message : JSON.stringify(message);
|
42
|
+
return `${ts} [${level}]: ${messageString} ${stack ? '\n' + formattedStack : ''}`;
|
43
43
|
}));
|
44
44
|
function isTokenExpired(token) {
|
45
45
|
try {
|
@@ -63,10 +63,10 @@ function deleteCredentials() {
|
|
63
63
|
exports.deleteCredentials = deleteCredentials;
|
64
64
|
function writeCredentials(credentials) {
|
65
65
|
fs_1.default.mkdirSync(exports.dbosEnvPath, { recursive: true });
|
66
|
-
fs_1.default.writeFileSync(node_path_1.default.join(exports.dbosEnvPath,
|
66
|
+
fs_1.default.writeFileSync(node_path_1.default.join(exports.dbosEnvPath, 'credentials'), JSON.stringify(credentials), 'utf-8');
|
67
67
|
}
|
68
68
|
exports.writeCredentials = writeCredentials;
|
69
|
-
function checkReadFile(path, encoding =
|
69
|
+
function checkReadFile(path, encoding = 'utf8') {
|
70
70
|
// First, check the file
|
71
71
|
fs_1.default.stat(path, (error, stats) => {
|
72
72
|
if (error) {
|
@@ -88,14 +88,14 @@ function createDirectory(path) {
|
|
88
88
|
}
|
89
89
|
exports.createDirectory = createDirectory;
|
90
90
|
function isCloudAPIErrorResponse(obj) {
|
91
|
-
return (typeof obj ===
|
91
|
+
return (typeof obj === 'object' &&
|
92
92
|
obj !== null &&
|
93
|
-
|
94
|
-
typeof obj[
|
95
|
-
|
96
|
-
typeof obj[
|
97
|
-
|
98
|
-
typeof obj[
|
93
|
+
'message' in obj &&
|
94
|
+
typeof obj['message'] === 'string' &&
|
95
|
+
'statusCode' in obj &&
|
96
|
+
typeof obj['statusCode'] === 'number' &&
|
97
|
+
'requestID' in obj &&
|
98
|
+
typeof obj['requestID'] === 'string');
|
99
99
|
}
|
100
100
|
exports.isCloudAPIErrorResponse = isCloudAPIErrorResponse;
|
101
101
|
function handleAPIErrors(label, e) {
|
@@ -117,10 +117,10 @@ async function getCloudCredentials(host, logger, userName, secret) {
|
|
117
117
|
// Check if credentials exist and are not expired
|
118
118
|
const credentials = await checkCredentials(logger);
|
119
119
|
// Log in the user.
|
120
|
-
if (credentials.token ===
|
120
|
+
if (credentials.token === '') {
|
121
121
|
const authResponse = await (0, authentication_1.authenticate)(logger, false);
|
122
122
|
if (authResponse === null) {
|
123
|
-
logger.error(
|
123
|
+
logger.error('Failed to login. Exiting...');
|
124
124
|
process.exit(1);
|
125
125
|
}
|
126
126
|
credentials.token = authResponse.token;
|
@@ -150,15 +150,15 @@ exports.getCloudCredentials = getCloudCredentials;
|
|
150
150
|
* @returns {DBOSCloudCredentials} - The user's DBOS Cloud credentials if exists, or an empty one.
|
151
151
|
*/
|
152
152
|
async function checkCredentials(logger) {
|
153
|
-
const emptyCredentials = { token:
|
153
|
+
const emptyCredentials = { token: '', userName: '', organization: '' };
|
154
154
|
if (!credentialsExist()) {
|
155
155
|
return Promise.resolve(emptyCredentials);
|
156
156
|
}
|
157
|
-
const credentials = JSON.parse(fs_1.default.readFileSync(`./${exports.dbosEnvPath}/credentials`).toString(
|
158
|
-
credentials.token = credentials.token.replace(/\r|\n/g,
|
157
|
+
const credentials = JSON.parse(fs_1.default.readFileSync(`./${exports.dbosEnvPath}/credentials`).toString('utf-8'));
|
158
|
+
credentials.token = credentials.token.replace(/\r|\n/g, ''); // Trim the trailing /r /n.
|
159
159
|
logger.debug(`Loaded credentials from ${exports.dbosEnvPath}/credentials`);
|
160
160
|
if (isTokenExpired(credentials.token)) {
|
161
|
-
logger.warn(
|
161
|
+
logger.warn('Credentials expired. Logging in again...');
|
162
162
|
deleteCredentials();
|
163
163
|
return Promise.resolve(emptyCredentials);
|
164
164
|
}
|
@@ -172,11 +172,11 @@ async function checkCredentials(logger) {
|
|
172
172
|
* @returns {boolean} - True if the user profile exists, false otherwise.
|
173
173
|
*/
|
174
174
|
async function checkUserProfile(host, credentials, logger) {
|
175
|
-
const bearerToken =
|
175
|
+
const bearerToken = 'Bearer ' + credentials.token;
|
176
176
|
try {
|
177
177
|
const response = await axios_1.default.get(`https://${host}/v1alpha1/user/profile`, {
|
178
178
|
headers: {
|
179
|
-
|
179
|
+
'Content-Type': 'application/json',
|
180
180
|
Authorization: bearerToken,
|
181
181
|
},
|
182
182
|
});
|
@@ -190,7 +190,7 @@ async function checkUserProfile(host, credentials, logger) {
|
|
190
190
|
const errorLabel = `Failed to login`;
|
191
191
|
if (isCloudAPIErrorResponse(axiosError.response?.data)) {
|
192
192
|
const resp = axiosError.response?.data;
|
193
|
-
if (!resp.message.includes(
|
193
|
+
if (!resp.message.includes('user not found in DBOS Cloud')) {
|
194
194
|
handleAPIErrors(errorLabel, axiosError);
|
195
195
|
process.exit(1);
|
196
196
|
}
|
@@ -204,10 +204,10 @@ async function checkUserProfile(host, credentials, logger) {
|
|
204
204
|
}
|
205
205
|
function isValidUsername(value) {
|
206
206
|
if (value.length < 3 || value.length > 30) {
|
207
|
-
return
|
207
|
+
return 'Username must be 3~30 characters long';
|
208
208
|
}
|
209
|
-
if (!validator_1.default.matches(value,
|
210
|
-
return
|
209
|
+
if (!validator_1.default.matches(value, '^[a-z0-9_]+$')) {
|
210
|
+
return 'Username must contain only lowercase letters, numbers, and underscores.';
|
211
211
|
}
|
212
212
|
// TODO: Check if the username is already taken. Need a cloud endpoint for this.
|
213
213
|
return true;
|
@@ -224,7 +224,7 @@ async function registerUser(host, credentials, logger, userName, secret) {
|
|
224
224
|
logger.info(`Please register for DBOS Cloud`);
|
225
225
|
if (!userName) {
|
226
226
|
userName = await (0, prompts_1.input)({
|
227
|
-
message:
|
227
|
+
message: 'Choose your username:',
|
228
228
|
required: true,
|
229
229
|
validate: isValidUsername,
|
230
230
|
});
|
@@ -233,20 +233,20 @@ async function registerUser(host, credentials, logger, userName, secret) {
|
|
233
233
|
logger.error(`Invalid username: ${userName}. Usernames must be between 3 and 30 characters long and contain only lowercase letters, underscores, and numbers.`);
|
234
234
|
process.exit(1);
|
235
235
|
}
|
236
|
-
const bearerToken =
|
236
|
+
const bearerToken = 'Bearer ' + credentials.token;
|
237
237
|
try {
|
238
238
|
await axios_1.default.put(`https://${host}/v1alpha1/user`, {
|
239
239
|
name: userName,
|
240
240
|
secret: secret,
|
241
241
|
}, {
|
242
242
|
headers: {
|
243
|
-
|
243
|
+
'Content-Type': 'application/json',
|
244
244
|
Authorization: bearerToken,
|
245
245
|
},
|
246
246
|
});
|
247
247
|
const response = await axios_1.default.get(`https://${host}/v1alpha1/user/profile`, {
|
248
248
|
headers: {
|
249
|
-
|
249
|
+
'Content-Type': 'application/json',
|
250
250
|
Authorization: bearerToken,
|
251
251
|
},
|
252
252
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"cloudutils.js","sourceRoot":"","sources":["../../../../src/dbos-runtime/cloudutils/cloudutils.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,kDAA0C;AAC1C,gEAA+B;AAC/B,0DAA6B;AAC7B,+CAA0C;AAC1C,0DAAkC;AAClC,
|
1
|
+
{"version":3,"file":"cloudutils.js","sourceRoot":"","sources":["../../../../src/dbos-runtime/cloudutils/cloudutils.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,kDAA0C;AAC1C,gEAA+B;AAC/B,0DAA6B;AAC7B,+CAA0C;AAC1C,0DAAkC;AAClC,qDAAgD;AAChD,qCAAmE;AAgBnE,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,6BAAa,CAAA;IACb,iCAAiB,CAAA;AACnB,CAAC,EAHW,YAAY,4BAAZ,YAAY,QAGvB;AAEY,QAAA,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,gBAAgB,CAAC;AAC5D,QAAA,WAAW,GAAG,OAAO,CAAC;AAGnC,IAAI,SAAS,GAAuB,SAAS,CAAC;AAC9C,SAAgB,SAAS,CAAC,OAAiB;IACzC,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC;IAChC,MAAM,iBAAiB,GAAG,EAAE,CAAC;IAC7B,iBAAiB,CAAC,IAAI,CACpB,IAAI,oBAAU,CAAC,OAAO,CAAC;QACrB,MAAM,EAAE,aAAa;QACrB,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;KAClC,CAAC,CACH,CAAC;IACF,OAAO,CAAC,SAAS,GAAG,IAAA,sBAAY,EAAC,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;AACvE,CAAC;AAVD,8BAUC;AAED,MAAM,aAAa,GAAG,gBAAM,CAAC,OAAO,CAClC,gBAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAC9B,gBAAM,CAAC,SAAS,EAAE,EAClB,gBAAM,CAAC,QAAQ,EAAE,EACjB,gBAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;IACrB,mEAAmE;IACnE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAClD,kJAAkJ;IAClJ,MAAM,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACpD,kJAAkJ;IAClJ,MAAM,cAAc,GAAG,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE9D,MAAM,aAAa,GAAW,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAE9F,OAAO,GAAG,EAAE,KAAK,KAAK,MAAM,aAAa,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACpF,CAAC,CAAC,CACH,CAAC;AAEF,SAAgB,cAAc,CAAC,KAAa;IAC1C,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,EAAE,GAAG,sBAAG,CAAC,MAAM,CAAC,KAAK,CAAmB,CAAC;QACpD,IAAI,CAAC,GAAG;YAAE,OAAO,KAAK,CAAC;QACvB,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC;IAClC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AARD,wCAQC;AAED,SAAgB,gBAAgB;IAC9B,OAAO,YAAE,CAAC,UAAU,CAAC,KAAK,mBAAW,cAAc,CAAC,CAAC;AACvD,CAAC;AAFD,4CAEC;AAED,SAAgB,iBAAiB;IAC/B,YAAE,CAAC,UAAU,CAAC,KAAK,mBAAW,cAAc,CAAC,CAAC;AAChD,CAAC;AAFD,8CAEC;AAED,SAAgB,gBAAgB,CAAC,WAAiC;IAChE,YAAE,CAAC,SAAS,CAAC,mBAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,YAAE,CAAC,aAAa,CAAC,mBAAI,CAAC,IAAI,CAAC,mBAAW,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;AAChG,CAAC;AAHD,4CAGC;AAED,SAAgB,aAAa,CAAC,IAAY,EAAE,WAA2B,MAAM;IAC3E,wBAAwB;IACxB,YAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAmC,EAAE,KAAe,EAAE,EAAE;QACrE,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QACxE,CAAC;aAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,gBAAgB,CAAC,CAAC;QACvD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,yBAAyB;IACzB,MAAM,WAAW,GAAW,YAAE,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAChE,OAAO,WAAW,CAAC;AACrB,CAAC;AAbD,sCAaC;AAEM,MAAM,OAAO,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAAhE,QAAA,OAAO,WAAyD;AAE7E,SAAgB,eAAe,CAAC,IAAY;IAC1C,OAAO,YAAE,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACjD,CAAC;AAFD,0CAEC;AASD,SAAgB,uBAAuB,CAAC,GAAY;IAClD,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACZ,SAAS,IAAI,GAAG;QAChB,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,QAAQ;QAClC,YAAY,IAAI,GAAG;QACnB,OAAO,GAAG,CAAC,YAAY,CAAC,KAAK,QAAQ;QACrC,WAAW,IAAI,GAAG;QAClB,OAAO,GAAG,CAAC,WAAW,CAAC,KAAK,QAAQ,CACrC,CAAC;AACJ,CAAC;AAXD,0DAWC;AAED,SAAgB,eAAe,CAAC,KAAa,EAAE,CAAa;IAC1D,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,IAAI,GAA0B,CAAC,CAAC,QAAQ,EAAE,IAA6B,CAAC;IAC9E,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,KAAK,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AACjE,CAAC;AAJD,0CAIC;AAED;;;;;;;;GAQG;AACI,KAAK,UAAU,mBAAmB,CACvC,IAAY,EACZ,MAAc,EACd,QAAiB,EACjB,MAAe;IAEf,iDAAiD;IACjD,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEnD,mBAAmB;IACnB,IAAI,WAAW,CAAC,KAAK,KAAK,EAAE,EAAE,CAAC;QAC7B,MAAM,YAAY,GAAG,MAAM,IAAA,6BAAY,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACvD,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YAC1B,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,WAAW,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;QACvC,WAAW,CAAC,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;QACrD,sFAAsF;QACtF,8EAA8E;QAC9E,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAChC,CAAC;IAED,yCAAyC;IACzC,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IACrE,IAAI,UAAU,EAAE,CAAC;QACf,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC9B,MAAM,CAAC,KAAK,CAAC,6BAA6B,WAAW,CAAC,QAAQ,GAAG,CAAC,CAAC;QACnE,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,sDAAsD;IACtD,MAAM,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAChE,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAE9B,OAAO,WAAW,CAAC;AACrB,CAAC;AApCD,kDAoCC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,gBAAgB,CAAC,MAAc;IAC5C,MAAM,gBAAgB,GAAyB,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;IAC7F,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;QACxB,OAAO,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC3C,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAE,CAAC,YAAY,CAAC,KAAK,mBAAW,cAAc,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAC1C,CAAC;IAC1B,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,2BAA2B;IACxF,MAAM,CAAC,KAAK,CAAC,2BAA2B,mBAAW,cAAc,CAAC,CAAC;IACnE,IAAI,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QACxD,iBAAiB,EAAE,CAAC;QACpB,OAAO,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,gBAAgB,CAAC,IAAY,EAAE,WAAiC,EAAE,MAAc;IAC7F,MAAM,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC;IAClD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,WAAW,IAAI,wBAAwB,EAAE;YACxE,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,WAAW;aAC3B;SACF,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAmB,CAAC;QAC7C,WAAW,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;QACpC,WAAW,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,UAAU,GAAG,CAAe,CAAC;QACnC,MAAM,UAAU,GAAG,iBAAiB,CAAC;QACrC,IAAI,uBAAuB,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,GAA0B,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC;YAC9D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,8BAA8B,CAAC,EAAE,CAAC;gBAC3D,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;gBACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,GAAG,UAAU,KAAM,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QAC1C,OAAO,uCAAuC,CAAC;IACjD,CAAC;IACD,IAAI,CAAC,mBAAS,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc,CAAC,EAAE,CAAC;QAC9C,OAAO,yEAAyE,CAAC;IACnF,CAAC;IACD,gFAAgF;IAChF,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,YAAY,CACzB,IAAY,EACZ,WAAiC,EACjC,MAAc,EACd,QAAiB,EACjB,MAAe;IAEf,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAE9C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,MAAM,IAAA,eAAK,EAAC;YACrB,OAAO,EAAE,uBAAuB;YAChC,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,eAAe;SAC1B,CAAC,CAAC;IACL,CAAC;IAED,IAAI,eAAe,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;QACvC,MAAM,CAAC,KAAK,CACV,qBAAqB,QAAQ,oHAAoH,CAClJ,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC;IAClD,IAAI,CAAC;QACH,MAAM,eAAK,CAAC,GAAG,CACb,WAAW,IAAI,gBAAgB,EAC/B;YACE,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,MAAM;SACf,EACD;YACE,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,WAAW;aAC3B;SACF,CACF,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,WAAW,IAAI,wBAAwB,EAAE;YACxE,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,WAAW;aAC3B;SACF,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAmB,CAAC;QAC7C,WAAW,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;QACpC,WAAW,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,iDAAiD,WAAW,CAAC,QAAQ,GAAG,CAAC,CAAC;IACxF,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,UAAU,GAAG,2BAA2B,QAAQ,EAAE,CAAC;QACzD,MAAM,UAAU,GAAG,CAAe,CAAC;QACnC,IAAI,uBAAuB,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC;YACvD,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,GAAG,UAAU,KAAM,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO;AACT,CAAC"}
|
@@ -1,5 +1,5 @@
|
|
1
|
-
import { DBOSCloudCredentials } from
|
2
|
-
import { Logger } from
|
1
|
+
import { DBOSCloudCredentials } from './cloudutils';
|
2
|
+
import { Logger } from 'winston';
|
3
3
|
export interface UserDBInstance {
|
4
4
|
readonly PostgresInstanceName: string;
|
5
5
|
readonly Status: string;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"databases.d.ts","sourceRoot":"","sources":["../../../../src/dbos-runtime/cloudutils/databases.ts"],"names":[],"mappings":"AACA,OAAO,
|
1
|
+
{"version":3,"file":"databases.d.ts","sourceRoot":"","sources":["../../../../src/dbos-runtime/cloudutils/databases.ts"],"names":[],"mappings":"AACA,OAAO,EAML,oBAAoB,EACrB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGjC,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3C;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAsBD,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,OAAO,EACb,eAAe,CAAC,EAAE,oBAAoB,kBAmDvC;AAED,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,eAAe,CAAC,EAAE,oBAAoB,GACrC,OAAO,CAAC,cAAc,CAAC,CAkBzB;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,eAAe,EAAE,oBAAoB,GACpC,OAAO,CAAC,MAAM,CAAC,CAmDjB;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,eAAe,EAAE,oBAAoB,EACrC,MAAM,EAAE,MAAM,iBAwBf;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,eAAe,EAAE,oBAAoB,EACrC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,iBAAiB,CAAC,CAwB5B"}
|
@@ -9,11 +9,15 @@ const cloudutils_1 = require("./cloudutils");
|
|
9
9
|
const prompts_1 = require("@inquirer/prompts");
|
10
10
|
function isValidPassword(logger, password) {
|
11
11
|
if (password.length < 8 || password.length > 128) {
|
12
|
-
logger.error(
|
12
|
+
logger.error('Invalid database password. Passwords must be between 8 and 128 characters long');
|
13
13
|
return false;
|
14
14
|
}
|
15
|
-
if (password.includes(
|
16
|
-
|
15
|
+
if (password.includes('/') ||
|
16
|
+
password.includes('"') ||
|
17
|
+
password.includes('@') ||
|
18
|
+
password.includes(' ') ||
|
19
|
+
password.includes("'")) {
|
20
|
+
logger.error('Password contains invalid character. Passwords can contain any ASCII character except @, /, \\, ", \', and spaces');
|
17
21
|
return false;
|
18
22
|
}
|
19
23
|
return true;
|
@@ -23,22 +27,22 @@ async function createUserDb(host, dbName, appDBUsername, appDBPassword, sync, us
|
|
23
27
|
if (!userCredentials) {
|
24
28
|
userCredentials = await (0, cloudutils_1.getCloudCredentials)(host, logger);
|
25
29
|
}
|
26
|
-
const bearerToken =
|
30
|
+
const bearerToken = 'Bearer ' + userCredentials.token;
|
27
31
|
if (!isValidPassword(logger, appDBPassword)) {
|
28
32
|
return 1;
|
29
33
|
}
|
30
34
|
try {
|
31
35
|
await axios_1.default.post(`https://${host}/v1alpha1/${userCredentials.organization}/databases/userdb`, { Name: dbName, AdminName: appDBUsername, AdminPassword: appDBPassword }, {
|
32
36
|
headers: {
|
33
|
-
|
37
|
+
'Content-Type': 'application/json',
|
34
38
|
Authorization: bearerToken,
|
35
39
|
},
|
36
40
|
});
|
37
41
|
logger.info(`Successfully started provisioning database: ${dbName}`);
|
38
42
|
if (sync) {
|
39
|
-
let status =
|
40
|
-
while (status !==
|
41
|
-
if (status ===
|
43
|
+
let status = '';
|
44
|
+
while (status !== 'available' && status !== 'backing-up') {
|
45
|
+
if (status === '') {
|
42
46
|
await (0, cloudutils_1.sleepms)(5000); // First time sleep 5 sec
|
43
47
|
}
|
44
48
|
else {
|
@@ -70,10 +74,10 @@ async function getUserDBInfo(host, dbName, userCredentials) {
|
|
70
74
|
if (!userCredentials) {
|
71
75
|
userCredentials = await (0, cloudutils_1.getCloudCredentials)(host, logger);
|
72
76
|
}
|
73
|
-
const bearerToken =
|
77
|
+
const bearerToken = 'Bearer ' + userCredentials.token;
|
74
78
|
const res = await axios_1.default.get(`https://${host}/v1alpha1/${userCredentials.organization}/databases/userdb/info/${dbName}`, {
|
75
79
|
headers: {
|
76
|
-
|
80
|
+
'Content-Type': 'application/json',
|
77
81
|
Authorization: bearerToken,
|
78
82
|
},
|
79
83
|
});
|
@@ -83,11 +87,11 @@ exports.getUserDBInfo = getUserDBInfo;
|
|
83
87
|
async function chooseAppDBServer(logger, host, userCredentials) {
|
84
88
|
// List existing database instances.
|
85
89
|
let userDBs = [];
|
86
|
-
const bearerToken =
|
90
|
+
const bearerToken = 'Bearer ' + userCredentials.token;
|
87
91
|
try {
|
88
92
|
const res = await axios_1.default.get(`https://${host}/v1alpha1/${userCredentials.organization}/databases`, {
|
89
93
|
headers: {
|
90
|
-
|
94
|
+
'Content-Type': 'application/json',
|
91
95
|
Authorization: bearerToken,
|
92
96
|
},
|
93
97
|
});
|
@@ -104,14 +108,14 @@ async function chooseAppDBServer(logger, host, userCredentials) {
|
|
104
108
|
}
|
105
109
|
process.exit(1);
|
106
110
|
}
|
107
|
-
let userDBName =
|
111
|
+
let userDBName = '';
|
108
112
|
if (userDBs.length === 0) {
|
109
113
|
// If not, prompt the user to provision one.
|
110
|
-
logger.info(
|
114
|
+
logger.info('Provisioning a cloud Postgres database server');
|
111
115
|
userDBName = `${userCredentials.userName}-db-server`;
|
112
116
|
// Use a default user name and auto generated password.
|
113
|
-
const appDBUserName =
|
114
|
-
const appDBPassword = Buffer.from(Math.random().toString()).toString(
|
117
|
+
const appDBUserName = 'dbos_user';
|
118
|
+
const appDBPassword = Buffer.from(Math.random().toString()).toString('base64');
|
115
119
|
const res = await createUserDb(host, userDBName, appDBUserName, appDBPassword, true);
|
116
120
|
if (res !== 0) {
|
117
121
|
process.exit(1);
|
@@ -120,7 +124,7 @@ async function chooseAppDBServer(logger, host, userCredentials) {
|
|
120
124
|
else if (userDBs.length > 1) {
|
121
125
|
// If there is more than one database instances, prompt the user to select one.
|
122
126
|
userDBName = await (0, prompts_1.select)({
|
123
|
-
message:
|
127
|
+
message: 'Choose a database instance for this app:',
|
124
128
|
choices: userDBs.map((db) => ({
|
125
129
|
name: db.PostgresInstanceName,
|
126
130
|
value: db.PostgresInstanceName,
|
@@ -136,11 +140,11 @@ async function chooseAppDBServer(logger, host, userCredentials) {
|
|
136
140
|
}
|
137
141
|
exports.chooseAppDBServer = chooseAppDBServer;
|
138
142
|
async function createUserRole(logger, host, userCredentials, dbName) {
|
139
|
-
const bearerToken =
|
143
|
+
const bearerToken = 'Bearer ' + userCredentials.token;
|
140
144
|
try {
|
141
145
|
await axios_1.default.post(`https://${host}/v1alpha1/${userCredentials.organization}/databases/userdb/${dbName}/createuserdbrole`, {}, {
|
142
146
|
headers: {
|
143
|
-
|
147
|
+
'Content-Type': 'application/json',
|
144
148
|
Authorization: bearerToken,
|
145
149
|
},
|
146
150
|
});
|
@@ -160,11 +164,11 @@ async function createUserRole(logger, host, userCredentials, dbName) {
|
|
160
164
|
exports.createUserRole = createUserRole;
|
161
165
|
async function getUserDBCredentials(logger, host, userCredentials, dbName) {
|
162
166
|
// List existing database instances.
|
163
|
-
const bearerToken =
|
167
|
+
const bearerToken = 'Bearer ' + userCredentials.token;
|
164
168
|
try {
|
165
169
|
const res = await axios_1.default.get(`https://${host}/v1alpha1/${userCredentials.organization}/databases/userdb/${dbName}/credentials`, {
|
166
170
|
headers: {
|
167
|
-
|
171
|
+
'Content-Type': 'application/json',
|
168
172
|
Authorization: bearerToken,
|
169
173
|
},
|
170
174
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"databases.js","sourceRoot":"","sources":["../../../../src/dbos-runtime/cloudutils/databases.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0C;AAC1C,
|
1
|
+
{"version":3,"file":"databases.js","sourceRoot":"","sources":["../../../../src/dbos-runtime/cloudutils/databases.ts"],"names":[],"mappings":"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"}
|
@@ -6,10 +6,10 @@ const child_process_1 = require("child_process");
|
|
6
6
|
function runCommand(command, logger, cwd) {
|
7
7
|
return new Promise((resolve, reject) => {
|
8
8
|
// Split the command into the executable and its arguments
|
9
|
-
const [executable, ...args] = command.split(
|
9
|
+
const [executable, ...args] = command.split(' ');
|
10
10
|
// Spawn a child process
|
11
11
|
const child = (0, child_process_1.spawn)(executable, args, {
|
12
|
-
stdio:
|
12
|
+
stdio: 'inherit', // Forward stdin, stdout, stderr
|
13
13
|
shell: true, // Use the shell to interpret the command
|
14
14
|
cwd,
|
15
15
|
});
|
@@ -20,23 +20,23 @@ function runCommand(command, logger, cwd) {
|
|
20
20
|
process.kill(child.pid, signal);
|
21
21
|
}
|
22
22
|
};
|
23
|
-
process.on(
|
24
|
-
process.on(
|
23
|
+
process.on('SIGTERM', () => handleSignal('SIGTERM'));
|
24
|
+
process.on('SIGINT', () => handleSignal('SIGINT'));
|
25
25
|
// Cleanup when child exits
|
26
|
-
child.on(
|
27
|
-
if (code === 0 || signal ===
|
28
|
-
logger.info(`Process exited successfully with code ${code ??
|
26
|
+
child.on('exit', (code, signal) => {
|
27
|
+
if (code === 0 || signal === 'SIGTERM' || signal === 'SIGINT') {
|
28
|
+
logger.info(`Process exited successfully with code ${code ?? 'unknown'} or signal ${signal ?? 'unknown'}`);
|
29
29
|
resolve(0);
|
30
30
|
}
|
31
31
|
else {
|
32
|
-
const errorMsg = `Process exited with code ${code ??
|
32
|
+
const errorMsg = `Process exited with code ${code ?? 'unknown'} or signal ${signal ?? 'unknown'}`;
|
33
33
|
logger.error(errorMsg);
|
34
34
|
// eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
|
35
35
|
reject(code);
|
36
36
|
}
|
37
37
|
});
|
38
38
|
// Must be caught by the caller
|
39
|
-
child.on(
|
39
|
+
child.on('error', (error) => {
|
40
40
|
logger.error(`Failed to start process: ${error.message}`);
|
41
41
|
// eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
|
42
42
|
reject(1);
|
@@ -1,9 +1,9 @@
|
|
1
|
-
import { DBOSConfig } from
|
2
|
-
import { PoolConfig } from
|
3
|
-
import YAML from
|
4
|
-
import { DBOSRuntimeConfig } from
|
5
|
-
import { UserDatabaseName } from
|
6
|
-
import { TelemetryConfig } from
|
1
|
+
import { DBOSConfig } from '../dbos-executor';
|
2
|
+
import { PoolConfig } from 'pg';
|
3
|
+
import YAML from 'yaml';
|
4
|
+
import { DBOSRuntimeConfig } from './runtime';
|
5
|
+
import { UserDatabaseName } from '../user_database';
|
6
|
+
import { TelemetryConfig } from '../telemetry';
|
7
7
|
export declare const dbosConfigFilePath = "dbos-config.yaml";
|
8
8
|
export interface ConfigFile {
|
9
9
|
name?: string;
|
@@ -54,7 +54,7 @@ export interface ParseOptions {
|
|
54
54
|
configfile?: string;
|
55
55
|
appDir?: string;
|
56
56
|
appVersion?: string | boolean;
|
57
|
-
|
57
|
+
silent?: boolean;
|
58
58
|
}
|
59
59
|
export declare function parseConfigFile(cliOptions?: ParseOptions): [DBOSConfig, DBOSRuntimeConfig];
|
60
60
|
//# sourceMappingURL=config.d.ts.map
|
@@ -1 +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;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAqB,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/dbos-runtime/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAqB,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAS/C,eAAO,MAAM,kBAAkB,qBAAqB,CAAC;AAKrD,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,uBAAuB,CAAC,EAAE,MAAM,CAAC;QACjC,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,GAAG,CAAC,EAAE,OAAO,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,aAAa,CAAC,EAAE,gBAAgB,CAAC;QACjC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,CAAC;IACF,IAAI,CAAC,EAAE;QACL,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;KAC5B,CAAC;IACF,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,aAAa,CAAC,EAAE,iBAAiB,CAAC;CACnC;AAOD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAKzD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,UAAU,CAajE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,QAWhF;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAetE;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,YAAY,cAiEpF;AAkBD,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAMD,wBAAgB,eAAe,CAAC,UAAU,CAAC,EAAE,YAAY,GAAG,CAAC,UAAU,EAAE,iBAAiB,CAAC,CA2F1F"}
|