@dbos-inc/dbos-sdk 2.8.13-preview → 2.8.18-preview
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dbos-config.schema.json +0 -4
- package/dist/dbos-config.schema.json +0 -4
- package/dist/schemas/system_db_schema.d.ts +1 -0
- package/dist/schemas/system_db_schema.d.ts.map +1 -1
- package/dist/schemas/user_db_schema.d.ts +1 -0
- package/dist/schemas/user_db_schema.d.ts.map +1 -1
- package/dist/schemas/user_db_schema.js.map +1 -1
- package/dist/src/client.d.ts.map +1 -1
- package/dist/src/client.js +14 -17
- package/dist/src/client.js.map +1 -1
- package/dist/src/dbos-executor.d.ts +7 -4
- package/dist/src/dbos-executor.d.ts.map +1 -1
- package/dist/src/dbos-executor.js +132 -91
- package/dist/src/dbos-executor.js.map +1 -1
- package/dist/src/dbos-runtime/cli.d.ts.map +1 -1
- package/dist/src/dbos-runtime/cli.js +10 -0
- package/dist/src/dbos-runtime/cli.js.map +1 -1
- package/dist/src/dbos-runtime/config.d.ts +24 -2
- package/dist/src/dbos-runtime/config.d.ts.map +1 -1
- package/dist/src/dbos-runtime/config.js +151 -71
- package/dist/src/dbos-runtime/config.js.map +1 -1
- package/dist/src/dbos-runtime/docker_pg_helper.d.ts +21 -0
- package/dist/src/dbos-runtime/docker_pg_helper.d.ts.map +1 -0
- package/dist/src/dbos-runtime/docker_pg_helper.js +137 -0
- package/dist/src/dbos-runtime/docker_pg_helper.js.map +1 -0
- package/dist/src/dbos-runtime/migrate.d.ts.map +1 -1
- package/dist/src/dbos-runtime/migrate.js +8 -6
- package/dist/src/dbos-runtime/migrate.js.map +1 -1
- package/dist/src/dbos-runtime/runtime.d.ts.map +1 -1
- package/dist/src/dbos-runtime/runtime.js +0 -2
- 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 +14 -16
- package/dist/src/dbos-runtime/workflow_management.js.map +1 -1
- package/dist/src/dbos.d.ts +1 -0
- package/dist/src/dbos.d.ts.map +1 -1
- package/dist/src/dbos.js +41 -22
- package/dist/src/dbos.js.map +1 -1
- package/dist/src/error.d.ts +7 -0
- package/dist/src/error.d.ts.map +1 -1
- package/dist/src/error.js +15 -1
- 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/server.d.ts.map +1 -1
- package/dist/src/httpServer/server.js +8 -19
- package/dist/src/httpServer/server.js.map +1 -1
- package/dist/src/system_database.d.ts +84 -53
- package/dist/src/system_database.d.ts.map +1 -1
- package/dist/src/system_database.js +195 -296
- package/dist/src/system_database.js.map +1 -1
- package/dist/src/user_database.d.ts.map +1 -1
- package/dist/src/user_database.js +8 -2
- package/dist/src/user_database.js.map +1 -1
- package/dist/src/workflow.d.ts +3 -2
- package/dist/src/workflow.d.ts.map +1 -1
- package/dist/src/workflow.js +36 -26
- package/dist/src/workflow.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/dist/src/dbos-runtime/db_connection.d.ts +0 -10
- package/dist/src/dbos-runtime/db_connection.d.ts.map +0 -1
- package/dist/src/dbos-runtime/db_connection.js +0 -59
- package/dist/src/dbos-runtime/db_connection.js.map +0 -1
- package/dist/src/dbos-runtime/db_wizard.d.ts +0 -3
- package/dist/src/dbos-runtime/db_wizard.d.ts.map +0 -1
- package/dist/src/dbos-runtime/db_wizard.js +0 -170
- package/dist/src/dbos-runtime/db_wizard.js.map +0 -1
package/package.json
CHANGED
@@ -1,10 +0,0 @@
|
|
1
|
-
export interface DatabaseConnection {
|
2
|
-
hostname: string | null;
|
3
|
-
port: number | null;
|
4
|
-
username: string | null;
|
5
|
-
password: string | null;
|
6
|
-
local_suffix: boolean | null;
|
7
|
-
}
|
8
|
-
export declare function loadDatabaseConnection(): DatabaseConnection;
|
9
|
-
export declare function saveDatabaseConnection(connection: DatabaseConnection): void;
|
10
|
-
//# sourceMappingURL=db_connection.d.ts.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"db_connection.d.ts","sourceRoot":"","sources":["../../../src/dbos-runtime/db_connection.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,YAAY,EAAE,OAAO,GAAG,IAAI,CAAC;CAC9B;AAED,wBAAgB,sBAAsB,IAAI,kBAAkB,CAoB3D;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,kBAAkB,GAAG,IAAI,CAG3E"}
|
@@ -1,59 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
-
if (k2 === undefined) k2 = k;
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
-
}
|
8
|
-
Object.defineProperty(o, k2, desc);
|
9
|
-
}) : (function(o, m, k, k2) {
|
10
|
-
if (k2 === undefined) k2 = k;
|
11
|
-
o[k2] = m[k];
|
12
|
-
}));
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
15
|
-
}) : function(o, v) {
|
16
|
-
o["default"] = v;
|
17
|
-
});
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
19
|
-
if (mod && mod.__esModule) return mod;
|
20
|
-
var result = {};
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
22
|
-
__setModuleDefault(result, mod);
|
23
|
-
return result;
|
24
|
-
};
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
26
|
-
exports.saveDatabaseConnection = exports.loadDatabaseConnection = void 0;
|
27
|
-
const path = __importStar(require("path"));
|
28
|
-
const fs = __importStar(require("fs"));
|
29
|
-
const utils_1 = require("../utils");
|
30
|
-
const DB_CONNECTION_PATH = path.join('.dbos', 'db_connection');
|
31
|
-
function loadDatabaseConnection() {
|
32
|
-
try {
|
33
|
-
const rawData = (0, utils_1.readFileSync)(DB_CONNECTION_PATH, 'utf8');
|
34
|
-
const data = JSON.parse(rawData);
|
35
|
-
return {
|
36
|
-
hostname: data.hostname ?? null,
|
37
|
-
port: data.port ?? null,
|
38
|
-
username: data.username ?? null,
|
39
|
-
password: data.password ?? null,
|
40
|
-
local_suffix: data.local_suffix ?? null,
|
41
|
-
};
|
42
|
-
}
|
43
|
-
catch (e) {
|
44
|
-
return {
|
45
|
-
hostname: null,
|
46
|
-
port: null,
|
47
|
-
username: null,
|
48
|
-
password: null,
|
49
|
-
local_suffix: null,
|
50
|
-
};
|
51
|
-
}
|
52
|
-
}
|
53
|
-
exports.loadDatabaseConnection = loadDatabaseConnection;
|
54
|
-
function saveDatabaseConnection(connection) {
|
55
|
-
fs.mkdirSync('.dbos', { recursive: true });
|
56
|
-
fs.writeFileSync(DB_CONNECTION_PATH, JSON.stringify(connection));
|
57
|
-
}
|
58
|
-
exports.saveDatabaseConnection = saveDatabaseConnection;
|
59
|
-
//# sourceMappingURL=db_connection.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"db_connection.js","sourceRoot":"","sources":["../../../src/dbos-runtime/db_connection.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA6B;AAC7B,uCAAyB;AACzB,oCAAwC;AAExC,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;AAU/D,SAAgB,sBAAsB;IACpC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAA,oBAAY,EAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAuB,CAAC;QACvD,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI;YAC/B,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI;YAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI;YAC/B,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI;SACxC,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,IAAI;SACnB,CAAC;IACJ,CAAC;AACH,CAAC;AApBD,wDAoBC;AAED,SAAgB,sBAAsB,CAAC,UAA8B;IACnE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,EAAE,CAAC,aAAa,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;AACnE,CAAC;AAHD,wDAGC"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"db_wizard.d.ts","sourceRoot":"","sources":["../../../src/dbos-runtime/db_wizard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAE,MAAM,IAAI,CAAC;AAWtC,wBAAsB,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CA2F3E"}
|
@@ -1,170 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.db_wizard = void 0;
|
4
|
-
const pg_1 = require("pg");
|
5
|
-
const error_1 = require("../error");
|
6
|
-
const utils_1 = require("../utils");
|
7
|
-
const cloudutils_1 = require("./cloudutils/cloudutils");
|
8
|
-
const databases_1 = require("./cloudutils/databases");
|
9
|
-
const util_1 = require("util");
|
10
|
-
const prompts_1 = require("@inquirer/prompts");
|
11
|
-
const child_process_1 = require("child_process");
|
12
|
-
const db_connection_1 = require("./db_connection");
|
13
|
-
async function db_wizard(poolConfig) {
|
14
|
-
const logger = (0, cloudutils_1.getLogger)();
|
15
|
-
// 1. Check the connectivity to the database. Return if successful. If cannot connect, continue to the following steps.
|
16
|
-
const dbConnectionError = await checkDbConnectivity(poolConfig);
|
17
|
-
if (dbConnectionError === null) {
|
18
|
-
return poolConfig;
|
19
|
-
}
|
20
|
-
// 2. If the error is due to password authentication or the configuration is non-default, surface the error and exit.
|
21
|
-
let errorStr = dbConnectionError.toString();
|
22
|
-
if (dbConnectionError instanceof AggregateError) {
|
23
|
-
let combinedMessage = 'AggregateError: ';
|
24
|
-
for (const error of dbConnectionError.errors) {
|
25
|
-
combinedMessage += `${error.toString()}; `;
|
26
|
-
}
|
27
|
-
errorStr = combinedMessage;
|
28
|
-
}
|
29
|
-
if (errorStr.includes('password authentication failed') ||
|
30
|
-
errorStr.includes('28P01') ||
|
31
|
-
errorStr.includes('no password supplied') ||
|
32
|
-
errorStr.includes('client password must be a string')) {
|
33
|
-
throw new error_1.DBOSInitializationError(`Could not connect to Postgres: password authentication failed: ${errorStr}`);
|
34
|
-
}
|
35
|
-
// If the provided poolConfig database hostname/port/username are set to defaults, skip the wizard.
|
36
|
-
if (poolConfig.host !== 'localhost' || poolConfig.port !== 5432 || poolConfig.user !== 'postgres') {
|
37
|
-
throw new error_1.DBOSInitializationError(`Could not connect to the database. Exception: ${errorStr}`);
|
38
|
-
}
|
39
|
-
logger.warn('Postgres not detected locally');
|
40
|
-
// 3. If the database config is the default one, check if the user has Docker properly installed.
|
41
|
-
logger.info('Attempting to start Postgres via Docker');
|
42
|
-
const hasDocker = await checkDockerInstalled();
|
43
|
-
// 4. If Docker is installed, prompt the user to start a local Docker based Postgres, and then set the PGPASSWORD to 'dbos' and try to connect to the database.
|
44
|
-
let dockerStarted = false;
|
45
|
-
if (hasDocker) {
|
46
|
-
dockerStarted = await startDockerPostgres(logger, poolConfig);
|
47
|
-
}
|
48
|
-
else {
|
49
|
-
logger.warn('Docker not detected locally');
|
50
|
-
}
|
51
|
-
// 5. If no Docker, then prompt the user to log in to DBOS Cloud and provision a DB there. Wait for the remote DB to be ready, and then create a copy of the original config file, and then load the remote connection string to the local config file.
|
52
|
-
let localSuffix = false;
|
53
|
-
if (!dockerStarted) {
|
54
|
-
logger.info('Attempting to connect to Postgres via DBOS Cloud');
|
55
|
-
const cred = await (0, cloudutils_1.getCloudCredentials)(cloudutils_1.DBOSCloudHost, logger);
|
56
|
-
const dbName = await (0, databases_1.chooseAppDBServer)(logger, cloudutils_1.DBOSCloudHost, cred);
|
57
|
-
const db = await (0, databases_1.getUserDBInfo)(cloudutils_1.DBOSCloudHost, dbName, cred);
|
58
|
-
if (!db.IsLinked) {
|
59
|
-
await (0, databases_1.createUserRole)(logger, cloudutils_1.DBOSCloudHost, cred, db.PostgresInstanceName);
|
60
|
-
}
|
61
|
-
poolConfig.host = db.HostName;
|
62
|
-
poolConfig.port = db.Port;
|
63
|
-
if (db.SupabaseReference) {
|
64
|
-
poolConfig.user = `postgres.${db.SupabaseReference}`;
|
65
|
-
poolConfig.password = await (0, prompts_1.password)({
|
66
|
-
message: 'Enter your Supabase database password: ',
|
67
|
-
mask: '*',
|
68
|
-
});
|
69
|
-
}
|
70
|
-
else {
|
71
|
-
const dbCredentials = await (0, databases_1.getUserDBCredentials)(logger, cloudutils_1.DBOSCloudHost, cred, db.PostgresInstanceName);
|
72
|
-
poolConfig.user = db.DatabaseUsername;
|
73
|
-
poolConfig.password = dbCredentials.Password;
|
74
|
-
}
|
75
|
-
poolConfig.database = `${poolConfig.database}_local`;
|
76
|
-
poolConfig.ssl = { rejectUnauthorized: false };
|
77
|
-
localSuffix = true;
|
78
|
-
const checkError = await checkDbConnectivity(poolConfig);
|
79
|
-
if (checkError !== null) {
|
80
|
-
throw new error_1.DBOSInitializationError(`Could not connect to the database. Exception: ${checkError.toString()}`);
|
81
|
-
}
|
82
|
-
}
|
83
|
-
// 6. Save the config to the database connection file and return the updated config.
|
84
|
-
const databaseConnection = {
|
85
|
-
hostname: poolConfig.host,
|
86
|
-
port: poolConfig.port,
|
87
|
-
username: poolConfig.user,
|
88
|
-
password: poolConfig.password,
|
89
|
-
local_suffix: localSuffix,
|
90
|
-
};
|
91
|
-
(0, db_connection_1.saveDatabaseConnection)(databaseConnection);
|
92
|
-
return poolConfig;
|
93
|
-
}
|
94
|
-
exports.db_wizard = db_wizard;
|
95
|
-
async function checkDbConnectivity(config) {
|
96
|
-
// Add a default connection timeout if not specified
|
97
|
-
const configWithTimeout = {
|
98
|
-
...config,
|
99
|
-
connectionTimeoutMillis: config.connectionTimeoutMillis ?? 2000, // 2 second timeout
|
100
|
-
database: 'postgres',
|
101
|
-
};
|
102
|
-
const pool = new pg_1.Pool(configWithTimeout);
|
103
|
-
try {
|
104
|
-
const client = await pool.connect();
|
105
|
-
try {
|
106
|
-
await client.query('SELECT 1;');
|
107
|
-
return null;
|
108
|
-
}
|
109
|
-
catch (error) {
|
110
|
-
return error instanceof Error ? error : new Error('Unknown database error');
|
111
|
-
}
|
112
|
-
finally {
|
113
|
-
client.release();
|
114
|
-
}
|
115
|
-
}
|
116
|
-
catch (error) {
|
117
|
-
return error instanceof Error ? error : new Error('Failed to connect to database');
|
118
|
-
}
|
119
|
-
finally {
|
120
|
-
// End the pool
|
121
|
-
await pool.end();
|
122
|
-
}
|
123
|
-
}
|
124
|
-
const execAsync = (0, util_1.promisify)(child_process_1.exec);
|
125
|
-
async function startDockerPostgres(logger, poolConfig) {
|
126
|
-
logger.info('Starting a Postgres Docker container...');
|
127
|
-
poolConfig.password = 'dbos';
|
128
|
-
const containerName = 'dbos-db';
|
129
|
-
const pgData = '/var/lib/postgresql/data';
|
130
|
-
try {
|
131
|
-
// Create and start the container
|
132
|
-
const dockerCmd = `docker run -d \
|
133
|
-
--name ${containerName} \
|
134
|
-
-e POSTGRES_PASSWORD=${poolConfig.password} \
|
135
|
-
-e PGDATA=${pgData} \
|
136
|
-
-p ${poolConfig.port}:5432 \
|
137
|
-
-v ${pgData}:${pgData}:rw \
|
138
|
-
--rm \
|
139
|
-
pgvector/pgvector:pg16`;
|
140
|
-
await execAsync(dockerCmd);
|
141
|
-
// Wait for PostgreSQL to be ready
|
142
|
-
let attempts = 30;
|
143
|
-
while (attempts > 0) {
|
144
|
-
if (attempts % 5 === 0) {
|
145
|
-
logger.info('Waiting for Postgres Docker container to start...');
|
146
|
-
}
|
147
|
-
if ((await checkDbConnectivity(poolConfig)) === null) {
|
148
|
-
return true;
|
149
|
-
}
|
150
|
-
attempts--;
|
151
|
-
await (0, utils_1.sleepms)(1000);
|
152
|
-
}
|
153
|
-
logger.error('Failed to start Postgres Docker container.');
|
154
|
-
return false;
|
155
|
-
}
|
156
|
-
catch (error) {
|
157
|
-
logger.error('Error starting container:', error);
|
158
|
-
return false;
|
159
|
-
}
|
160
|
-
}
|
161
|
-
async function checkDockerInstalled() {
|
162
|
-
try {
|
163
|
-
await execAsync('docker --version');
|
164
|
-
return true;
|
165
|
-
}
|
166
|
-
catch (error) {
|
167
|
-
return false;
|
168
|
-
}
|
169
|
-
}
|
170
|
-
//# sourceMappingURL=db_wizard.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"db_wizard.js","sourceRoot":"","sources":["../../../src/dbos-runtime/db_wizard.ts"],"names":[],"mappings":"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"}
|