@event-driven-io/dumbo 0.13.0-beta.26 → 0.13.0-beta.28
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/dist/{chunk-OAPJ2JZR.js → chunk-IWGQR5FU.js} +21 -28
- package/dist/chunk-IWGQR5FU.js.map +1 -0
- package/dist/{chunk-ORXYDMK3.cjs → chunk-MDO3F654.cjs} +21 -28
- package/dist/chunk-MDO3F654.cjs.map +1 -0
- package/dist/cloudflare.cjs +11 -11
- package/dist/cloudflare.js +1 -1
- package/dist/sqlite.cjs +2 -2
- package/dist/sqlite.js +1 -1
- package/dist/sqlite3.cjs +39 -36
- package/dist/sqlite3.cjs.map +1 -1
- package/dist/sqlite3.js +25 -22
- package/dist/sqlite3.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-OAPJ2JZR.js.map +0 -1
- package/dist/chunk-ORXYDMK3.cjs.map +0 -1
package/dist/sqlite3.cjs
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
|
|
25
|
-
var
|
|
25
|
+
var _chunkMDO3F654cjs = require('./chunk-MDO3F654.cjs');
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
|
|
@@ -41,9 +41,9 @@ var _sqlite3 = require('sqlite3'); var _sqlite32 = _interopRequireDefault(_sqlit
|
|
|
41
41
|
|
|
42
42
|
// src/storage/sqlite/core/connections/pragmas.ts
|
|
43
43
|
var mergePragmaOptions = (connectionString, userOptions) => {
|
|
44
|
-
const connectionStringPragmas =
|
|
44
|
+
const connectionStringPragmas = _chunkMDO3F654cjs.parsePragmasFromConnectionString.call(void 0, connectionString);
|
|
45
45
|
return {
|
|
46
|
-
...
|
|
46
|
+
..._chunkMDO3F654cjs.DEFAULT_SQLITE_PRAGMA_OPTIONS,
|
|
47
47
|
...connectionStringPragmas,
|
|
48
48
|
...userOptions
|
|
49
49
|
};
|
|
@@ -87,36 +87,39 @@ var sqlite3Client = (options) => {
|
|
|
87
87
|
let db;
|
|
88
88
|
let isClosed = false;
|
|
89
89
|
const { serializer } = options;
|
|
90
|
-
const connectionString = _nullishCoalesce(_nullishCoalesce(options.fileName, () => ( options.connectionString)), () => (
|
|
90
|
+
const connectionString = _nullishCoalesce(_nullishCoalesce(options.fileName, () => ( options.connectionString)), () => ( _chunkMDO3F654cjs.InMemorySQLiteDatabase));
|
|
91
91
|
const finalPragmas = mergePragmaOptions(
|
|
92
92
|
String(connectionString),
|
|
93
93
|
options.pragmaOptions
|
|
94
94
|
);
|
|
95
|
-
const databaseMode = options.readonly ? _sqlite32.default.OPEN_URI | _sqlite32.default.OPEN_READONLY : _sqlite32.default.OPEN_URI | _sqlite32.default.OPEN_READWRITE | _sqlite32.default.OPEN_CREATE;
|
|
96
95
|
const connectionPragmas = buildConnectionPragmaStatements(finalPragmas);
|
|
97
96
|
const connect = () => db ? Promise.resolve() : new Promise((resolve, reject) => {
|
|
98
97
|
try {
|
|
99
|
-
db = new _sqlite32.default.Database(
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
applyPragmas(
|
|
107
|
-
db,
|
|
108
|
-
connectionPragmas.filter((p) => p.pragma !== "busy_timeout")
|
|
109
|
-
).then(async () => {
|
|
110
|
-
if (options.skipDatabasePragmas) return;
|
|
111
|
-
const databasePragmas = buildDatabasePragmaStatements(finalPragmas);
|
|
112
|
-
for (const { pragma, value } of databasePragmas) {
|
|
113
|
-
const current = await queryPragma(db, pragma);
|
|
114
|
-
if (current.toUpperCase() !== String(value).toUpperCase()) {
|
|
115
|
-
await applyPragma(db, pragma, value);
|
|
116
|
-
}
|
|
98
|
+
db = new _sqlite32.default.Database(
|
|
99
|
+
connectionString,
|
|
100
|
+
_sqlite32.default.OPEN_URI | _sqlite32.default.OPEN_READWRITE | _sqlite32.default.OPEN_CREATE,
|
|
101
|
+
(err) => {
|
|
102
|
+
if (err) {
|
|
103
|
+
reject(err);
|
|
104
|
+
return;
|
|
117
105
|
}
|
|
118
|
-
|
|
119
|
-
|
|
106
|
+
const busyTimeout = _nullishCoalesce(finalPragmas.busy_timeout, () => ( _chunkMDO3F654cjs.DEFAULT_SQLITE_PRAGMA_OPTIONS.busy_timeout));
|
|
107
|
+
db.configure("busyTimeout", busyTimeout);
|
|
108
|
+
applyPragmas(
|
|
109
|
+
db,
|
|
110
|
+
connectionPragmas.filter((p) => p.pragma !== "busy_timeout")
|
|
111
|
+
).then(async () => {
|
|
112
|
+
if (options.skipDatabasePragmas) return;
|
|
113
|
+
const databasePragmas = buildDatabasePragmaStatements(finalPragmas);
|
|
114
|
+
for (const { pragma, value } of databasePragmas) {
|
|
115
|
+
const current = await queryPragma(db, pragma);
|
|
116
|
+
if (current.toUpperCase() !== String(value).toUpperCase()) {
|
|
117
|
+
await applyPragma(db, pragma, value);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}).then(() => resolve()).catch(reject);
|
|
121
|
+
}
|
|
122
|
+
);
|
|
120
123
|
} catch (error) {
|
|
121
124
|
reject(error);
|
|
122
125
|
}
|
|
@@ -199,7 +202,7 @@ var sqlite3Client = (options) => {
|
|
|
199
202
|
return Promise.resolve();
|
|
200
203
|
},
|
|
201
204
|
query: async (sql, _options) => {
|
|
202
|
-
const { query, params } =
|
|
205
|
+
const { query, params } = _chunkMDO3F654cjs.sqliteFormatter.format(sql, {
|
|
203
206
|
serializer
|
|
204
207
|
});
|
|
205
208
|
const result = await executeQuery(
|
|
@@ -211,7 +214,7 @@ var sqlite3Client = (options) => {
|
|
|
211
214
|
batchQuery: async (sqls, _options) => {
|
|
212
215
|
const results = [];
|
|
213
216
|
for (const sql of sqls) {
|
|
214
|
-
const { query, params } =
|
|
217
|
+
const { query, params } = _chunkMDO3F654cjs.sqliteFormatter.format(sql, {
|
|
215
218
|
serializer
|
|
216
219
|
});
|
|
217
220
|
const result = await executeQuery(
|
|
@@ -223,7 +226,7 @@ var sqlite3Client = (options) => {
|
|
|
223
226
|
return results;
|
|
224
227
|
},
|
|
225
228
|
command: async (sql, options2) => {
|
|
226
|
-
const { query, params } =
|
|
229
|
+
const { query, params } = _chunkMDO3F654cjs.sqliteFormatter.format(sql, {
|
|
227
230
|
serializer
|
|
228
231
|
});
|
|
229
232
|
return executeCommand(
|
|
@@ -235,7 +238,7 @@ var sqlite3Client = (options) => {
|
|
|
235
238
|
batchCommand: async (sqls, options2) => {
|
|
236
239
|
const results = [];
|
|
237
240
|
for (let i = 0; i < sqls.length; i++) {
|
|
238
|
-
const { query, params } =
|
|
241
|
+
const { query, params } = _chunkMDO3F654cjs.sqliteFormatter.format(sqls[i], {
|
|
239
242
|
serializer
|
|
240
243
|
});
|
|
241
244
|
const result = await executeCommand(
|
|
@@ -272,7 +275,7 @@ var checkConnection = async (fileName, serializer) => {
|
|
|
272
275
|
await client.close();
|
|
273
276
|
}
|
|
274
277
|
};
|
|
275
|
-
var sqlite3Connection = (options) =>
|
|
278
|
+
var sqlite3Connection = (options) => _chunkMDO3F654cjs.sqliteConnection.call(void 0, {
|
|
276
279
|
type: "Client",
|
|
277
280
|
driverType: SQLite3DriverType,
|
|
278
281
|
sqliteClientFactory: (connectionOptions) => {
|
|
@@ -289,8 +292,8 @@ var sqlite3Connection = (options) => _chunkORXYDMK3cjs.sqliteConnection.call(voi
|
|
|
289
292
|
});
|
|
290
293
|
|
|
291
294
|
// src/storage/sqlite/sqlite3/index.ts
|
|
292
|
-
var sqlite3Pool = (options) =>
|
|
293
|
-
|
|
295
|
+
var sqlite3Pool = (options) => _chunkMDO3F654cjs.sqlitePool.call(void 0,
|
|
296
|
+
_chunkMDO3F654cjs.toSqlitePoolOptions.call(void 0, {
|
|
294
297
|
...options,
|
|
295
298
|
driverType: SQLite3DriverType,
|
|
296
299
|
..."connection" in options ? {} : {
|
|
@@ -304,7 +307,7 @@ var sqlite3Pool = (options) => _chunkORXYDMK3cjs.sqlitePool.call(void 0,
|
|
|
304
307
|
);
|
|
305
308
|
var tryParseConnectionString = (connectionString) => {
|
|
306
309
|
try {
|
|
307
|
-
return
|
|
310
|
+
return _chunkMDO3F654cjs.SQLiteConnectionString.call(void 0, connectionString);
|
|
308
311
|
} catch (e) {
|
|
309
312
|
return null;
|
|
310
313
|
}
|
|
@@ -312,8 +315,8 @@ var tryParseConnectionString = (connectionString) => {
|
|
|
312
315
|
var sqlite3DumboDriver = {
|
|
313
316
|
driverType: SQLite3DriverType,
|
|
314
317
|
createPool: (options) => sqlite3Pool(options),
|
|
315
|
-
sqlFormatter:
|
|
316
|
-
defaultMigratorOptions:
|
|
318
|
+
sqlFormatter: _chunkMDO3F654cjs.sqliteFormatter,
|
|
319
|
+
defaultMigratorOptions: _chunkMDO3F654cjs.DefaultSQLiteMigratorOptions,
|
|
317
320
|
canHandle: _chunkVIME2LPVcjs.canHandleDriverWithConnectionString.call(void 0,
|
|
318
321
|
SQLite3DriverType,
|
|
319
322
|
tryParseConnectionString
|
|
@@ -358,5 +361,5 @@ useSqlite3DumboDriver();
|
|
|
358
361
|
|
|
359
362
|
|
|
360
363
|
|
|
361
|
-
exports.DEFAULT_SQLITE_PRAGMA_OPTIONS =
|
|
364
|
+
exports.DEFAULT_SQLITE_PRAGMA_OPTIONS = _chunkMDO3F654cjs.DEFAULT_SQLITE_PRAGMA_OPTIONS; exports.DefaultSQLiteMigratorOptions = _chunkMDO3F654cjs.DefaultSQLiteMigratorOptions; exports.InMemorySQLiteDatabase = _chunkMDO3F654cjs.InMemorySQLiteDatabase; exports.SQLite3DriverType = SQLite3DriverType; exports.SQLiteConnectionString = _chunkMDO3F654cjs.SQLiteConnectionString; exports.SQLiteDatabaseName = _chunkMDO3F654cjs.SQLiteDatabaseName; exports.checkConnection = checkConnection; exports.defaultSQLiteDatabase = _chunkWBQGX4V6cjs.defaultSQLiteDatabase; exports.isInMemoryDatabase = _chunkMDO3F654cjs.isInMemoryDatabase; exports.isSQLiteError = _chunkMDO3F654cjs.isSQLiteError; exports.mapSqliteError = _chunkMDO3F654cjs.mapSqliteError; exports.parsePragmasFromConnectionString = _chunkMDO3F654cjs.parsePragmasFromConnectionString; exports.sqlite3Client = sqlite3Client; exports.sqlite3Connection = sqlite3Connection; exports.sqlite3DumboDriver = sqlite3DumboDriver; exports.sqlite3Pool = sqlite3Pool; exports.sqliteAlwaysNewConnectionPool = _chunkMDO3F654cjs.sqliteAlwaysNewConnectionPool; exports.sqliteAmbientClientConnection = _chunkMDO3F654cjs.sqliteAmbientClientConnection; exports.sqliteAmbientConnectionPool = _chunkMDO3F654cjs.sqliteAmbientConnectionPool; exports.sqliteClientConnection = _chunkMDO3F654cjs.sqliteClientConnection; exports.sqliteConnection = _chunkMDO3F654cjs.sqliteConnection; exports.sqliteExecute = _chunkMDO3F654cjs.sqliteExecute; exports.sqliteFormatter = _chunkMDO3F654cjs.sqliteFormatter; exports.sqliteMetadata = _chunkWBQGX4V6cjs.sqliteMetadata; exports.sqlitePool = _chunkMDO3F654cjs.sqlitePool; exports.sqlitePoolClientConnection = _chunkMDO3F654cjs.sqlitePoolClientConnection; exports.sqliteSQLExecutor = _chunkMDO3F654cjs.sqliteSQLExecutor; exports.sqliteSingletonConnectionPool = _chunkMDO3F654cjs.sqliteSingletonConnectionPool; exports.sqliteTransaction = _chunkMDO3F654cjs.sqliteTransaction; exports.tableExists = _chunkWBQGX4V6cjs.tableExists; exports.toSqlitePoolOptions = _chunkMDO3F654cjs.toSqlitePoolOptions; exports.transactionNestingCounter = _chunkMDO3F654cjs.transactionNestingCounter; exports.useSqlite3DumboDriver = useSqlite3DumboDriver;
|
|
362
365
|
//# sourceMappingURL=sqlite3.cjs.map
|
package/dist/sqlite3.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/Pongo/Pongo/src/packages/dumbo/dist/sqlite3.cjs","../src/storage/sqlite/sqlite3/connections/connection.ts","../src/storage/sqlite/core/connections/pragmas.ts","../src/storage/sqlite/sqlite3/index.ts"],"names":["options"],"mappings":"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","file":"/home/runner/work/Pongo/Pongo/src/packages/dumbo/dist/sqlite3.cjs","sourcesContent":[null,"import sqlite3 from 'sqlite3';\nimport type { JSONSerializer } from '../../../../core';\nimport {\n BatchCommandNoChangesError,\n SQL,\n type Connection,\n type QueryResult,\n type QueryResultRow,\n type SQLQueryOptions,\n} from '../../../../core';\nimport type {\n SQLiteClient,\n SQLiteClientOrPoolClient,\n SQLiteConnectionOptions,\n SQLiteDriverType,\n SQLiteFileNameOrConnectionString,\n SQLiteTransaction,\n SQLiteTransactionOptions,\n} from '../../core';\nimport {\n DEFAULT_SQLITE_PRAGMA_OPTIONS,\n InMemorySQLiteDatabase,\n sqliteConnection,\n type BatchSQLiteCommandOptions,\n type SQLiteClientOptions,\n type SQLiteCommandOptions,\n type SQLiteParameters,\n} from '../../core/connections';\nimport {\n buildConnectionPragmaStatements,\n buildDatabasePragmaStatements,\n mergePragmaOptions,\n} from '../../core/connections/pragmas';\nimport { sqliteFormatter } from '../../core/sql/formatter';\n\nexport type SQLite3DriverType = SQLiteDriverType<'sqlite3'>;\nexport const SQLite3DriverType: SQLite3DriverType = 'SQLite:sqlite3';\n\nexport type ConnectionCheckResult =\n | { successful: true }\n | {\n successful: false;\n code: string | undefined;\n errorType: 'ConnectionRefused' | 'Authentication' | 'Unknown';\n error: unknown;\n };\n\nexport type SQLite3ClientOptions = SQLiteClientOptions &\n SQLiteFileNameOrConnectionString;\n\nexport type SQLite3Client = SQLiteClientOrPoolClient;\n\nexport type SQLite3ConnectionOptions = SQLiteConnectionOptions &\n ((SQLite3ClientOptions & { client?: never }) | { client: SQLite3Client });\n\nexport type SQLite3Connection<\n ClientType extends SQLiteClientOrPoolClient = SQLiteClientOrPoolClient,\n> = Connection<\n SQLite3Connection,\n SQLite3DriverType,\n ClientType,\n SQLiteTransaction<SQLite3Connection, SQLiteTransactionOptions>\n>;\n\nconst applyPragma = (\n database: sqlite3.Database,\n pragma: string,\n value: string | number,\n) => {\n return new Promise<void>((resolve, reject) => {\n database.run(`PRAGMA ${pragma} = ${value};`, (err) => {\n if (err) reject(err);\n else resolve();\n });\n });\n};\n\nconst queryPragma = (\n database: sqlite3.Database,\n pragma: string,\n): Promise<string> =>\n new Promise((resolve, reject) => {\n database.get(\n `PRAGMA ${pragma};`,\n (err: Error | null, row: { [key: string]: string } | null) => {\n if (err) reject(err);\n else resolve(row?.[pragma] ?? '');\n },\n );\n });\n\nconst applyPragmas = (\n database: sqlite3.Database,\n pragmas: Array<{ pragma: string; value: string | number }>,\n) =>\n pragmas.reduce(\n (promise, { pragma, value }) =>\n promise.then(() => applyPragma(database, pragma, value)),\n Promise.resolve(),\n );\n\nexport const sqlite3Client = (\n options: SQLite3ClientOptions & {\n serializer: JSONSerializer;\n },\n): SQLiteClient => {\n let db: sqlite3.Database;\n\n let isClosed = false;\n\n const { serializer } = options;\n\n const connectionString =\n options.fileName ?? options.connectionString ?? InMemorySQLiteDatabase;\n\n const finalPragmas = mergePragmaOptions(\n String(connectionString),\n options.pragmaOptions,\n );\n\n const databaseMode = options.readonly\n ? sqlite3.OPEN_URI | sqlite3.OPEN_READONLY\n : sqlite3.OPEN_URI | sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE;\n\n const connectionPragmas = buildConnectionPragmaStatements(finalPragmas);\n\n const connect: () => Promise<void> = () =>\n db\n ? Promise.resolve()\n : new Promise((resolve, reject) => {\n try {\n db = new sqlite3.Database(connectionString, databaseMode, (err) => {\n if (err) {\n reject(err);\n return;\n }\n\n const busyTimeout =\n finalPragmas.busy_timeout ??\n DEFAULT_SQLITE_PRAGMA_OPTIONS.busy_timeout!;\n\n db.configure('busyTimeout', busyTimeout);\n\n applyPragmas(\n db,\n connectionPragmas.filter((p) => p.pragma !== 'busy_timeout'),\n )\n .then(async () => {\n if (options.skipDatabasePragmas) return;\n\n const databasePragmas =\n buildDatabasePragmaStatements(finalPragmas);\n for (const { pragma, value } of databasePragmas) {\n const current = await queryPragma(db, pragma);\n if (current.toUpperCase() !== String(value).toUpperCase()) {\n await applyPragma(db, pragma, value);\n }\n }\n })\n .then(() => resolve())\n .catch(reject);\n });\n\n // Apply connection-level pragmas first (busy_timeout is first)\n } catch (error) {\n reject(error as Error);\n }\n });\n\n const executeQuery = <T>(\n sql: string,\n params?: SQLiteParameters[],\n ): Promise<T[]> =>\n new Promise((resolve, reject) => {\n try {\n db.all(sql, params ?? [], (err: Error | null, result: T[]) => {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(result);\n });\n } catch (error) {\n reject(error as Error);\n }\n });\n\n const executeCommand = <Result extends QueryResultRow = QueryResultRow>(\n sql: string,\n params?: SQLiteParameters[],\n options?: SQLiteCommandOptions,\n ): Promise<QueryResult<Result>> =>\n new Promise((resolve, reject) => {\n try {\n if (options?.ignoreChangesCount === true) {\n db.run(\n sql,\n params ?? [],\n function (err: Error | null, rows: Result[]) {\n if (err) {\n reject(err);\n return;\n }\n resolve({\n rowCount: 0,\n rows: rows ?? [],\n });\n },\n );\n return;\n }\n // OD: 2026-01-21\n // This is needed as SQLite does not return changes count properly\n // We need to query it separately with SELECT changes()\n // This may be fixed eventually in sqlite3 library as Node.js team did here:\n // https://github.com/nodejs/node/issues/57344\n // But for now, we do it manually, as a workaround\n // We also serialize it to avoid race conditions\n db.serialize(() => {\n let hasFailed = false;\n let resultRows: Result[] = [];\n\n db.all(sql, params ?? [], (err, rows: Result[]) => {\n if (err) {\n hasFailed = true;\n return reject(err);\n }\n resultRows = rows;\n });\n\n db.get(\n 'SELECT changes() as changes',\n (err, row: { changes: number } | null) => {\n // If the first query failed, we exit immediately.\n // The promise is already rejected; we don't want to touch it.\n if (hasFailed) return;\n\n if (err) return reject(err);\n\n resolve({\n rowCount: row?.changes ?? 0,\n rows: resultRows,\n });\n },\n );\n });\n } catch (error) {\n reject(error as Error);\n }\n });\n\n return {\n connect,\n close: (): Promise<void> => {\n if (isClosed) {\n return Promise.resolve();\n }\n isClosed = true;\n if (db)\n return new Promise((resolve, reject) => {\n db.close((err: Error | null) => {\n if (err) {\n reject(err);\n return;\n }\n\n resolve();\n });\n });\n return Promise.resolve();\n },\n query: async <Result extends QueryResultRow = QueryResultRow>(\n sql: SQL,\n _options?: SQLQueryOptions,\n ): Promise<QueryResult<Result>> => {\n const { query, params } = sqliteFormatter.format(sql, {\n serializer,\n });\n const result = await executeQuery<Result>(\n query,\n params as SQLiteParameters[],\n );\n return { rowCount: result.length, rows: result };\n },\n batchQuery: async <Result extends QueryResultRow = QueryResultRow>(\n sqls: SQL[],\n _options?: SQLQueryOptions,\n ): Promise<QueryResult<Result>[]> => {\n const results: QueryResult<Result>[] = [];\n for (const sql of sqls) {\n const { query, params } = sqliteFormatter.format(sql, {\n serializer,\n });\n const result = await executeQuery<Result>(\n query,\n params as SQLiteParameters[],\n );\n results.push({ rowCount: result.length, rows: result });\n }\n return results;\n },\n command: async <Result extends QueryResultRow = QueryResultRow>(\n sql: SQL,\n options?: SQLiteCommandOptions,\n ): Promise<QueryResult<Result>> => {\n const { query, params } = sqliteFormatter.format(sql, {\n serializer,\n });\n\n return executeCommand<Result>(\n query,\n params as SQLiteParameters[],\n options,\n );\n },\n batchCommand: async <Result extends QueryResultRow = QueryResultRow>(\n sqls: SQL[],\n options?: BatchSQLiteCommandOptions,\n ): Promise<QueryResult<Result>[]> => {\n const results: QueryResult<Result>[] = [];\n\n for (let i = 0; i < sqls.length; i++) {\n const { query, params } = sqliteFormatter.format(sqls[i]!, {\n serializer,\n });\n const result = await executeCommand<Result>(\n query,\n params as SQLiteParameters[],\n options,\n );\n results.push(result);\n\n if (options?.assertChanges && (result.rowCount ?? 0) === 0) {\n throw new BatchCommandNoChangesError(i);\n }\n }\n return results;\n },\n };\n};\n\nexport const checkConnection = async (\n fileName: string,\n serializer: JSONSerializer,\n): Promise<ConnectionCheckResult> => {\n const client = sqlite3Client({\n fileName,\n serializer,\n });\n\n try {\n await client.query(SQL`SELECT 1`);\n return { successful: true };\n } catch (error) {\n const code =\n error instanceof Error &&\n 'code' in error &&\n typeof error.code === 'string'\n ? error.code\n : undefined;\n\n return {\n successful: false,\n errorType:\n code === 'SQLITE_CANTOPEN'\n ? 'ConnectionRefused'\n : code === 'SQLITE_AUTH'\n ? 'Authentication'\n : 'Unknown',\n code,\n error,\n };\n } finally {\n await client.close();\n }\n};\n\nexport const sqlite3Connection = (\n options: SQLite3ConnectionOptions & { serializer: JSONSerializer },\n) =>\n sqliteConnection<SQLite3Connection, SQLite3ConnectionOptions>({\n type: 'Client',\n driverType: SQLite3DriverType,\n sqliteClientFactory: (connectionOptions) => {\n if ('client' in connectionOptions && connectionOptions.client) {\n return connectionOptions.client;\n }\n return sqlite3Client({\n ...connectionOptions,\n serializer: options.serializer,\n });\n },\n connectionOptions: options,\n serializer: options.serializer,\n });\n","import { parsePragmasFromConnectionString } from './connectionString';\nimport {\n DEFAULT_SQLITE_PRAGMA_OPTIONS,\n type SQLitePragmaOptions,\n} from './index';\n\nexport const mergePragmaOptions = (\n connectionString: string,\n userOptions?: Partial<SQLitePragmaOptions>,\n): SQLitePragmaOptions => {\n const connectionStringPragmas =\n parsePragmasFromConnectionString(connectionString);\n\n return {\n ...DEFAULT_SQLITE_PRAGMA_OPTIONS,\n ...connectionStringPragmas,\n ...userOptions,\n };\n};\n\nexport const buildConnectionPragmaStatements = (\n pragmas: SQLitePragmaOptions,\n): Array<{ pragma: string; value: string | number }> => [\n // busy_timeout FIRST - enables waiting on locks for subsequent operations\n { pragma: 'busy_timeout', value: pragmas.busy_timeout! },\n { pragma: 'synchronous', value: pragmas.synchronous! },\n { pragma: 'cache_size', value: pragmas.cache_size! },\n { pragma: 'foreign_keys', value: pragmas.foreign_keys ? 'ON' : 'OFF' },\n { pragma: 'temp_store', value: pragmas.temp_store! },\n];\n\nexport const buildDatabasePragmaStatements = (\n pragmas: SQLitePragmaOptions,\n): Array<{ pragma: string; value: string | number }> => [\n { pragma: 'journal_mode', value: pragmas.journal_mode! },\n];\n","export * from './connections';\nimport {\n canHandleDriverWithConnectionString,\n dumboDatabaseDriverRegistry,\n JSONSerializer,\n type DumboConnectionOptions,\n type DumboDatabaseDriver,\n} from '../../../core';\nimport {\n DefaultSQLiteMigratorOptions,\n SQLiteConnectionString,\n sqliteFormatter,\n sqliteMetadata,\n sqlitePool,\n toSqlitePoolOptions,\n type SQLitePool,\n type SQLitePoolOptions,\n} from '../core';\nimport {\n sqlite3Connection,\n SQLite3DriverType,\n type SQLite3Connection,\n type SQLite3ConnectionOptions,\n} from './connections';\n\nexport type SQLite3DumboOptions = Omit<\n SQLitePoolOptions<SQLite3Connection, SQLite3ConnectionOptions>,\n 'driverType'\n> &\n SQLite3ConnectionOptions & { serializer?: JSONSerializer };\n\nexport type SQLite3PoolOptions = SQLite3DumboOptions;\n\nexport type Sqlite3Pool = SQLitePool<SQLite3Connection>;\n\nexport const sqlite3Pool = (options: SQLite3DumboOptions) =>\n sqlitePool(\n toSqlitePoolOptions({\n ...options,\n driverType: SQLite3DriverType,\n ...('connection' in options\n ? {}\n : {\n connectionOptions: options as SQLite3ConnectionOptions,\n sqliteConnectionFactory: (opts: SQLite3ConnectionOptions) =>\n sqlite3Connection({\n ...opts,\n serializer: options.serializer ?? JSONSerializer,\n }),\n }),\n }),\n );\n\nconst tryParseConnectionString = (connectionString: string) => {\n try {\n return SQLiteConnectionString(connectionString);\n } catch {\n return null;\n }\n};\n\nexport const sqlite3DumboDriver = {\n driverType: SQLite3DriverType,\n createPool: (options) => sqlite3Pool(options as SQLite3DumboOptions),\n sqlFormatter: sqliteFormatter,\n defaultMigratorOptions: DefaultSQLiteMigratorOptions,\n canHandle: canHandleDriverWithConnectionString(\n SQLite3DriverType,\n tryParseConnectionString,\n ),\n databaseMetadata: sqliteMetadata,\n} satisfies DumboDatabaseDriver<\n SQLite3Connection,\n SQLite3DumboOptions,\n Sqlite3Pool\n>;\n\nexport const useSqlite3DumboDriver = () => {\n dumboDatabaseDriverRegistry.register(SQLite3DriverType, sqlite3DumboDriver);\n};\n\nexport type SQLite3DumboConnectionOptions = DumboConnectionOptions<\n typeof sqlite3DumboDriver\n> & { connectionString: string | SQLiteConnectionString };\n\nuseSqlite3DumboDriver();\n\nexport * from './connections';\nexport * from './formatter';\nexport * from './transactions';\n"]}
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/Pongo/Pongo/src/packages/dumbo/dist/sqlite3.cjs","../src/storage/sqlite/sqlite3/connections/connection.ts","../src/storage/sqlite/core/connections/pragmas.ts","../src/storage/sqlite/sqlite3/index.ts"],"names":["options"],"mappings":"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","file":"/home/runner/work/Pongo/Pongo/src/packages/dumbo/dist/sqlite3.cjs","sourcesContent":[null,"import sqlite3 from 'sqlite3';\nimport type { JSONSerializer } from '../../../../core';\nimport {\n BatchCommandNoChangesError,\n SQL,\n type Connection,\n type QueryResult,\n type QueryResultRow,\n type SQLQueryOptions,\n} from '../../../../core';\nimport type {\n SQLiteClient,\n SQLiteClientOrPoolClient,\n SQLiteConnectionOptions,\n SQLiteDriverType,\n SQLiteFileNameOrConnectionString,\n SQLiteTransaction,\n SQLiteTransactionOptions,\n} from '../../core';\nimport {\n DEFAULT_SQLITE_PRAGMA_OPTIONS,\n InMemorySQLiteDatabase,\n sqliteConnection,\n type BatchSQLiteCommandOptions,\n type SQLiteClientOptions,\n type SQLiteCommandOptions,\n type SQLiteParameters,\n} from '../../core/connections';\nimport {\n buildConnectionPragmaStatements,\n buildDatabasePragmaStatements,\n mergePragmaOptions,\n} from '../../core/connections/pragmas';\nimport { sqliteFormatter } from '../../core/sql/formatter';\n\nexport type SQLite3DriverType = SQLiteDriverType<'sqlite3'>;\nexport const SQLite3DriverType: SQLite3DriverType = 'SQLite:sqlite3';\n\nexport type ConnectionCheckResult =\n | { successful: true }\n | {\n successful: false;\n code: string | undefined;\n errorType: 'ConnectionRefused' | 'Authentication' | 'Unknown';\n error: unknown;\n };\n\nexport type SQLite3ClientOptions = SQLiteClientOptions &\n SQLiteFileNameOrConnectionString;\n\nexport type SQLite3Client = SQLiteClientOrPoolClient;\n\nexport type SQLite3ConnectionOptions = SQLiteConnectionOptions &\n ((SQLite3ClientOptions & { client?: never }) | { client: SQLite3Client });\n\nexport type SQLite3Connection<\n ClientType extends SQLiteClientOrPoolClient = SQLiteClientOrPoolClient,\n> = Connection<\n SQLite3Connection,\n SQLite3DriverType,\n ClientType,\n SQLiteTransaction<SQLite3Connection, SQLiteTransactionOptions>\n>;\n\nconst applyPragma = (\n database: sqlite3.Database,\n pragma: string,\n value: string | number,\n) => {\n return new Promise<void>((resolve, reject) => {\n database.run(`PRAGMA ${pragma} = ${value};`, (err) => {\n if (err) reject(err);\n else resolve();\n });\n });\n};\n\nconst queryPragma = (\n database: sqlite3.Database,\n pragma: string,\n): Promise<string> =>\n new Promise((resolve, reject) => {\n database.get(\n `PRAGMA ${pragma};`,\n (err: Error | null, row: { [key: string]: string } | null) => {\n if (err) reject(err);\n else resolve(row?.[pragma] ?? '');\n },\n );\n });\n\nconst applyPragmas = (\n database: sqlite3.Database,\n pragmas: Array<{ pragma: string; value: string | number }>,\n) =>\n pragmas.reduce(\n (promise, { pragma, value }) =>\n promise.then(() => applyPragma(database, pragma, value)),\n Promise.resolve(),\n );\n\nexport const sqlite3Client = (\n options: SQLite3ClientOptions & {\n serializer: JSONSerializer;\n },\n): SQLiteClient => {\n let db: sqlite3.Database;\n\n let isClosed = false;\n\n const { serializer } = options;\n\n const connectionString =\n options.fileName ?? options.connectionString ?? InMemorySQLiteDatabase;\n\n const finalPragmas = mergePragmaOptions(\n String(connectionString),\n options.pragmaOptions,\n );\n\n const connectionPragmas = buildConnectionPragmaStatements(finalPragmas);\n\n const connect: () => Promise<void> = () =>\n db\n ? Promise.resolve()\n : new Promise((resolve, reject) => {\n try {\n db = new sqlite3.Database(\n connectionString,\n sqlite3.OPEN_URI | sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE,\n (err) => {\n if (err) {\n reject(err);\n return;\n }\n\n const busyTimeout =\n finalPragmas.busy_timeout ??\n DEFAULT_SQLITE_PRAGMA_OPTIONS.busy_timeout!;\n\n db.configure('busyTimeout', busyTimeout);\n\n applyPragmas(\n db,\n connectionPragmas.filter((p) => p.pragma !== 'busy_timeout'),\n )\n .then(async () => {\n if (options.skipDatabasePragmas) return;\n\n const databasePragmas =\n buildDatabasePragmaStatements(finalPragmas);\n for (const { pragma, value } of databasePragmas) {\n const current = await queryPragma(db, pragma);\n if (\n current.toUpperCase() !== String(value).toUpperCase()\n ) {\n await applyPragma(db, pragma, value);\n }\n }\n })\n .then(() => resolve())\n .catch(reject);\n },\n );\n\n // Apply connection-level pragmas first (busy_timeout is first)\n } catch (error) {\n reject(error as Error);\n }\n });\n\n const executeQuery = <T>(\n sql: string,\n params?: SQLiteParameters[],\n ): Promise<T[]> =>\n new Promise((resolve, reject) => {\n try {\n db.all(sql, params ?? [], (err: Error | null, result: T[]) => {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(result);\n });\n } catch (error) {\n reject(error as Error);\n }\n });\n\n const executeCommand = <Result extends QueryResultRow = QueryResultRow>(\n sql: string,\n params?: SQLiteParameters[],\n options?: SQLiteCommandOptions,\n ): Promise<QueryResult<Result>> =>\n new Promise((resolve, reject) => {\n try {\n if (options?.ignoreChangesCount === true) {\n db.run(\n sql,\n params ?? [],\n function (err: Error | null, rows: Result[]) {\n if (err) {\n reject(err);\n return;\n }\n resolve({\n rowCount: 0,\n rows: rows ?? [],\n });\n },\n );\n return;\n }\n // OD: 2026-01-21\n // This is needed as SQLite does not return changes count properly\n // We need to query it separately with SELECT changes()\n // This may be fixed eventually in sqlite3 library as Node.js team did here:\n // https://github.com/nodejs/node/issues/57344\n // But for now, we do it manually, as a workaround\n // We also serialize it to avoid race conditions\n db.serialize(() => {\n let hasFailed = false;\n let resultRows: Result[] = [];\n\n db.all(sql, params ?? [], (err, rows: Result[]) => {\n if (err) {\n hasFailed = true;\n return reject(err);\n }\n resultRows = rows;\n });\n\n db.get(\n 'SELECT changes() as changes',\n (err, row: { changes: number } | null) => {\n // If the first query failed, we exit immediately.\n // The promise is already rejected; we don't want to touch it.\n if (hasFailed) return;\n\n if (err) return reject(err);\n\n resolve({\n rowCount: row?.changes ?? 0,\n rows: resultRows,\n });\n },\n );\n });\n } catch (error) {\n reject(error as Error);\n }\n });\n\n return {\n connect,\n close: (): Promise<void> => {\n if (isClosed) {\n return Promise.resolve();\n }\n isClosed = true;\n if (db)\n return new Promise((resolve, reject) => {\n db.close((err: Error | null) => {\n if (err) {\n reject(err);\n return;\n }\n\n resolve();\n });\n });\n return Promise.resolve();\n },\n query: async <Result extends QueryResultRow = QueryResultRow>(\n sql: SQL,\n _options?: SQLQueryOptions,\n ): Promise<QueryResult<Result>> => {\n const { query, params } = sqliteFormatter.format(sql, {\n serializer,\n });\n const result = await executeQuery<Result>(\n query,\n params as SQLiteParameters[],\n );\n return { rowCount: result.length, rows: result };\n },\n batchQuery: async <Result extends QueryResultRow = QueryResultRow>(\n sqls: SQL[],\n _options?: SQLQueryOptions,\n ): Promise<QueryResult<Result>[]> => {\n const results: QueryResult<Result>[] = [];\n for (const sql of sqls) {\n const { query, params } = sqliteFormatter.format(sql, {\n serializer,\n });\n const result = await executeQuery<Result>(\n query,\n params as SQLiteParameters[],\n );\n results.push({ rowCount: result.length, rows: result });\n }\n return results;\n },\n command: async <Result extends QueryResultRow = QueryResultRow>(\n sql: SQL,\n options?: SQLiteCommandOptions,\n ): Promise<QueryResult<Result>> => {\n const { query, params } = sqliteFormatter.format(sql, {\n serializer,\n });\n\n return executeCommand<Result>(\n query,\n params as SQLiteParameters[],\n options,\n );\n },\n batchCommand: async <Result extends QueryResultRow = QueryResultRow>(\n sqls: SQL[],\n options?: BatchSQLiteCommandOptions,\n ): Promise<QueryResult<Result>[]> => {\n const results: QueryResult<Result>[] = [];\n\n for (let i = 0; i < sqls.length; i++) {\n const { query, params } = sqliteFormatter.format(sqls[i]!, {\n serializer,\n });\n const result = await executeCommand<Result>(\n query,\n params as SQLiteParameters[],\n options,\n );\n results.push(result);\n\n if (options?.assertChanges && (result.rowCount ?? 0) === 0) {\n throw new BatchCommandNoChangesError(i);\n }\n }\n return results;\n },\n };\n};\n\nexport const checkConnection = async (\n fileName: string,\n serializer: JSONSerializer,\n): Promise<ConnectionCheckResult> => {\n const client = sqlite3Client({\n fileName,\n serializer,\n });\n\n try {\n await client.query(SQL`SELECT 1`);\n return { successful: true };\n } catch (error) {\n const code =\n error instanceof Error &&\n 'code' in error &&\n typeof error.code === 'string'\n ? error.code\n : undefined;\n\n return {\n successful: false,\n errorType:\n code === 'SQLITE_CANTOPEN'\n ? 'ConnectionRefused'\n : code === 'SQLITE_AUTH'\n ? 'Authentication'\n : 'Unknown',\n code,\n error,\n };\n } finally {\n await client.close();\n }\n};\n\nexport const sqlite3Connection = (\n options: SQLite3ConnectionOptions & { serializer: JSONSerializer },\n) =>\n sqliteConnection<SQLite3Connection, SQLite3ConnectionOptions>({\n type: 'Client',\n driverType: SQLite3DriverType,\n sqliteClientFactory: (connectionOptions) => {\n if ('client' in connectionOptions && connectionOptions.client) {\n return connectionOptions.client;\n }\n return sqlite3Client({\n ...connectionOptions,\n serializer: options.serializer,\n });\n },\n connectionOptions: options,\n serializer: options.serializer,\n });\n","import { parsePragmasFromConnectionString } from './connectionString';\nimport {\n DEFAULT_SQLITE_PRAGMA_OPTIONS,\n type SQLitePragmaOptions,\n} from './index';\n\nexport const mergePragmaOptions = (\n connectionString: string,\n userOptions?: Partial<SQLitePragmaOptions>,\n): SQLitePragmaOptions => {\n const connectionStringPragmas =\n parsePragmasFromConnectionString(connectionString);\n\n return {\n ...DEFAULT_SQLITE_PRAGMA_OPTIONS,\n ...connectionStringPragmas,\n ...userOptions,\n };\n};\n\nexport const buildConnectionPragmaStatements = (\n pragmas: SQLitePragmaOptions,\n): Array<{ pragma: string; value: string | number }> => [\n // busy_timeout FIRST - enables waiting on locks for subsequent operations\n { pragma: 'busy_timeout', value: pragmas.busy_timeout! },\n { pragma: 'synchronous', value: pragmas.synchronous! },\n { pragma: 'cache_size', value: pragmas.cache_size! },\n { pragma: 'foreign_keys', value: pragmas.foreign_keys ? 'ON' : 'OFF' },\n { pragma: 'temp_store', value: pragmas.temp_store! },\n];\n\nexport const buildDatabasePragmaStatements = (\n pragmas: SQLitePragmaOptions,\n): Array<{ pragma: string; value: string | number }> => [\n { pragma: 'journal_mode', value: pragmas.journal_mode! },\n];\n","export * from './connections';\nimport {\n canHandleDriverWithConnectionString,\n dumboDatabaseDriverRegistry,\n JSONSerializer,\n type DumboConnectionOptions,\n type DumboDatabaseDriver,\n} from '../../../core';\nimport {\n DefaultSQLiteMigratorOptions,\n SQLiteConnectionString,\n sqliteFormatter,\n sqliteMetadata,\n sqlitePool,\n toSqlitePoolOptions,\n type SQLitePool,\n type SQLitePoolOptions,\n} from '../core';\nimport {\n sqlite3Connection,\n SQLite3DriverType,\n type SQLite3Connection,\n type SQLite3ConnectionOptions,\n} from './connections';\n\nexport type SQLite3DumboOptions = Omit<\n SQLitePoolOptions<SQLite3Connection, SQLite3ConnectionOptions>,\n 'driverType'\n> &\n SQLite3ConnectionOptions & { serializer?: JSONSerializer };\n\nexport type SQLite3PoolOptions = SQLite3DumboOptions;\n\nexport type Sqlite3Pool = SQLitePool<SQLite3Connection>;\n\nexport const sqlite3Pool = (options: SQLite3DumboOptions) =>\n sqlitePool(\n toSqlitePoolOptions({\n ...options,\n driverType: SQLite3DriverType,\n ...('connection' in options\n ? {}\n : {\n connectionOptions: options as SQLite3ConnectionOptions,\n sqliteConnectionFactory: (opts: SQLite3ConnectionOptions) =>\n sqlite3Connection({\n ...opts,\n serializer: options.serializer ?? JSONSerializer,\n }),\n }),\n }),\n );\n\nconst tryParseConnectionString = (connectionString: string) => {\n try {\n return SQLiteConnectionString(connectionString);\n } catch {\n return null;\n }\n};\n\nexport const sqlite3DumboDriver = {\n driverType: SQLite3DriverType,\n createPool: (options) => sqlite3Pool(options as SQLite3DumboOptions),\n sqlFormatter: sqliteFormatter,\n defaultMigratorOptions: DefaultSQLiteMigratorOptions,\n canHandle: canHandleDriverWithConnectionString(\n SQLite3DriverType,\n tryParseConnectionString,\n ),\n databaseMetadata: sqliteMetadata,\n} satisfies DumboDatabaseDriver<\n SQLite3Connection,\n SQLite3DumboOptions,\n Sqlite3Pool\n>;\n\nexport const useSqlite3DumboDriver = () => {\n dumboDatabaseDriverRegistry.register(SQLite3DriverType, sqlite3DumboDriver);\n};\n\nexport type SQLite3DumboConnectionOptions = DumboConnectionOptions<\n typeof sqlite3DumboDriver\n> & { connectionString: string | SQLiteConnectionString };\n\nuseSqlite3DumboDriver();\n\nexport * from './connections';\nexport * from './formatter';\nexport * from './transactions';\n"]}
|
package/dist/sqlite3.js
CHANGED
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
sqliteTransaction,
|
|
23
23
|
toSqlitePoolOptions,
|
|
24
24
|
transactionNestingCounter
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-IWGQR5FU.js";
|
|
26
26
|
import {
|
|
27
27
|
defaultSQLiteDatabase,
|
|
28
28
|
sqliteMetadata,
|
|
@@ -92,31 +92,34 @@ var sqlite3Client = (options) => {
|
|
|
92
92
|
String(connectionString),
|
|
93
93
|
options.pragmaOptions
|
|
94
94
|
);
|
|
95
|
-
const databaseMode = options.readonly ? sqlite3.OPEN_URI | sqlite3.OPEN_READONLY : sqlite3.OPEN_URI | sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE;
|
|
96
95
|
const connectionPragmas = buildConnectionPragmaStatements(finalPragmas);
|
|
97
96
|
const connect = () => db ? Promise.resolve() : new Promise((resolve, reject) => {
|
|
98
97
|
try {
|
|
99
|
-
db = new sqlite3.Database(
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
applyPragmas(
|
|
107
|
-
db,
|
|
108
|
-
connectionPragmas.filter((p) => p.pragma !== "busy_timeout")
|
|
109
|
-
).then(async () => {
|
|
110
|
-
if (options.skipDatabasePragmas) return;
|
|
111
|
-
const databasePragmas = buildDatabasePragmaStatements(finalPragmas);
|
|
112
|
-
for (const { pragma, value } of databasePragmas) {
|
|
113
|
-
const current = await queryPragma(db, pragma);
|
|
114
|
-
if (current.toUpperCase() !== String(value).toUpperCase()) {
|
|
115
|
-
await applyPragma(db, pragma, value);
|
|
116
|
-
}
|
|
98
|
+
db = new sqlite3.Database(
|
|
99
|
+
connectionString,
|
|
100
|
+
sqlite3.OPEN_URI | sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE,
|
|
101
|
+
(err) => {
|
|
102
|
+
if (err) {
|
|
103
|
+
reject(err);
|
|
104
|
+
return;
|
|
117
105
|
}
|
|
118
|
-
|
|
119
|
-
|
|
106
|
+
const busyTimeout = finalPragmas.busy_timeout ?? DEFAULT_SQLITE_PRAGMA_OPTIONS.busy_timeout;
|
|
107
|
+
db.configure("busyTimeout", busyTimeout);
|
|
108
|
+
applyPragmas(
|
|
109
|
+
db,
|
|
110
|
+
connectionPragmas.filter((p) => p.pragma !== "busy_timeout")
|
|
111
|
+
).then(async () => {
|
|
112
|
+
if (options.skipDatabasePragmas) return;
|
|
113
|
+
const databasePragmas = buildDatabasePragmaStatements(finalPragmas);
|
|
114
|
+
for (const { pragma, value } of databasePragmas) {
|
|
115
|
+
const current = await queryPragma(db, pragma);
|
|
116
|
+
if (current.toUpperCase() !== String(value).toUpperCase()) {
|
|
117
|
+
await applyPragma(db, pragma, value);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}).then(() => resolve()).catch(reject);
|
|
121
|
+
}
|
|
122
|
+
);
|
|
120
123
|
} catch (error) {
|
|
121
124
|
reject(error);
|
|
122
125
|
}
|
package/dist/sqlite3.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/storage/sqlite/sqlite3/connections/connection.ts","../src/storage/sqlite/core/connections/pragmas.ts","../src/storage/sqlite/sqlite3/index.ts"],"sourcesContent":["import sqlite3 from 'sqlite3';\nimport type { JSONSerializer } from '../../../../core';\nimport {\n BatchCommandNoChangesError,\n SQL,\n type Connection,\n type QueryResult,\n type QueryResultRow,\n type SQLQueryOptions,\n} from '../../../../core';\nimport type {\n SQLiteClient,\n SQLiteClientOrPoolClient,\n SQLiteConnectionOptions,\n SQLiteDriverType,\n SQLiteFileNameOrConnectionString,\n SQLiteTransaction,\n SQLiteTransactionOptions,\n} from '../../core';\nimport {\n DEFAULT_SQLITE_PRAGMA_OPTIONS,\n InMemorySQLiteDatabase,\n sqliteConnection,\n type BatchSQLiteCommandOptions,\n type SQLiteClientOptions,\n type SQLiteCommandOptions,\n type SQLiteParameters,\n} from '../../core/connections';\nimport {\n buildConnectionPragmaStatements,\n buildDatabasePragmaStatements,\n mergePragmaOptions,\n} from '../../core/connections/pragmas';\nimport { sqliteFormatter } from '../../core/sql/formatter';\n\nexport type SQLite3DriverType = SQLiteDriverType<'sqlite3'>;\nexport const SQLite3DriverType: SQLite3DriverType = 'SQLite:sqlite3';\n\nexport type ConnectionCheckResult =\n | { successful: true }\n | {\n successful: false;\n code: string | undefined;\n errorType: 'ConnectionRefused' | 'Authentication' | 'Unknown';\n error: unknown;\n };\n\nexport type SQLite3ClientOptions = SQLiteClientOptions &\n SQLiteFileNameOrConnectionString;\n\nexport type SQLite3Client = SQLiteClientOrPoolClient;\n\nexport type SQLite3ConnectionOptions = SQLiteConnectionOptions &\n ((SQLite3ClientOptions & { client?: never }) | { client: SQLite3Client });\n\nexport type SQLite3Connection<\n ClientType extends SQLiteClientOrPoolClient = SQLiteClientOrPoolClient,\n> = Connection<\n SQLite3Connection,\n SQLite3DriverType,\n ClientType,\n SQLiteTransaction<SQLite3Connection, SQLiteTransactionOptions>\n>;\n\nconst applyPragma = (\n database: sqlite3.Database,\n pragma: string,\n value: string | number,\n) => {\n return new Promise<void>((resolve, reject) => {\n database.run(`PRAGMA ${pragma} = ${value};`, (err) => {\n if (err) reject(err);\n else resolve();\n });\n });\n};\n\nconst queryPragma = (\n database: sqlite3.Database,\n pragma: string,\n): Promise<string> =>\n new Promise((resolve, reject) => {\n database.get(\n `PRAGMA ${pragma};`,\n (err: Error | null, row: { [key: string]: string } | null) => {\n if (err) reject(err);\n else resolve(row?.[pragma] ?? '');\n },\n );\n });\n\nconst applyPragmas = (\n database: sqlite3.Database,\n pragmas: Array<{ pragma: string; value: string | number }>,\n) =>\n pragmas.reduce(\n (promise, { pragma, value }) =>\n promise.then(() => applyPragma(database, pragma, value)),\n Promise.resolve(),\n );\n\nexport const sqlite3Client = (\n options: SQLite3ClientOptions & {\n serializer: JSONSerializer;\n },\n): SQLiteClient => {\n let db: sqlite3.Database;\n\n let isClosed = false;\n\n const { serializer } = options;\n\n const connectionString =\n options.fileName ?? options.connectionString ?? InMemorySQLiteDatabase;\n\n const finalPragmas = mergePragmaOptions(\n String(connectionString),\n options.pragmaOptions,\n );\n\n const databaseMode = options.readonly\n ? sqlite3.OPEN_URI | sqlite3.OPEN_READONLY\n : sqlite3.OPEN_URI | sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE;\n\n const connectionPragmas = buildConnectionPragmaStatements(finalPragmas);\n\n const connect: () => Promise<void> = () =>\n db\n ? Promise.resolve()\n : new Promise((resolve, reject) => {\n try {\n db = new sqlite3.Database(connectionString, databaseMode, (err) => {\n if (err) {\n reject(err);\n return;\n }\n\n const busyTimeout =\n finalPragmas.busy_timeout ??\n DEFAULT_SQLITE_PRAGMA_OPTIONS.busy_timeout!;\n\n db.configure('busyTimeout', busyTimeout);\n\n applyPragmas(\n db,\n connectionPragmas.filter((p) => p.pragma !== 'busy_timeout'),\n )\n .then(async () => {\n if (options.skipDatabasePragmas) return;\n\n const databasePragmas =\n buildDatabasePragmaStatements(finalPragmas);\n for (const { pragma, value } of databasePragmas) {\n const current = await queryPragma(db, pragma);\n if (current.toUpperCase() !== String(value).toUpperCase()) {\n await applyPragma(db, pragma, value);\n }\n }\n })\n .then(() => resolve())\n .catch(reject);\n });\n\n // Apply connection-level pragmas first (busy_timeout is first)\n } catch (error) {\n reject(error as Error);\n }\n });\n\n const executeQuery = <T>(\n sql: string,\n params?: SQLiteParameters[],\n ): Promise<T[]> =>\n new Promise((resolve, reject) => {\n try {\n db.all(sql, params ?? [], (err: Error | null, result: T[]) => {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(result);\n });\n } catch (error) {\n reject(error as Error);\n }\n });\n\n const executeCommand = <Result extends QueryResultRow = QueryResultRow>(\n sql: string,\n params?: SQLiteParameters[],\n options?: SQLiteCommandOptions,\n ): Promise<QueryResult<Result>> =>\n new Promise((resolve, reject) => {\n try {\n if (options?.ignoreChangesCount === true) {\n db.run(\n sql,\n params ?? [],\n function (err: Error | null, rows: Result[]) {\n if (err) {\n reject(err);\n return;\n }\n resolve({\n rowCount: 0,\n rows: rows ?? [],\n });\n },\n );\n return;\n }\n // OD: 2026-01-21\n // This is needed as SQLite does not return changes count properly\n // We need to query it separately with SELECT changes()\n // This may be fixed eventually in sqlite3 library as Node.js team did here:\n // https://github.com/nodejs/node/issues/57344\n // But for now, we do it manually, as a workaround\n // We also serialize it to avoid race conditions\n db.serialize(() => {\n let hasFailed = false;\n let resultRows: Result[] = [];\n\n db.all(sql, params ?? [], (err, rows: Result[]) => {\n if (err) {\n hasFailed = true;\n return reject(err);\n }\n resultRows = rows;\n });\n\n db.get(\n 'SELECT changes() as changes',\n (err, row: { changes: number } | null) => {\n // If the first query failed, we exit immediately.\n // The promise is already rejected; we don't want to touch it.\n if (hasFailed) return;\n\n if (err) return reject(err);\n\n resolve({\n rowCount: row?.changes ?? 0,\n rows: resultRows,\n });\n },\n );\n });\n } catch (error) {\n reject(error as Error);\n }\n });\n\n return {\n connect,\n close: (): Promise<void> => {\n if (isClosed) {\n return Promise.resolve();\n }\n isClosed = true;\n if (db)\n return new Promise((resolve, reject) => {\n db.close((err: Error | null) => {\n if (err) {\n reject(err);\n return;\n }\n\n resolve();\n });\n });\n return Promise.resolve();\n },\n query: async <Result extends QueryResultRow = QueryResultRow>(\n sql: SQL,\n _options?: SQLQueryOptions,\n ): Promise<QueryResult<Result>> => {\n const { query, params } = sqliteFormatter.format(sql, {\n serializer,\n });\n const result = await executeQuery<Result>(\n query,\n params as SQLiteParameters[],\n );\n return { rowCount: result.length, rows: result };\n },\n batchQuery: async <Result extends QueryResultRow = QueryResultRow>(\n sqls: SQL[],\n _options?: SQLQueryOptions,\n ): Promise<QueryResult<Result>[]> => {\n const results: QueryResult<Result>[] = [];\n for (const sql of sqls) {\n const { query, params } = sqliteFormatter.format(sql, {\n serializer,\n });\n const result = await executeQuery<Result>(\n query,\n params as SQLiteParameters[],\n );\n results.push({ rowCount: result.length, rows: result });\n }\n return results;\n },\n command: async <Result extends QueryResultRow = QueryResultRow>(\n sql: SQL,\n options?: SQLiteCommandOptions,\n ): Promise<QueryResult<Result>> => {\n const { query, params } = sqliteFormatter.format(sql, {\n serializer,\n });\n\n return executeCommand<Result>(\n query,\n params as SQLiteParameters[],\n options,\n );\n },\n batchCommand: async <Result extends QueryResultRow = QueryResultRow>(\n sqls: SQL[],\n options?: BatchSQLiteCommandOptions,\n ): Promise<QueryResult<Result>[]> => {\n const results: QueryResult<Result>[] = [];\n\n for (let i = 0; i < sqls.length; i++) {\n const { query, params } = sqliteFormatter.format(sqls[i]!, {\n serializer,\n });\n const result = await executeCommand<Result>(\n query,\n params as SQLiteParameters[],\n options,\n );\n results.push(result);\n\n if (options?.assertChanges && (result.rowCount ?? 0) === 0) {\n throw new BatchCommandNoChangesError(i);\n }\n }\n return results;\n },\n };\n};\n\nexport const checkConnection = async (\n fileName: string,\n serializer: JSONSerializer,\n): Promise<ConnectionCheckResult> => {\n const client = sqlite3Client({\n fileName,\n serializer,\n });\n\n try {\n await client.query(SQL`SELECT 1`);\n return { successful: true };\n } catch (error) {\n const code =\n error instanceof Error &&\n 'code' in error &&\n typeof error.code === 'string'\n ? error.code\n : undefined;\n\n return {\n successful: false,\n errorType:\n code === 'SQLITE_CANTOPEN'\n ? 'ConnectionRefused'\n : code === 'SQLITE_AUTH'\n ? 'Authentication'\n : 'Unknown',\n code,\n error,\n };\n } finally {\n await client.close();\n }\n};\n\nexport const sqlite3Connection = (\n options: SQLite3ConnectionOptions & { serializer: JSONSerializer },\n) =>\n sqliteConnection<SQLite3Connection, SQLite3ConnectionOptions>({\n type: 'Client',\n driverType: SQLite3DriverType,\n sqliteClientFactory: (connectionOptions) => {\n if ('client' in connectionOptions && connectionOptions.client) {\n return connectionOptions.client;\n }\n return sqlite3Client({\n ...connectionOptions,\n serializer: options.serializer,\n });\n },\n connectionOptions: options,\n serializer: options.serializer,\n });\n","import { parsePragmasFromConnectionString } from './connectionString';\nimport {\n DEFAULT_SQLITE_PRAGMA_OPTIONS,\n type SQLitePragmaOptions,\n} from './index';\n\nexport const mergePragmaOptions = (\n connectionString: string,\n userOptions?: Partial<SQLitePragmaOptions>,\n): SQLitePragmaOptions => {\n const connectionStringPragmas =\n parsePragmasFromConnectionString(connectionString);\n\n return {\n ...DEFAULT_SQLITE_PRAGMA_OPTIONS,\n ...connectionStringPragmas,\n ...userOptions,\n };\n};\n\nexport const buildConnectionPragmaStatements = (\n pragmas: SQLitePragmaOptions,\n): Array<{ pragma: string; value: string | number }> => [\n // busy_timeout FIRST - enables waiting on locks for subsequent operations\n { pragma: 'busy_timeout', value: pragmas.busy_timeout! },\n { pragma: 'synchronous', value: pragmas.synchronous! },\n { pragma: 'cache_size', value: pragmas.cache_size! },\n { pragma: 'foreign_keys', value: pragmas.foreign_keys ? 'ON' : 'OFF' },\n { pragma: 'temp_store', value: pragmas.temp_store! },\n];\n\nexport const buildDatabasePragmaStatements = (\n pragmas: SQLitePragmaOptions,\n): Array<{ pragma: string; value: string | number }> => [\n { pragma: 'journal_mode', value: pragmas.journal_mode! },\n];\n","export * from './connections';\nimport {\n canHandleDriverWithConnectionString,\n dumboDatabaseDriverRegistry,\n JSONSerializer,\n type DumboConnectionOptions,\n type DumboDatabaseDriver,\n} from '../../../core';\nimport {\n DefaultSQLiteMigratorOptions,\n SQLiteConnectionString,\n sqliteFormatter,\n sqliteMetadata,\n sqlitePool,\n toSqlitePoolOptions,\n type SQLitePool,\n type SQLitePoolOptions,\n} from '../core';\nimport {\n sqlite3Connection,\n SQLite3DriverType,\n type SQLite3Connection,\n type SQLite3ConnectionOptions,\n} from './connections';\n\nexport type SQLite3DumboOptions = Omit<\n SQLitePoolOptions<SQLite3Connection, SQLite3ConnectionOptions>,\n 'driverType'\n> &\n SQLite3ConnectionOptions & { serializer?: JSONSerializer };\n\nexport type SQLite3PoolOptions = SQLite3DumboOptions;\n\nexport type Sqlite3Pool = SQLitePool<SQLite3Connection>;\n\nexport const sqlite3Pool = (options: SQLite3DumboOptions) =>\n sqlitePool(\n toSqlitePoolOptions({\n ...options,\n driverType: SQLite3DriverType,\n ...('connection' in options\n ? {}\n : {\n connectionOptions: options as SQLite3ConnectionOptions,\n sqliteConnectionFactory: (opts: SQLite3ConnectionOptions) =>\n sqlite3Connection({\n ...opts,\n serializer: options.serializer ?? JSONSerializer,\n }),\n }),\n }),\n );\n\nconst tryParseConnectionString = (connectionString: string) => {\n try {\n return SQLiteConnectionString(connectionString);\n } catch {\n return null;\n }\n};\n\nexport const sqlite3DumboDriver = {\n driverType: SQLite3DriverType,\n createPool: (options) => sqlite3Pool(options as SQLite3DumboOptions),\n sqlFormatter: sqliteFormatter,\n defaultMigratorOptions: DefaultSQLiteMigratorOptions,\n canHandle: canHandleDriverWithConnectionString(\n SQLite3DriverType,\n tryParseConnectionString,\n ),\n databaseMetadata: sqliteMetadata,\n} satisfies DumboDatabaseDriver<\n SQLite3Connection,\n SQLite3DumboOptions,\n Sqlite3Pool\n>;\n\nexport const useSqlite3DumboDriver = () => {\n dumboDatabaseDriverRegistry.register(SQLite3DriverType, sqlite3DumboDriver);\n};\n\nexport type SQLite3DumboConnectionOptions = DumboConnectionOptions<\n typeof sqlite3DumboDriver\n> & { connectionString: string | SQLiteConnectionString };\n\nuseSqlite3DumboDriver();\n\nexport * from './connections';\nexport * from './formatter';\nexport * from './transactions';\n"],"mappings":"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","names":["options"]}
|
|
1
|
+
{"version":3,"sources":["../src/storage/sqlite/sqlite3/connections/connection.ts","../src/storage/sqlite/core/connections/pragmas.ts","../src/storage/sqlite/sqlite3/index.ts"],"sourcesContent":["import sqlite3 from 'sqlite3';\nimport type { JSONSerializer } from '../../../../core';\nimport {\n BatchCommandNoChangesError,\n SQL,\n type Connection,\n type QueryResult,\n type QueryResultRow,\n type SQLQueryOptions,\n} from '../../../../core';\nimport type {\n SQLiteClient,\n SQLiteClientOrPoolClient,\n SQLiteConnectionOptions,\n SQLiteDriverType,\n SQLiteFileNameOrConnectionString,\n SQLiteTransaction,\n SQLiteTransactionOptions,\n} from '../../core';\nimport {\n DEFAULT_SQLITE_PRAGMA_OPTIONS,\n InMemorySQLiteDatabase,\n sqliteConnection,\n type BatchSQLiteCommandOptions,\n type SQLiteClientOptions,\n type SQLiteCommandOptions,\n type SQLiteParameters,\n} from '../../core/connections';\nimport {\n buildConnectionPragmaStatements,\n buildDatabasePragmaStatements,\n mergePragmaOptions,\n} from '../../core/connections/pragmas';\nimport { sqliteFormatter } from '../../core/sql/formatter';\n\nexport type SQLite3DriverType = SQLiteDriverType<'sqlite3'>;\nexport const SQLite3DriverType: SQLite3DriverType = 'SQLite:sqlite3';\n\nexport type ConnectionCheckResult =\n | { successful: true }\n | {\n successful: false;\n code: string | undefined;\n errorType: 'ConnectionRefused' | 'Authentication' | 'Unknown';\n error: unknown;\n };\n\nexport type SQLite3ClientOptions = SQLiteClientOptions &\n SQLiteFileNameOrConnectionString;\n\nexport type SQLite3Client = SQLiteClientOrPoolClient;\n\nexport type SQLite3ConnectionOptions = SQLiteConnectionOptions &\n ((SQLite3ClientOptions & { client?: never }) | { client: SQLite3Client });\n\nexport type SQLite3Connection<\n ClientType extends SQLiteClientOrPoolClient = SQLiteClientOrPoolClient,\n> = Connection<\n SQLite3Connection,\n SQLite3DriverType,\n ClientType,\n SQLiteTransaction<SQLite3Connection, SQLiteTransactionOptions>\n>;\n\nconst applyPragma = (\n database: sqlite3.Database,\n pragma: string,\n value: string | number,\n) => {\n return new Promise<void>((resolve, reject) => {\n database.run(`PRAGMA ${pragma} = ${value};`, (err) => {\n if (err) reject(err);\n else resolve();\n });\n });\n};\n\nconst queryPragma = (\n database: sqlite3.Database,\n pragma: string,\n): Promise<string> =>\n new Promise((resolve, reject) => {\n database.get(\n `PRAGMA ${pragma};`,\n (err: Error | null, row: { [key: string]: string } | null) => {\n if (err) reject(err);\n else resolve(row?.[pragma] ?? '');\n },\n );\n });\n\nconst applyPragmas = (\n database: sqlite3.Database,\n pragmas: Array<{ pragma: string; value: string | number }>,\n) =>\n pragmas.reduce(\n (promise, { pragma, value }) =>\n promise.then(() => applyPragma(database, pragma, value)),\n Promise.resolve(),\n );\n\nexport const sqlite3Client = (\n options: SQLite3ClientOptions & {\n serializer: JSONSerializer;\n },\n): SQLiteClient => {\n let db: sqlite3.Database;\n\n let isClosed = false;\n\n const { serializer } = options;\n\n const connectionString =\n options.fileName ?? options.connectionString ?? InMemorySQLiteDatabase;\n\n const finalPragmas = mergePragmaOptions(\n String(connectionString),\n options.pragmaOptions,\n );\n\n const connectionPragmas = buildConnectionPragmaStatements(finalPragmas);\n\n const connect: () => Promise<void> = () =>\n db\n ? Promise.resolve()\n : new Promise((resolve, reject) => {\n try {\n db = new sqlite3.Database(\n connectionString,\n sqlite3.OPEN_URI | sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE,\n (err) => {\n if (err) {\n reject(err);\n return;\n }\n\n const busyTimeout =\n finalPragmas.busy_timeout ??\n DEFAULT_SQLITE_PRAGMA_OPTIONS.busy_timeout!;\n\n db.configure('busyTimeout', busyTimeout);\n\n applyPragmas(\n db,\n connectionPragmas.filter((p) => p.pragma !== 'busy_timeout'),\n )\n .then(async () => {\n if (options.skipDatabasePragmas) return;\n\n const databasePragmas =\n buildDatabasePragmaStatements(finalPragmas);\n for (const { pragma, value } of databasePragmas) {\n const current = await queryPragma(db, pragma);\n if (\n current.toUpperCase() !== String(value).toUpperCase()\n ) {\n await applyPragma(db, pragma, value);\n }\n }\n })\n .then(() => resolve())\n .catch(reject);\n },\n );\n\n // Apply connection-level pragmas first (busy_timeout is first)\n } catch (error) {\n reject(error as Error);\n }\n });\n\n const executeQuery = <T>(\n sql: string,\n params?: SQLiteParameters[],\n ): Promise<T[]> =>\n new Promise((resolve, reject) => {\n try {\n db.all(sql, params ?? [], (err: Error | null, result: T[]) => {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(result);\n });\n } catch (error) {\n reject(error as Error);\n }\n });\n\n const executeCommand = <Result extends QueryResultRow = QueryResultRow>(\n sql: string,\n params?: SQLiteParameters[],\n options?: SQLiteCommandOptions,\n ): Promise<QueryResult<Result>> =>\n new Promise((resolve, reject) => {\n try {\n if (options?.ignoreChangesCount === true) {\n db.run(\n sql,\n params ?? [],\n function (err: Error | null, rows: Result[]) {\n if (err) {\n reject(err);\n return;\n }\n resolve({\n rowCount: 0,\n rows: rows ?? [],\n });\n },\n );\n return;\n }\n // OD: 2026-01-21\n // This is needed as SQLite does not return changes count properly\n // We need to query it separately with SELECT changes()\n // This may be fixed eventually in sqlite3 library as Node.js team did here:\n // https://github.com/nodejs/node/issues/57344\n // But for now, we do it manually, as a workaround\n // We also serialize it to avoid race conditions\n db.serialize(() => {\n let hasFailed = false;\n let resultRows: Result[] = [];\n\n db.all(sql, params ?? [], (err, rows: Result[]) => {\n if (err) {\n hasFailed = true;\n return reject(err);\n }\n resultRows = rows;\n });\n\n db.get(\n 'SELECT changes() as changes',\n (err, row: { changes: number } | null) => {\n // If the first query failed, we exit immediately.\n // The promise is already rejected; we don't want to touch it.\n if (hasFailed) return;\n\n if (err) return reject(err);\n\n resolve({\n rowCount: row?.changes ?? 0,\n rows: resultRows,\n });\n },\n );\n });\n } catch (error) {\n reject(error as Error);\n }\n });\n\n return {\n connect,\n close: (): Promise<void> => {\n if (isClosed) {\n return Promise.resolve();\n }\n isClosed = true;\n if (db)\n return new Promise((resolve, reject) => {\n db.close((err: Error | null) => {\n if (err) {\n reject(err);\n return;\n }\n\n resolve();\n });\n });\n return Promise.resolve();\n },\n query: async <Result extends QueryResultRow = QueryResultRow>(\n sql: SQL,\n _options?: SQLQueryOptions,\n ): Promise<QueryResult<Result>> => {\n const { query, params } = sqliteFormatter.format(sql, {\n serializer,\n });\n const result = await executeQuery<Result>(\n query,\n params as SQLiteParameters[],\n );\n return { rowCount: result.length, rows: result };\n },\n batchQuery: async <Result extends QueryResultRow = QueryResultRow>(\n sqls: SQL[],\n _options?: SQLQueryOptions,\n ): Promise<QueryResult<Result>[]> => {\n const results: QueryResult<Result>[] = [];\n for (const sql of sqls) {\n const { query, params } = sqliteFormatter.format(sql, {\n serializer,\n });\n const result = await executeQuery<Result>(\n query,\n params as SQLiteParameters[],\n );\n results.push({ rowCount: result.length, rows: result });\n }\n return results;\n },\n command: async <Result extends QueryResultRow = QueryResultRow>(\n sql: SQL,\n options?: SQLiteCommandOptions,\n ): Promise<QueryResult<Result>> => {\n const { query, params } = sqliteFormatter.format(sql, {\n serializer,\n });\n\n return executeCommand<Result>(\n query,\n params as SQLiteParameters[],\n options,\n );\n },\n batchCommand: async <Result extends QueryResultRow = QueryResultRow>(\n sqls: SQL[],\n options?: BatchSQLiteCommandOptions,\n ): Promise<QueryResult<Result>[]> => {\n const results: QueryResult<Result>[] = [];\n\n for (let i = 0; i < sqls.length; i++) {\n const { query, params } = sqliteFormatter.format(sqls[i]!, {\n serializer,\n });\n const result = await executeCommand<Result>(\n query,\n params as SQLiteParameters[],\n options,\n );\n results.push(result);\n\n if (options?.assertChanges && (result.rowCount ?? 0) === 0) {\n throw new BatchCommandNoChangesError(i);\n }\n }\n return results;\n },\n };\n};\n\nexport const checkConnection = async (\n fileName: string,\n serializer: JSONSerializer,\n): Promise<ConnectionCheckResult> => {\n const client = sqlite3Client({\n fileName,\n serializer,\n });\n\n try {\n await client.query(SQL`SELECT 1`);\n return { successful: true };\n } catch (error) {\n const code =\n error instanceof Error &&\n 'code' in error &&\n typeof error.code === 'string'\n ? error.code\n : undefined;\n\n return {\n successful: false,\n errorType:\n code === 'SQLITE_CANTOPEN'\n ? 'ConnectionRefused'\n : code === 'SQLITE_AUTH'\n ? 'Authentication'\n : 'Unknown',\n code,\n error,\n };\n } finally {\n await client.close();\n }\n};\n\nexport const sqlite3Connection = (\n options: SQLite3ConnectionOptions & { serializer: JSONSerializer },\n) =>\n sqliteConnection<SQLite3Connection, SQLite3ConnectionOptions>({\n type: 'Client',\n driverType: SQLite3DriverType,\n sqliteClientFactory: (connectionOptions) => {\n if ('client' in connectionOptions && connectionOptions.client) {\n return connectionOptions.client;\n }\n return sqlite3Client({\n ...connectionOptions,\n serializer: options.serializer,\n });\n },\n connectionOptions: options,\n serializer: options.serializer,\n });\n","import { parsePragmasFromConnectionString } from './connectionString';\nimport {\n DEFAULT_SQLITE_PRAGMA_OPTIONS,\n type SQLitePragmaOptions,\n} from './index';\n\nexport const mergePragmaOptions = (\n connectionString: string,\n userOptions?: Partial<SQLitePragmaOptions>,\n): SQLitePragmaOptions => {\n const connectionStringPragmas =\n parsePragmasFromConnectionString(connectionString);\n\n return {\n ...DEFAULT_SQLITE_PRAGMA_OPTIONS,\n ...connectionStringPragmas,\n ...userOptions,\n };\n};\n\nexport const buildConnectionPragmaStatements = (\n pragmas: SQLitePragmaOptions,\n): Array<{ pragma: string; value: string | number }> => [\n // busy_timeout FIRST - enables waiting on locks for subsequent operations\n { pragma: 'busy_timeout', value: pragmas.busy_timeout! },\n { pragma: 'synchronous', value: pragmas.synchronous! },\n { pragma: 'cache_size', value: pragmas.cache_size! },\n { pragma: 'foreign_keys', value: pragmas.foreign_keys ? 'ON' : 'OFF' },\n { pragma: 'temp_store', value: pragmas.temp_store! },\n];\n\nexport const buildDatabasePragmaStatements = (\n pragmas: SQLitePragmaOptions,\n): Array<{ pragma: string; value: string | number }> => [\n { pragma: 'journal_mode', value: pragmas.journal_mode! },\n];\n","export * from './connections';\nimport {\n canHandleDriverWithConnectionString,\n dumboDatabaseDriverRegistry,\n JSONSerializer,\n type DumboConnectionOptions,\n type DumboDatabaseDriver,\n} from '../../../core';\nimport {\n DefaultSQLiteMigratorOptions,\n SQLiteConnectionString,\n sqliteFormatter,\n sqliteMetadata,\n sqlitePool,\n toSqlitePoolOptions,\n type SQLitePool,\n type SQLitePoolOptions,\n} from '../core';\nimport {\n sqlite3Connection,\n SQLite3DriverType,\n type SQLite3Connection,\n type SQLite3ConnectionOptions,\n} from './connections';\n\nexport type SQLite3DumboOptions = Omit<\n SQLitePoolOptions<SQLite3Connection, SQLite3ConnectionOptions>,\n 'driverType'\n> &\n SQLite3ConnectionOptions & { serializer?: JSONSerializer };\n\nexport type SQLite3PoolOptions = SQLite3DumboOptions;\n\nexport type Sqlite3Pool = SQLitePool<SQLite3Connection>;\n\nexport const sqlite3Pool = (options: SQLite3DumboOptions) =>\n sqlitePool(\n toSqlitePoolOptions({\n ...options,\n driverType: SQLite3DriverType,\n ...('connection' in options\n ? {}\n : {\n connectionOptions: options as SQLite3ConnectionOptions,\n sqliteConnectionFactory: (opts: SQLite3ConnectionOptions) =>\n sqlite3Connection({\n ...opts,\n serializer: options.serializer ?? JSONSerializer,\n }),\n }),\n }),\n );\n\nconst tryParseConnectionString = (connectionString: string) => {\n try {\n return SQLiteConnectionString(connectionString);\n } catch {\n return null;\n }\n};\n\nexport const sqlite3DumboDriver = {\n driverType: SQLite3DriverType,\n createPool: (options) => sqlite3Pool(options as SQLite3DumboOptions),\n sqlFormatter: sqliteFormatter,\n defaultMigratorOptions: DefaultSQLiteMigratorOptions,\n canHandle: canHandleDriverWithConnectionString(\n SQLite3DriverType,\n tryParseConnectionString,\n ),\n databaseMetadata: sqliteMetadata,\n} satisfies DumboDatabaseDriver<\n SQLite3Connection,\n SQLite3DumboOptions,\n Sqlite3Pool\n>;\n\nexport const useSqlite3DumboDriver = () => {\n dumboDatabaseDriverRegistry.register(SQLite3DriverType, sqlite3DumboDriver);\n};\n\nexport type SQLite3DumboConnectionOptions = DumboConnectionOptions<\n typeof sqlite3DumboDriver\n> & { connectionString: string | SQLiteConnectionString };\n\nuseSqlite3DumboDriver();\n\nexport * from './connections';\nexport * from './formatter';\nexport * from './transactions';\n"],"mappings":"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","names":["options"]}
|