@event-driven-io/dumbo 0.13.0-beta.21 → 0.13.0-beta.22
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-FC4JR2R3.js → chunk-56QRSCG5.js} +2 -2
- package/dist/{chunk-65DKXURG.js → chunk-5OX6NE4Z.js} +2 -2
- package/dist/{chunk-IVJ3SNPJ.js → chunk-5SCFH2HY.js} +2 -2
- package/dist/{chunk-AMACBMAZ.cjs → chunk-5YRHCEUE.cjs} +178 -94
- package/dist/chunk-5YRHCEUE.cjs.map +1 -0
- package/dist/{chunk-H7ZKIJHB.cjs → chunk-7RMJPFU5.cjs} +6 -6
- package/dist/{chunk-H7ZKIJHB.cjs.map → chunk-7RMJPFU5.cjs.map} +1 -1
- package/dist/{chunk-T4A6BQRA.js → chunk-D63MPAJC.js} +110 -26
- package/dist/chunk-D63MPAJC.js.map +1 -0
- package/dist/{chunk-7WEBHXZD.cjs → chunk-HXQYRDCR.cjs} +43 -43
- package/dist/{chunk-7WEBHXZD.cjs.map → chunk-HXQYRDCR.cjs.map} +1 -1
- package/dist/{chunk-XO5T5N5S.js → chunk-QUAG4MBP.js} +294 -14
- package/dist/chunk-QUAG4MBP.js.map +1 -0
- package/dist/{chunk-XOQHZABK.cjs → chunk-QVEVSWG6.cjs} +307 -27
- package/dist/chunk-QVEVSWG6.cjs.map +1 -0
- package/dist/{chunk-R7P7CNMK.cjs → chunk-TMFEMKPE.cjs} +4 -4
- package/dist/{chunk-R7P7CNMK.cjs.map → chunk-TMFEMKPE.cjs.map} +1 -1
- package/dist/cloudflare.cjs +66 -61
- package/dist/cloudflare.cjs.map +1 -1
- package/dist/cloudflare.d.cts +4 -4
- package/dist/cloudflare.d.ts +4 -4
- package/dist/cloudflare.js +9 -4
- package/dist/cloudflare.js.map +1 -1
- package/dist/{columnProcessors-Difrrk4c.d.cts → columnProcessors-CsQjv8si.d.cts} +1 -1
- package/dist/{columnProcessors-C7fRa54L.d.ts → columnProcessors-giHzjHuv.d.ts} +1 -1
- package/dist/{connectionString-oeg1LD5V.d.ts → connectionString-J4yRT71A.d.cts} +40 -31
- package/dist/{connectionString-oeg1LD5V.d.cts → connectionString-J4yRT71A.d.ts} +40 -31
- package/dist/index.cjs +7 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/pg.cjs +39 -38
- package/dist/pg.cjs.map +1 -1
- package/dist/pg.d.cts +7 -7
- package/dist/pg.d.ts +7 -7
- package/dist/pg.js +5 -4
- package/dist/pg.js.map +1 -1
- package/dist/postgresql.cjs +4 -4
- package/dist/postgresql.d.cts +2 -2
- package/dist/postgresql.d.ts +2 -2
- package/dist/postgresql.js +3 -3
- package/dist/sqlite.cjs +8 -4
- package/dist/sqlite.cjs.map +1 -1
- package/dist/sqlite.d.cts +48 -23
- package/dist/sqlite.d.ts +48 -23
- package/dist/sqlite.js +7 -3
- package/dist/sqlite3.cjs +65 -28
- package/dist/sqlite3.cjs.map +1 -1
- package/dist/sqlite3.d.cts +11 -11
- package/dist/sqlite3.d.ts +11 -11
- package/dist/sqlite3.js +48 -11
- package/dist/sqlite3.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-AMACBMAZ.cjs.map +0 -1
- package/dist/chunk-T4A6BQRA.js.map +0 -1
- package/dist/chunk-XO5T5N5S.js.map +0 -1
- package/dist/chunk-XOQHZABK.cjs.map +0 -1
- /package/dist/{chunk-FC4JR2R3.js.map → chunk-56QRSCG5.js.map} +0 -0
- /package/dist/{chunk-65DKXURG.js.map → chunk-5OX6NE4Z.js.map} +0 -0
- /package/dist/{chunk-IVJ3SNPJ.js.map → chunk-5SCFH2HY.js.map} +0 -0
package/dist/cloudflare.cjs
CHANGED
|
@@ -20,14 +20,14 @@
|
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
|
|
23
|
-
var _chunkAMACBMAZcjs = require('./chunk-AMACBMAZ.cjs');
|
|
24
23
|
|
|
25
24
|
|
|
25
|
+
var _chunk5YRHCEUEcjs = require('./chunk-5YRHCEUE.cjs');
|
|
26
26
|
|
|
27
27
|
|
|
28
|
-
var _chunkR7P7CNMKcjs = require('./chunk-R7P7CNMK.cjs');
|
|
29
28
|
|
|
30
29
|
|
|
30
|
+
var _chunkTMFEMKPEcjs = require('./chunk-TMFEMKPE.cjs');
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
|
|
@@ -47,7 +47,9 @@ var _chunkR7P7CNMKcjs = require('./chunk-R7P7CNMK.cjs');
|
|
|
47
47
|
|
|
48
48
|
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
var _chunkQVEVSWG6cjs = require('./chunk-QVEVSWG6.cjs');
|
|
51
53
|
|
|
52
54
|
// src/storage/sqlite/d1/connections/d1Client.ts
|
|
53
55
|
var d1Client = (options) => {
|
|
@@ -69,7 +71,7 @@ var d1Client = (options) => {
|
|
|
69
71
|
);
|
|
70
72
|
},
|
|
71
73
|
query: async (sql, _options) => {
|
|
72
|
-
const { query, params } =
|
|
74
|
+
const { query, params } = _chunk5YRHCEUEcjs.sqliteFormatter.format(sql, { serializer });
|
|
73
75
|
const stmt = execute.prepare(query);
|
|
74
76
|
const bound = _optionalChain([params, 'optionalAccess', _ => _.length]) ? stmt.bind(...params) : stmt;
|
|
75
77
|
const { results } = await bound.all();
|
|
@@ -77,7 +79,7 @@ var d1Client = (options) => {
|
|
|
77
79
|
},
|
|
78
80
|
batchQuery: async (sqls, _options) => {
|
|
79
81
|
const statements = sqls.map((sql) => {
|
|
80
|
-
const { query, params } =
|
|
82
|
+
const { query, params } = _chunk5YRHCEUEcjs.sqliteFormatter.format(sql, { serializer });
|
|
81
83
|
const stmt = execute.prepare(query);
|
|
82
84
|
return _optionalChain([params, 'optionalAccess', _3 => _3.length]) ? stmt.bind(...params) : stmt;
|
|
83
85
|
});
|
|
@@ -88,7 +90,7 @@ var d1Client = (options) => {
|
|
|
88
90
|
}));
|
|
89
91
|
},
|
|
90
92
|
command: async (sql, _options) => {
|
|
91
|
-
const { query, params } =
|
|
93
|
+
const { query, params } = _chunk5YRHCEUEcjs.sqliteFormatter.format(sql, { serializer });
|
|
92
94
|
const stmt = execute.prepare(query);
|
|
93
95
|
const bound = _optionalChain([params, 'optionalAccess', _6 => _6.length]) ? stmt.bind(...params) : stmt;
|
|
94
96
|
const result = await bound.run();
|
|
@@ -99,7 +101,7 @@ var d1Client = (options) => {
|
|
|
99
101
|
},
|
|
100
102
|
batchCommand: async (sqls, options2) => {
|
|
101
103
|
const statements = sqls.map((sql) => {
|
|
102
|
-
const { query, params } =
|
|
104
|
+
const { query, params } = _chunk5YRHCEUEcjs.sqliteFormatter.format(sql, { serializer });
|
|
103
105
|
const stmt = execute.prepare(query);
|
|
104
106
|
return _optionalChain([params, 'optionalAccess', _9 => _9.length]) ? stmt.bind(...params) : stmt;
|
|
105
107
|
});
|
|
@@ -110,7 +112,7 @@ var d1Client = (options) => {
|
|
|
110
112
|
rows: _nullishCoalesce(result.results, () => ( []))
|
|
111
113
|
};
|
|
112
114
|
if (_optionalChain([options2, 'optionalAccess', _12 => _12.assertChanges]) && (_nullishCoalesce(qr.rowCount, () => ( 0))) === 0) {
|
|
113
|
-
throw new (0,
|
|
115
|
+
throw new (0, _chunkQVEVSWG6cjs.BatchCommandNoChangesError)(i);
|
|
114
116
|
}
|
|
115
117
|
return qr;
|
|
116
118
|
});
|
|
@@ -124,14 +126,14 @@ var asError = (error) => error instanceof Error ? error : void 0;
|
|
|
124
126
|
var mapConstraintError = (message, innerError) => {
|
|
125
127
|
const upperMessage = _nullishCoalesce(_optionalChain([message, 'optionalAccess', _13 => _13.toUpperCase, 'call', _14 => _14()]), () => ( ""));
|
|
126
128
|
if (upperMessage.includes("UNIQUE") || upperMessage.includes("PRIMARY KEY"))
|
|
127
|
-
return new (0,
|
|
129
|
+
return new (0, _chunkQVEVSWG6cjs.UniqueConstraintError)(message, innerError);
|
|
128
130
|
if (upperMessage.includes("FOREIGN KEY"))
|
|
129
|
-
return new (0,
|
|
131
|
+
return new (0, _chunkQVEVSWG6cjs.ForeignKeyViolationError)(message, innerError);
|
|
130
132
|
if (upperMessage.includes("NOT NULL"))
|
|
131
|
-
return new (0,
|
|
133
|
+
return new (0, _chunkQVEVSWG6cjs.NotNullViolationError)(message, innerError);
|
|
132
134
|
if (upperMessage.includes("CHECK"))
|
|
133
|
-
return new (0,
|
|
134
|
-
return new (0,
|
|
135
|
+
return new (0, _chunkQVEVSWG6cjs.CheckViolationError)(message, innerError);
|
|
136
|
+
return new (0, _chunkQVEVSWG6cjs.IntegrityConstraintViolationError)(message, innerError);
|
|
135
137
|
};
|
|
136
138
|
var isConstraintMessage = (upper) => upper.includes("CONSTRAINT") || upper.includes("UNIQUE") || upper.includes("PRIMARY KEY") || upper.includes("FOREIGN KEY") || upper.includes("NOT NULL");
|
|
137
139
|
var SQLITE_CODE_RE = /SQLITE_([A-Z]+)/;
|
|
@@ -144,57 +146,57 @@ var mapEmbeddedSqliteCode = (code, message, innerError) => {
|
|
|
144
146
|
case "SQLITE_CONSTRAINT":
|
|
145
147
|
return mapConstraintError(message, innerError);
|
|
146
148
|
case "SQLITE_BUSY":
|
|
147
|
-
return new (0,
|
|
149
|
+
return new (0, _chunkQVEVSWG6cjs.LockNotAvailableError)(message, innerError);
|
|
148
150
|
case "SQLITE_LOCKED":
|
|
149
|
-
return new (0,
|
|
151
|
+
return new (0, _chunkQVEVSWG6cjs.DeadlockError)(message, innerError);
|
|
150
152
|
case "SQLITE_PROTOCOL":
|
|
151
|
-
return new (0,
|
|
153
|
+
return new (0, _chunkQVEVSWG6cjs.LockNotAvailableError)(message, innerError);
|
|
152
154
|
case "SQLITE_CANTOPEN":
|
|
153
|
-
return new (0,
|
|
155
|
+
return new (0, _chunkQVEVSWG6cjs.ConnectionError)(message, innerError);
|
|
154
156
|
case "SQLITE_NOTADB":
|
|
155
|
-
return new (0,
|
|
157
|
+
return new (0, _chunkQVEVSWG6cjs.ConnectionError)(message, innerError);
|
|
156
158
|
case "SQLITE_NOMEM":
|
|
157
|
-
return new (0,
|
|
159
|
+
return new (0, _chunkQVEVSWG6cjs.InsufficientResourcesError)(message, innerError);
|
|
158
160
|
case "SQLITE_FULL":
|
|
159
|
-
return new (0,
|
|
161
|
+
return new (0, _chunkQVEVSWG6cjs.InsufficientResourcesError)(message, innerError);
|
|
160
162
|
case "SQLITE_IOERR":
|
|
161
|
-
return new (0,
|
|
163
|
+
return new (0, _chunkQVEVSWG6cjs.SystemError)(message, innerError);
|
|
162
164
|
case "SQLITE_CORRUPT":
|
|
163
|
-
return new (0,
|
|
165
|
+
return new (0, _chunkQVEVSWG6cjs.SystemError)(message, innerError);
|
|
164
166
|
case "SQLITE_INTERNAL":
|
|
165
|
-
return new (0,
|
|
167
|
+
return new (0, _chunkQVEVSWG6cjs.SystemError)(message, innerError);
|
|
166
168
|
case "SQLITE_NOLFS":
|
|
167
|
-
return new (0,
|
|
169
|
+
return new (0, _chunkQVEVSWG6cjs.SystemError)(message, innerError);
|
|
168
170
|
case "SQLITE_TOOBIG":
|
|
169
|
-
return new (0,
|
|
171
|
+
return new (0, _chunkQVEVSWG6cjs.DataError)(message, innerError);
|
|
170
172
|
case "SQLITE_MISMATCH":
|
|
171
|
-
return new (0,
|
|
173
|
+
return new (0, _chunkQVEVSWG6cjs.DataError)(message, innerError);
|
|
172
174
|
case "SQLITE_RANGE":
|
|
173
|
-
return new (0,
|
|
175
|
+
return new (0, _chunkQVEVSWG6cjs.DataError)(message, innerError);
|
|
174
176
|
case "SQLITE_ERROR":
|
|
175
|
-
return new (0,
|
|
177
|
+
return new (0, _chunkQVEVSWG6cjs.InvalidOperationError)(message, innerError);
|
|
176
178
|
case "SQLITE_READONLY":
|
|
177
|
-
return new (0,
|
|
179
|
+
return new (0, _chunkQVEVSWG6cjs.InvalidOperationError)(message, innerError);
|
|
178
180
|
case "SQLITE_MISUSE":
|
|
179
|
-
return new (0,
|
|
181
|
+
return new (0, _chunkQVEVSWG6cjs.InvalidOperationError)(message, innerError);
|
|
180
182
|
case "SQLITE_AUTH":
|
|
181
|
-
return new (0,
|
|
183
|
+
return new (0, _chunkQVEVSWG6cjs.InvalidOperationError)(message, innerError);
|
|
182
184
|
case "SQLITE_PERM":
|
|
183
|
-
return new (0,
|
|
185
|
+
return new (0, _chunkQVEVSWG6cjs.InvalidOperationError)(message, innerError);
|
|
184
186
|
case "SQLITE_SCHEMA":
|
|
185
|
-
return new (0,
|
|
187
|
+
return new (0, _chunkQVEVSWG6cjs.InvalidOperationError)(message, innerError);
|
|
186
188
|
case "SQLITE_ABORT":
|
|
187
|
-
return new (0,
|
|
189
|
+
return new (0, _chunkQVEVSWG6cjs.SerializationError)(message, innerError);
|
|
188
190
|
case "SQLITE_INTERRUPT":
|
|
189
|
-
return new (0,
|
|
191
|
+
return new (0, _chunkQVEVSWG6cjs.SerializationError)(message, innerError);
|
|
190
192
|
}
|
|
191
193
|
return void 0;
|
|
192
194
|
};
|
|
193
195
|
var mapD1Error = (error) => {
|
|
194
|
-
if (
|
|
196
|
+
if (_chunkQVEVSWG6cjs.DumboError.isInstanceOf(error)) return error;
|
|
195
197
|
const message = getErrorMessage(error);
|
|
196
198
|
if (!message)
|
|
197
|
-
return new (0,
|
|
199
|
+
return new (0, _chunkQVEVSWG6cjs.DumboError)({
|
|
198
200
|
errorCode: 500,
|
|
199
201
|
message: error instanceof Error ? error.message : String(error),
|
|
200
202
|
innerError: asError(error)
|
|
@@ -202,34 +204,34 @@ var mapD1Error = (error) => {
|
|
|
202
204
|
const innerError = asError(error);
|
|
203
205
|
const upper = message.toUpperCase();
|
|
204
206
|
if (upper.startsWith("D1_TYPE_ERROR"))
|
|
205
|
-
return new (0,
|
|
207
|
+
return new (0, _chunkQVEVSWG6cjs.DataError)(message, innerError);
|
|
206
208
|
if (upper.startsWith("D1_COLUMN_NOTFOUND"))
|
|
207
|
-
return new (0,
|
|
209
|
+
return new (0, _chunkQVEVSWG6cjs.DataError)(message, innerError);
|
|
208
210
|
if (upper.startsWith("D1_DUMP_ERROR"))
|
|
209
|
-
return new (0,
|
|
211
|
+
return new (0, _chunkQVEVSWG6cjs.SystemError)(message, innerError);
|
|
210
212
|
if (upper.startsWith("D1_SESSION_ERROR"))
|
|
211
|
-
return new (0,
|
|
213
|
+
return new (0, _chunkQVEVSWG6cjs.ConnectionError)(message, innerError);
|
|
212
214
|
if (isConstraintMessage(upper)) {
|
|
213
215
|
return mapConstraintError(message, innerError);
|
|
214
216
|
}
|
|
215
217
|
if (upper.includes("NETWORK CONNECTION LOST") || upper.includes("CANNOT RESOLVE D1 DB DUE TO TRANSIENT ISSUE") || upper.includes("D1 DB RESET BECAUSE"))
|
|
216
|
-
return new (0,
|
|
218
|
+
return new (0, _chunkQVEVSWG6cjs.ConnectionError)(message, innerError);
|
|
217
219
|
if (upper.includes("D1 DB IS OVERLOADED") || upper.includes("TOO MANY REQUESTS") || upper.includes("MEMORY LIMIT WOULD BE EXCEEDED"))
|
|
218
|
-
return new (0,
|
|
220
|
+
return new (0, _chunkQVEVSWG6cjs.InsufficientResourcesError)(message, innerError);
|
|
219
221
|
if (upper.startsWith("D1_ERROR") || upper.startsWith("D1_EXEC_ERROR")) {
|
|
220
222
|
const embeddedCode2 = extractEmbeddedSqliteCode(message);
|
|
221
223
|
if (embeddedCode2) {
|
|
222
224
|
const mapped = mapEmbeddedSqliteCode(embeddedCode2, message, innerError);
|
|
223
225
|
if (mapped) return mapped;
|
|
224
226
|
}
|
|
225
|
-
return new (0,
|
|
227
|
+
return new (0, _chunkQVEVSWG6cjs.InvalidOperationError)(message, innerError);
|
|
226
228
|
}
|
|
227
229
|
const embeddedCode = extractEmbeddedSqliteCode(message);
|
|
228
230
|
if (embeddedCode) {
|
|
229
231
|
const mapped = mapEmbeddedSqliteCode(embeddedCode, message, innerError);
|
|
230
232
|
if (mapped) return mapped;
|
|
231
233
|
}
|
|
232
|
-
return new (0,
|
|
234
|
+
return new (0, _chunkQVEVSWG6cjs.DumboError)({
|
|
233
235
|
errorCode: 500,
|
|
234
236
|
message,
|
|
235
237
|
innerError
|
|
@@ -239,12 +241,12 @@ var mapD1Error = (error) => {
|
|
|
239
241
|
// src/storage/sqlite/d1/execute/d1SqlExecutor.ts
|
|
240
242
|
var d1SQLExecutor = () => ({
|
|
241
243
|
driverType: "SQLite:d1",
|
|
242
|
-
formatter:
|
|
244
|
+
formatter: _chunk5YRHCEUEcjs.sqliteFormatter,
|
|
243
245
|
query: async (client, sql, options) => {
|
|
244
246
|
try {
|
|
245
247
|
return await client.query(sql, options);
|
|
246
248
|
} catch (error) {
|
|
247
|
-
|
|
249
|
+
_chunkQVEVSWG6cjs.tracer.error("db:sql:query:execute:error", { error });
|
|
248
250
|
throw mapD1Error(error);
|
|
249
251
|
}
|
|
250
252
|
},
|
|
@@ -252,7 +254,7 @@ var d1SQLExecutor = () => ({
|
|
|
252
254
|
try {
|
|
253
255
|
return await client.batchQuery(sqls, options);
|
|
254
256
|
} catch (error) {
|
|
255
|
-
|
|
257
|
+
_chunkQVEVSWG6cjs.tracer.error("db:sql:batch_query:execute:error", { error });
|
|
256
258
|
throw mapD1Error(error);
|
|
257
259
|
}
|
|
258
260
|
},
|
|
@@ -260,7 +262,7 @@ var d1SQLExecutor = () => ({
|
|
|
260
262
|
try {
|
|
261
263
|
return await client.command(sql, options);
|
|
262
264
|
} catch (error) {
|
|
263
|
-
|
|
265
|
+
_chunkQVEVSWG6cjs.tracer.error("db:sql:command:execute:error", { error });
|
|
264
266
|
throw mapD1Error(error);
|
|
265
267
|
}
|
|
266
268
|
},
|
|
@@ -268,7 +270,7 @@ var d1SQLExecutor = () => ({
|
|
|
268
270
|
try {
|
|
269
271
|
return await client.batchCommand(sqls, options);
|
|
270
272
|
} catch (error) {
|
|
271
|
-
|
|
273
|
+
_chunkQVEVSWG6cjs.tracer.error("db:sql:batch_command:execute:error", { error });
|
|
272
274
|
throw mapD1Error(error);
|
|
273
275
|
}
|
|
274
276
|
}
|
|
@@ -284,7 +286,7 @@ var D1TransactionNotSupportedError = class extends Error {
|
|
|
284
286
|
}
|
|
285
287
|
};
|
|
286
288
|
var d1Transaction = (connection, serializer, defaultOptions) => (getClient, options) => {
|
|
287
|
-
const transactionCounter =
|
|
289
|
+
const transactionCounter = _chunk5YRHCEUEcjs.transactionNestingCounter.call(void 0, );
|
|
288
290
|
const allowNestedTransactions = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _15 => _15.allowNestedTransactions]), () => ( _optionalChain([defaultOptions, 'optionalAccess', _16 => _16.allowNestedTransactions])));
|
|
289
291
|
const mode = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _17 => _17.mode]), () => ( _optionalChain([defaultOptions, 'optionalAccess', _18 => _18.mode])));
|
|
290
292
|
let client = null;
|
|
@@ -340,7 +342,7 @@ var d1Transaction = (connection, serializer, defaultOptions) => (getClient, opti
|
|
|
340
342
|
if (_optionalChain([options, 'optionalAccess', _23 => _23.close])) await _optionalChain([options, 'optionalAccess', _24 => _24.close, 'call', _25 => _25(client2, error)]);
|
|
341
343
|
}
|
|
342
344
|
},
|
|
343
|
-
execute:
|
|
345
|
+
execute: _chunkQVEVSWG6cjs.sqlExecutor.call(void 0, d1SQLExecutor(), {
|
|
344
346
|
connect: () => {
|
|
345
347
|
if (!sessionClient) {
|
|
346
348
|
throw new Error(
|
|
@@ -349,7 +351,8 @@ var d1Transaction = (connection, serializer, defaultOptions) => (getClient, opti
|
|
|
349
351
|
}
|
|
350
352
|
return Promise.resolve(sessionClient);
|
|
351
353
|
}
|
|
352
|
-
})
|
|
354
|
+
}),
|
|
355
|
+
_transactionOptions: _nullishCoalesce(options, () => ( {}))
|
|
353
356
|
};
|
|
354
357
|
};
|
|
355
358
|
|
|
@@ -357,7 +360,7 @@ var d1Transaction = (connection, serializer, defaultOptions) => (getClient, opti
|
|
|
357
360
|
var D1DriverType = "SQLite:d1";
|
|
358
361
|
var d1Connection = (options) => {
|
|
359
362
|
const connection = _nullishCoalesce(_nullishCoalesce(options.connection, () => ( _optionalChain([options, 'access', _26 => _26.transaction, 'optionalAccess', _27 => _27.connection]))), () => ( {
|
|
360
|
-
...
|
|
363
|
+
..._chunk5YRHCEUEcjs.sqliteAmbientClientConnection.call(void 0, {
|
|
361
364
|
driverType: D1DriverType,
|
|
362
365
|
client: _nullishCoalesce(options.client, () => ( d1Client(options))),
|
|
363
366
|
initTransaction: (connection2) => d1Transaction(
|
|
@@ -389,11 +392,11 @@ var d1Connection = (options) => {
|
|
|
389
392
|
};
|
|
390
393
|
|
|
391
394
|
// src/storage/sqlite/d1/pool/d1ConnectionPool.ts
|
|
392
|
-
var d1Pool = (options) =>
|
|
395
|
+
var d1Pool = (options) => _chunkQVEVSWG6cjs.createSingletonConnectionPool.call(void 0, {
|
|
393
396
|
driverType: D1DriverType,
|
|
394
397
|
getConnection: () => d1Connection({
|
|
395
398
|
...options,
|
|
396
|
-
serializer:
|
|
399
|
+
serializer: _chunkQVEVSWG6cjs.JSONSerializer.from(options)
|
|
397
400
|
})
|
|
398
401
|
});
|
|
399
402
|
|
|
@@ -401,15 +404,15 @@ var d1Pool = (options) => _chunkXOQHZABKcjs.createSingletonConnectionPool.call(v
|
|
|
401
404
|
var d1DumboDriver = {
|
|
402
405
|
driverType: D1DriverType,
|
|
403
406
|
createPool: (options) => d1Pool(options),
|
|
404
|
-
sqlFormatter:
|
|
405
|
-
defaultMigratorOptions:
|
|
407
|
+
sqlFormatter: _chunk5YRHCEUEcjs.sqliteFormatter,
|
|
408
|
+
defaultMigratorOptions: _chunk5YRHCEUEcjs.DefaultSQLiteMigratorOptions,
|
|
406
409
|
canHandle: (options) => {
|
|
407
410
|
return options.driverType === D1DriverType && "database" in options;
|
|
408
411
|
},
|
|
409
|
-
databaseMetadata:
|
|
412
|
+
databaseMetadata: _chunkTMFEMKPEcjs.sqliteMetadata
|
|
410
413
|
};
|
|
411
414
|
var useD1DumboDriver = () => {
|
|
412
|
-
|
|
415
|
+
_chunkQVEVSWG6cjs.dumboDatabaseDriverRegistry.register(D1DriverType, d1DumboDriver);
|
|
413
416
|
};
|
|
414
417
|
useD1DumboDriver();
|
|
415
418
|
|
|
@@ -447,5 +450,7 @@ useD1DumboDriver();
|
|
|
447
450
|
|
|
448
451
|
|
|
449
452
|
|
|
450
|
-
|
|
453
|
+
|
|
454
|
+
|
|
455
|
+
exports.D1DriverType = D1DriverType; exports.D1TransactionNotSupportedError = D1TransactionNotSupportedError; exports.DEFAULT_SQLITE_PRAGMA_OPTIONS = _chunk5YRHCEUEcjs.DEFAULT_SQLITE_PRAGMA_OPTIONS; exports.DefaultSQLiteMigratorOptions = _chunk5YRHCEUEcjs.DefaultSQLiteMigratorOptions; exports.InMemorySQLiteDatabase = _chunk5YRHCEUEcjs.InMemorySQLiteDatabase; exports.SQLiteConnectionString = _chunk5YRHCEUEcjs.SQLiteConnectionString; exports.SQLiteDatabaseName = _chunk5YRHCEUEcjs.SQLiteDatabaseName; exports.d1Client = d1Client; exports.d1Connection = d1Connection; exports.d1DumboDriver = d1DumboDriver; exports.d1Pool = d1Pool; exports.d1SQLExecutor = d1SQLExecutor; exports.d1Transaction = d1Transaction; exports.defaultSQLiteDatabase = _chunkTMFEMKPEcjs.defaultSQLiteDatabase; exports.isInMemoryDatabase = _chunk5YRHCEUEcjs.isInMemoryDatabase; exports.isSQLiteError = _chunk5YRHCEUEcjs.isSQLiteError; exports.mapD1Error = mapD1Error; exports.mapSqliteError = _chunk5YRHCEUEcjs.mapSqliteError; exports.parsePragmasFromConnectionString = _chunk5YRHCEUEcjs.parsePragmasFromConnectionString; exports.sqliteAlwaysNewConnectionPool = _chunk5YRHCEUEcjs.sqliteAlwaysNewConnectionPool; exports.sqliteAmbientClientConnection = _chunk5YRHCEUEcjs.sqliteAmbientClientConnection; exports.sqliteAmbientConnectionPool = _chunk5YRHCEUEcjs.sqliteAmbientConnectionPool; exports.sqliteClientConnection = _chunk5YRHCEUEcjs.sqliteClientConnection; exports.sqliteConnection = _chunk5YRHCEUEcjs.sqliteConnection; exports.sqliteExecute = _chunk5YRHCEUEcjs.sqliteExecute; exports.sqliteFormatter = _chunk5YRHCEUEcjs.sqliteFormatter; exports.sqliteMetadata = _chunkTMFEMKPEcjs.sqliteMetadata; exports.sqlitePool = _chunk5YRHCEUEcjs.sqlitePool; exports.sqlitePoolClientConnection = _chunk5YRHCEUEcjs.sqlitePoolClientConnection; exports.sqliteSQLExecutor = _chunk5YRHCEUEcjs.sqliteSQLExecutor; exports.sqliteSingletonConnectionPool = _chunk5YRHCEUEcjs.sqliteSingletonConnectionPool; exports.sqliteTransaction = _chunk5YRHCEUEcjs.sqliteTransaction; exports.tableExists = _chunkTMFEMKPEcjs.tableExists; exports.toSqlitePoolOptions = _chunk5YRHCEUEcjs.toSqlitePoolOptions; exports.transactionNestingCounter = _chunk5YRHCEUEcjs.transactionNestingCounter; exports.useD1DumboDriver = useD1DumboDriver;
|
|
451
456
|
//# sourceMappingURL=cloudflare.cjs.map
|
package/dist/cloudflare.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/Pongo/Pongo/src/packages/dumbo/dist/cloudflare.cjs","../src/storage/sqlite/d1/connections/d1Client.ts","../src/storage/sqlite/d1/errors/errorMapper.ts","../src/storage/sqlite/d1/execute/d1SqlExecutor.ts","../src/storage/sqlite/d1/transactions/d1Transaction.ts","../src/storage/sqlite/d1/connections/d1Connection.ts","../src/storage/sqlite/d1/pool/d1ConnectionPool.ts","../src/storage/sqlite/d1/index.ts"],"names":["options","connection"],"mappings":"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","file":"/home/runner/work/Pongo/Pongo/src/packages/dumbo/dist/cloudflare.cjs","sourcesContent":[null,"import type {\n D1Database,\n D1DatabaseSession,\n D1SessionBookmark,\n D1SessionConstraint,\n} from '@cloudflare/workers-types';\nimport {\n BatchCommandNoChangesError,\n type BatchSQLCommandOptions,\n type JSONSerializer,\n type QueryResult,\n type QueryResultRow,\n type SQL,\n type SQLCommandOptions,\n type SQLQueryOptions,\n} from '../../../../core';\nimport { sqliteFormatter, type SQLiteClient } from '../../core';\n\nexport type D1DatabaseOrSession = D1Database | D1DatabaseSession;\n\nexport type D1ClientOptions = {\n database: D1Database;\n session?: D1DatabaseSession | undefined;\n serializer: JSONSerializer;\n};\n\nexport type D1SessionOptions = {\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n constraintOrBookmark?: D1SessionBookmark | D1SessionConstraint;\n};\n\nexport type D1Client = SQLiteClient & {\n database: D1Database;\n session?: D1DatabaseSession | undefined;\n\n withSession: (constraintOrBookmark?: D1SessionOptions) => Promise<D1Client>;\n};\n\nexport const d1Client = (options: D1ClientOptions): D1Client => {\n const { database, session, serializer } = options;\n\n const execute = session ?? database;\n\n return {\n database,\n session: session,\n connect: () => Promise.resolve(),\n close: () => Promise.resolve(),\n withSession: async (constraintOrBookmark?: D1SessionOptions) => {\n const newSession = constraintOrBookmark\n ? database.withSession(constraintOrBookmark as string)\n : database.withSession();\n\n return Promise.resolve(\n d1Client({\n database,\n session: newSession,\n serializer,\n }),\n );\n },\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, { serializer });\n const stmt = execute.prepare(query);\n const bound = params?.length ? stmt.bind(...params) : stmt;\n const { results } = await bound.all<Result>();\n return { rowCount: results?.length ?? 0, rows: results ?? [] };\n },\n\n batchQuery: async <Result extends QueryResultRow = QueryResultRow>(\n sqls: SQL[],\n _options?: SQLQueryOptions,\n ): Promise<QueryResult<Result>[]> => {\n const statements = sqls.map((sql) => {\n const { query, params } = sqliteFormatter.format(sql, { serializer });\n const stmt = execute.prepare(query);\n return params?.length ? stmt.bind(...params) : stmt;\n });\n const results = await execute.batch<Result>(statements);\n return results.map((result) => ({\n rowCount: result.results?.length ?? 0,\n rows: result.results ?? [],\n }));\n },\n\n command: async <Result extends QueryResultRow = QueryResultRow>(\n sql: SQL,\n _options?: SQLCommandOptions,\n ): Promise<QueryResult<Result>> => {\n const { query, params } = sqliteFormatter.format(sql, { serializer });\n const stmt = execute.prepare(query);\n const bound = params?.length ? stmt.bind(...params) : stmt;\n const result = await bound.run<Result>();\n return {\n rowCount: result.meta?.changes ?? 0,\n rows: result.results ?? [],\n };\n },\n\n batchCommand: async <Result extends QueryResultRow = QueryResultRow>(\n sqls: SQL[],\n options?: BatchSQLCommandOptions,\n ): Promise<QueryResult<Result>[]> => {\n const statements = sqls.map((sql) => {\n const { query, params } = sqliteFormatter.format(sql, { serializer });\n const stmt = execute.prepare(query);\n return params?.length ? stmt.bind(...params) : stmt;\n });\n const batchResults = await execute.batch<Result>(statements);\n\n return batchResults.map((result, i) => {\n const qr: QueryResult<Result> = {\n rowCount: result.meta?.changes ?? 0,\n rows: result.results ?? [],\n };\n\n if (options?.assertChanges && (qr.rowCount ?? 0) === 0) {\n throw new BatchCommandNoChangesError(i);\n }\n\n return qr;\n });\n },\n };\n};\n","import {\n CheckViolationError,\n ConnectionError,\n DataError,\n DeadlockError,\n DumboError,\n ForeignKeyViolationError,\n InsufficientResourcesError,\n IntegrityConstraintViolationError,\n InvalidOperationError,\n LockNotAvailableError,\n NotNullViolationError,\n SerializationError,\n SystemError,\n UniqueConstraintError,\n} from '../../../../core/errors';\n\nconst getErrorMessage = (error: unknown): string | undefined =>\n error instanceof Error ? error.message : undefined;\n\nconst asError = (error: unknown): Error | undefined =>\n error instanceof Error ? error : undefined;\n\n/**\n * Determines the constraint subtype from the error message.\n *\n * D1 embeds the SQLite constraint detail in the message string, e.g.:\n * \"D1_ERROR: UNIQUE constraint failed: users.email\"\n * \"D1_ERROR: SQLITE_CONSTRAINT: FOREIGN KEY constraint failed\"\n */\nconst mapConstraintError = (\n message: string | undefined,\n innerError: Error | undefined,\n): DumboError => {\n const upperMessage = message?.toUpperCase() ?? '';\n\n if (upperMessage.includes('UNIQUE') || upperMessage.includes('PRIMARY KEY'))\n return new UniqueConstraintError(message, innerError);\n\n if (upperMessage.includes('FOREIGN KEY'))\n return new ForeignKeyViolationError(message, innerError);\n\n if (upperMessage.includes('NOT NULL'))\n return new NotNullViolationError(message, innerError);\n\n if (upperMessage.includes('CHECK'))\n return new CheckViolationError(message, innerError);\n\n return new IntegrityConstraintViolationError(message, innerError);\n};\n\nconst isConstraintMessage = (upper: string): boolean =>\n upper.includes('CONSTRAINT') ||\n upper.includes('UNIQUE') ||\n upper.includes('PRIMARY KEY') ||\n upper.includes('FOREIGN KEY') ||\n upper.includes('NOT NULL');\n\n/** Extracts the first `SQLITE_<CODE>` token from a message string. */\nconst SQLITE_CODE_RE = /SQLITE_([A-Z]+)/;\n\nconst extractEmbeddedSqliteCode = (message: string): string | undefined => {\n const match = SQLITE_CODE_RE.exec(message);\n return match ? `SQLITE_${match[1]}` : undefined;\n};\n\n/**\n * Maps a `SQLITE_*` code found in the D1 message to a DumboError.\n *\n * D1 sometimes forwards raw SQLite result codes from the C++ layer, e.g.:\n * \"D1_ERROR: SQLITE_BUSY: database is locked\"\n * \"SQLITE_READONLY: attempt to write a readonly database\"\n *\n * See https://www.sqlite.org/rescode.html for the full code list.\n */\nconst mapEmbeddedSqliteCode = (\n code: string,\n message: string | undefined,\n innerError: Error | undefined,\n): DumboError | undefined => {\n switch (code) {\n case 'SQLITE_CONSTRAINT':\n return mapConstraintError(message, innerError);\n case 'SQLITE_BUSY':\n return new LockNotAvailableError(message, innerError);\n case 'SQLITE_LOCKED':\n return new DeadlockError(message, innerError);\n case 'SQLITE_PROTOCOL':\n return new LockNotAvailableError(message, innerError);\n case 'SQLITE_CANTOPEN':\n return new ConnectionError(message, innerError);\n case 'SQLITE_NOTADB':\n return new ConnectionError(message, innerError);\n case 'SQLITE_NOMEM':\n return new InsufficientResourcesError(message, innerError);\n case 'SQLITE_FULL':\n return new InsufficientResourcesError(message, innerError);\n case 'SQLITE_IOERR':\n return new SystemError(message, innerError);\n case 'SQLITE_CORRUPT':\n return new SystemError(message, innerError);\n case 'SQLITE_INTERNAL':\n return new SystemError(message, innerError);\n case 'SQLITE_NOLFS':\n return new SystemError(message, innerError);\n case 'SQLITE_TOOBIG':\n return new DataError(message, innerError);\n case 'SQLITE_MISMATCH':\n return new DataError(message, innerError);\n case 'SQLITE_RANGE':\n return new DataError(message, innerError);\n case 'SQLITE_ERROR':\n return new InvalidOperationError(message, innerError);\n case 'SQLITE_READONLY':\n return new InvalidOperationError(message, innerError);\n case 'SQLITE_MISUSE':\n return new InvalidOperationError(message, innerError);\n case 'SQLITE_AUTH':\n return new InvalidOperationError(message, innerError);\n case 'SQLITE_PERM':\n return new InvalidOperationError(message, innerError);\n case 'SQLITE_SCHEMA':\n return new InvalidOperationError(message, innerError);\n case 'SQLITE_ABORT':\n return new SerializationError(message, innerError);\n case 'SQLITE_INTERRUPT':\n return new SerializationError(message, innerError);\n }\n return undefined;\n};\n\n/**\n * Maps a Cloudflare D1 error to a typed DumboError.\n *\n * Unlike node-sqlite3, D1 throws **plain `Error` objects** with no `code`\n * property. All error information is embedded in `error.message`, using\n * well-known prefixes from the `workerd` runtime:\n *\n * | Prefix | Meaning |\n * |-----------------------|----------------------------------------------|\n * | `D1_ERROR:` | General D1 / SQLite error |\n * | `D1_EXEC_ERROR:` | Error during `.exec()` batch |\n * | `D1_TYPE_ERROR:` | Type mismatch (e.g. `undefined` vs `null`) |\n * | `D1_COLUMN_NOTFOUND` | Referenced column does not exist |\n * | `D1_DUMP_ERROR:` | Error during database dump |\n * | `D1_SESSION_ERROR:` | Session bookmark / constraint error |\n *\n * D1 also surfaces platform-level messages (no prefix) for transient errors:\n * - \"Network connection lost.\"\n * - \"D1 DB is overloaded. Too many requests queued.\"\n * - \"Memory limit would be exceeded by this operation.\"\n * - \"Cannot resolve D1 DB due to transient issue on remote node.\"\n * - \"D1 DB reset because its code was updated.\"\n *\n * Reference:\n * - https://developers.cloudflare.com/d1/platform/client-api/\n * - https://github.com/cloudflare/workerd (src/cloudflare/internal/d1-api.ts)\n *\n * Falls back to a generic DumboError (500) if the error is not a recognized D1 error.\n */\nexport const mapD1Error = (error: unknown): DumboError => {\n if (DumboError.isInstanceOf<DumboError>(error)) return error;\n\n const message = getErrorMessage(error);\n if (!message)\n return new DumboError({\n errorCode: 500,\n message: error instanceof Error ? error.message : String(error),\n innerError: asError(error),\n });\n\n const innerError = asError(error);\n const upper = message.toUpperCase();\n\n // D1-specific prefixes are checked first because some (e.g. D1_SESSION_ERROR)\n // contain constraint keywords in their message but have different semantics.\n if (upper.startsWith('D1_TYPE_ERROR'))\n return new DataError(message, innerError);\n\n if (upper.startsWith('D1_COLUMN_NOTFOUND'))\n return new DataError(message, innerError);\n\n if (upper.startsWith('D1_DUMP_ERROR'))\n return new SystemError(message, innerError);\n\n if (upper.startsWith('D1_SESSION_ERROR'))\n return new ConnectionError(message, innerError);\n\n if (isConstraintMessage(upper)) {\n return mapConstraintError(message, innerError);\n }\n\n if (\n upper.includes('NETWORK CONNECTION LOST') ||\n upper.includes('CANNOT RESOLVE D1 DB DUE TO TRANSIENT ISSUE') ||\n upper.includes('D1 DB RESET BECAUSE')\n )\n return new ConnectionError(message, innerError);\n\n if (\n upper.includes('D1 DB IS OVERLOADED') ||\n upper.includes('TOO MANY REQUESTS') ||\n upper.includes('MEMORY LIMIT WOULD BE EXCEEDED')\n )\n return new InsufficientResourcesError(message, innerError);\n\n if (upper.startsWith('D1_ERROR') || upper.startsWith('D1_EXEC_ERROR')) {\n const embeddedCode = extractEmbeddedSqliteCode(message);\n if (embeddedCode) {\n const mapped = mapEmbeddedSqliteCode(embeddedCode, message, innerError);\n if (mapped) return mapped;\n }\n\n return new InvalidOperationError(message, innerError);\n }\n\n const embeddedCode = extractEmbeddedSqliteCode(message);\n if (embeddedCode) {\n const mapped = mapEmbeddedSqliteCode(embeddedCode, message, innerError);\n if (mapped) return mapped;\n }\n\n return new DumboError({\n errorCode: 500,\n message,\n innerError,\n });\n};\n","import type {\n BatchSQLCommandOptions,\n DbSQLExecutor,\n QueryResult,\n QueryResultRow,\n SQL,\n SQLCommandOptions,\n SQLQueryOptions,\n} from '../../../../core';\nimport { tracer } from '../../../../core';\nimport { sqliteFormatter } from '../../core';\nimport type { D1Client, D1DriverType } from '../connections';\nimport { mapD1Error } from '../errors/errorMapper';\n\nexport const d1SQLExecutor = (): DbSQLExecutor<D1DriverType, D1Client> => ({\n driverType: 'SQLite:d1',\n formatter: sqliteFormatter,\n\n query: async <Result extends QueryResultRow>(\n client: D1Client,\n sql: SQL,\n options?: SQLQueryOptions,\n ): Promise<QueryResult<Result>> => {\n try {\n return await client.query<Result>(sql, options);\n } catch (error) {\n tracer.error('db:sql:query:execute:error', { error });\n throw mapD1Error(error);\n }\n },\n\n batchQuery: async <Result extends QueryResultRow>(\n client: D1Client,\n sqls: SQL[],\n options?: SQLQueryOptions,\n ): Promise<QueryResult<Result>[]> => {\n try {\n return await client.batchQuery<Result>(sqls, options);\n } catch (error) {\n tracer.error('db:sql:batch_query:execute:error', { error });\n throw mapD1Error(error);\n }\n },\n\n command: async <Result extends QueryResultRow>(\n client: D1Client,\n sql: SQL,\n options?: SQLCommandOptions,\n ): Promise<QueryResult<Result>> => {\n try {\n return await client.command<Result>(sql, options);\n } catch (error) {\n tracer.error('db:sql:command:execute:error', { error });\n throw mapD1Error(error);\n }\n },\n\n batchCommand: async <Result extends QueryResultRow>(\n client: D1Client,\n sqls: SQL[],\n options?: BatchSQLCommandOptions,\n ): Promise<QueryResult<Result>[]> => {\n try {\n return await client.batchCommand<Result>(sqls, options);\n } catch (error) {\n tracer.error('db:sql:batch_command:execute:error', { error });\n throw mapD1Error(error);\n }\n },\n});\n","import type { JSONSerializer } from '../../../../core';\nimport {\n sqlExecutor,\n type DatabaseTransaction,\n type DatabaseTransactionOptions,\n} from '../../../../core';\nimport { transactionNestingCounter } from '../../core';\nimport {\n D1DriverType,\n type D1Client,\n type D1Connection,\n type D1SessionOptions,\n} from '../connections';\nimport { d1SQLExecutor } from '../execute';\n\nexport type D1Transaction = DatabaseTransaction<D1Connection>;\n\nexport type D1TransactionOptions = DatabaseTransactionOptions & {\n d1Session?: D1SessionOptions;\n mode?: D1TransactionMode;\n};\n\nexport type D1TransactionMode = 'session_based' | 'strict';\n\nexport class D1TransactionNotSupportedError extends Error {\n constructor() {\n super(\n 'D1 does not support SQL transactions (BEGIN/COMMIT/ROLLBACK/SAVEPOINT). ' +\n 'Use { mode: \"session_based\" } to opt-in to session+batch semantics, or use ' +\n 'connection.execute.batchCommand() for atomic multi-statement execution.',\n );\n this.name = 'D1TransactionNotSupportedError';\n }\n}\n\nexport const d1Transaction =\n (\n connection: () => D1Connection,\n serializer: JSONSerializer,\n defaultOptions?: D1TransactionOptions,\n ) =>\n (\n getClient: Promise<D1Client>,\n options?: {\n close: (client: D1Client, error?: unknown) => Promise<void>;\n } & D1TransactionOptions,\n ): D1Transaction => {\n const transactionCounter = transactionNestingCounter();\n\n const allowNestedTransactions =\n options?.allowNestedTransactions ??\n defaultOptions?.allowNestedTransactions;\n\n const mode = options?.mode ?? defaultOptions?.mode;\n\n let client: D1Client | null = null;\n let sessionClient: D1Client | null = null;\n\n const getDatabaseClient = async () => {\n if (client) return Promise.resolve(client);\n\n client = await getClient;\n return client;\n };\n\n return {\n connection: connection(),\n driverType: D1DriverType,\n begin: async function () {\n if (mode !== 'session_based') {\n throw new D1TransactionNotSupportedError();\n }\n\n const client = await getDatabaseClient();\n\n if (allowNestedTransactions) {\n if (transactionCounter.level >= 1) {\n transactionCounter.increment();\n return;\n }\n\n transactionCounter.increment();\n }\n\n sessionClient = await client.withSession(options?.d1Session);\n },\n commit: async function () {\n const client = await getDatabaseClient();\n\n try {\n if (allowNestedTransactions) {\n if (transactionCounter.level > 1) {\n transactionCounter.decrement();\n\n return;\n }\n\n transactionCounter.reset();\n }\n sessionClient = null;\n } finally {\n if (options?.close) await options?.close(client);\n }\n },\n rollback: async function (error?: unknown) {\n const client = await getDatabaseClient();\n try {\n if (allowNestedTransactions) {\n if (transactionCounter.level > 1) {\n transactionCounter.decrement();\n return;\n }\n }\n\n sessionClient = null;\n } finally {\n if (options?.close) await options?.close(client, error);\n }\n },\n execute: sqlExecutor(d1SQLExecutor(), {\n connect: () => {\n if (!sessionClient) {\n throw new Error(\n 'Transaction has not been started. Call begin() first.',\n );\n }\n return Promise.resolve(sessionClient);\n },\n }),\n };\n };\n","import type { Connection } from '../../../../core';\nimport {\n sqliteAmbientClientConnection,\n type SQLiteConnectionOptions,\n type SQLiteDriverType,\n} from '../../core';\nimport { mapD1Error } from '../errors/errorMapper';\nimport {\n d1Transaction,\n type D1Transaction,\n type D1TransactionOptions,\n} from '../transactions';\nimport {\n d1Client,\n type D1Client,\n type D1ClientOptions,\n type D1SessionOptions,\n} from './d1Client';\n\nexport type D1DriverType = SQLiteDriverType<'d1'>;\nexport const D1DriverType: D1DriverType = 'SQLite:d1';\n\nexport type D1Connection = Connection<\n D1Connection,\n D1DriverType,\n D1Client,\n D1Transaction,\n D1TransactionOptions\n> & {\n d1Session: (constraintOrBookmark?: D1SessionOptions) => Promise<D1Connection>;\n withD1Session: <Result = never>(\n handle: (connection: D1Connection) => Promise<Result>,\n options?: D1SessionOptions,\n ) => Promise<Result>;\n};\n\nexport type D1ConnectionOptions = SQLiteConnectionOptions<D1Connection> & {\n client?: D1Client;\n connection?: D1Connection;\n transaction?: D1Transaction;\n} & D1ClientOptions;\n\nexport const d1Connection = (options: D1ConnectionOptions) => {\n const connection = options.connection ??\n options.transaction?.connection ?? {\n ...sqliteAmbientClientConnection<D1Connection>({\n driverType: D1DriverType,\n client: options.client ?? d1Client(options),\n initTransaction: (connection) =>\n d1Transaction(\n connection,\n options.serializer,\n options.transactionOptions,\n ),\n serializer: options.serializer,\n errorMapper: mapD1Error,\n }),\n };\n\n connection.d1Session = async (\n constraintOrBookmark?: D1SessionOptions,\n ): Promise<D1Connection> => {\n const client = await connection.open();\n\n const sessionClient = await client.withSession(constraintOrBookmark);\n\n return d1Connection({\n ...options,\n client: sessionClient,\n });\n };\n\n connection.withD1Session = async <Result = never>(\n handle: (connection: D1Connection) => Promise<Result>,\n options?: D1SessionOptions,\n ): Promise<Result> => {\n const sessionConnection = await connection.d1Session(options);\n\n try {\n return await handle(sessionConnection);\n } finally {\n await sessionConnection.close();\n }\n };\n\n return connection;\n};\n","import type { D1ConnectionOptions } from '..';\nimport {\n createSingletonConnectionPool,\n JSONSerializer,\n type ConnectionPool,\n type JSONSerializationOptions,\n} from '../../../../core';\nimport {\n d1Connection,\n D1DriverType,\n type D1Connection,\n} from '../connections/d1Connection';\n\nexport type D1PoolOptions = Omit<D1ConnectionOptions, 'serializer'> &\n JSONSerializationOptions;\n\nexport type D1ConnectionPool = ConnectionPool<D1Connection>;\n\nexport const d1Pool = (options: D1PoolOptions): D1ConnectionPool =>\n createSingletonConnectionPool<D1Connection>({\n driverType: D1DriverType,\n getConnection: () =>\n d1Connection({\n ...options,\n serializer: JSONSerializer.from(options),\n }),\n });\n","export * from './connections';\nimport type { D1Database } from '@cloudflare/workers-types';\nimport type { D1ConnectionPool } from '../../../cloudflare';\nimport {\n dumboDatabaseDriverRegistry,\n type DumboConnectionOptions,\n type DumboDatabaseDriver,\n} from '../../../core';\nimport {\n DefaultSQLiteMigratorOptions,\n sqliteFormatter,\n sqliteMetadata,\n} from '../core';\nimport { D1DriverType, type D1Connection } from './connections';\nimport { d1Pool, type D1PoolOptions } from './pool';\n\nexport type D1DumboOptions = D1PoolOptions;\n\nexport const d1DumboDriver: DumboDatabaseDriver<\n D1Connection,\n D1DumboOptions,\n D1ConnectionPool\n> = {\n driverType: D1DriverType,\n createPool: (options) => d1Pool(options),\n sqlFormatter: sqliteFormatter,\n defaultMigratorOptions: DefaultSQLiteMigratorOptions,\n canHandle: (options) => {\n return options.driverType === D1DriverType && 'database' in options;\n },\n databaseMetadata: sqliteMetadata,\n};\n\nexport const useD1DumboDriver = () => {\n dumboDatabaseDriverRegistry.register(D1DriverType, d1DumboDriver);\n};\n\nexport type D1DumboConnectionOptions = DumboConnectionOptions<\n typeof d1DumboDriver\n> & { database: D1Database };\n\nuseD1DumboDriver();\n\nexport * from './connections';\nexport * from './errors';\nexport * from './execute';\nexport * from './formatter';\nexport * from './pool';\nexport * from './transactions';\n"]}
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/Pongo/Pongo/src/packages/dumbo/dist/cloudflare.cjs","../src/storage/sqlite/d1/connections/d1Client.ts","../src/storage/sqlite/d1/errors/errorMapper.ts","../src/storage/sqlite/d1/execute/d1SqlExecutor.ts","../src/storage/sqlite/d1/transactions/d1Transaction.ts","../src/storage/sqlite/d1/connections/d1Connection.ts","../src/storage/sqlite/d1/pool/d1ConnectionPool.ts","../src/storage/sqlite/d1/index.ts"],"names":["options","connection"],"mappings":"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","file":"/home/runner/work/Pongo/Pongo/src/packages/dumbo/dist/cloudflare.cjs","sourcesContent":[null,"import type {\n D1Database,\n D1DatabaseSession,\n D1SessionBookmark,\n D1SessionConstraint,\n} from '@cloudflare/workers-types';\nimport {\n BatchCommandNoChangesError,\n type BatchSQLCommandOptions,\n type JSONSerializer,\n type QueryResult,\n type QueryResultRow,\n type SQL,\n type SQLCommandOptions,\n type SQLQueryOptions,\n} from '../../../../core';\nimport { sqliteFormatter, type SQLiteClient } from '../../core';\n\nexport type D1DatabaseOrSession = D1Database | D1DatabaseSession;\n\nexport type D1ClientOptions = {\n database: D1Database;\n session?: D1DatabaseSession | undefined;\n serializer: JSONSerializer;\n};\n\nexport type D1SessionOptions = {\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n constraintOrBookmark?: D1SessionBookmark | D1SessionConstraint;\n};\n\nexport type D1Client = SQLiteClient & {\n database: D1Database;\n session?: D1DatabaseSession | undefined;\n\n withSession: (constraintOrBookmark?: D1SessionOptions) => Promise<D1Client>;\n};\n\nexport const d1Client = (options: D1ClientOptions): D1Client => {\n const { database, session, serializer } = options;\n\n const execute = session ?? database;\n\n return {\n database,\n session: session,\n connect: () => Promise.resolve(),\n close: () => Promise.resolve(),\n withSession: async (constraintOrBookmark?: D1SessionOptions) => {\n const newSession = constraintOrBookmark\n ? database.withSession(constraintOrBookmark as string)\n : database.withSession();\n\n return Promise.resolve(\n d1Client({\n database,\n session: newSession,\n serializer,\n }),\n );\n },\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, { serializer });\n const stmt = execute.prepare(query);\n const bound = params?.length ? stmt.bind(...params) : stmt;\n const { results } = await bound.all<Result>();\n return { rowCount: results?.length ?? 0, rows: results ?? [] };\n },\n\n batchQuery: async <Result extends QueryResultRow = QueryResultRow>(\n sqls: SQL[],\n _options?: SQLQueryOptions,\n ): Promise<QueryResult<Result>[]> => {\n const statements = sqls.map((sql) => {\n const { query, params } = sqliteFormatter.format(sql, { serializer });\n const stmt = execute.prepare(query);\n return params?.length ? stmt.bind(...params) : stmt;\n });\n const results = await execute.batch<Result>(statements);\n return results.map((result) => ({\n rowCount: result.results?.length ?? 0,\n rows: result.results ?? [],\n }));\n },\n\n command: async <Result extends QueryResultRow = QueryResultRow>(\n sql: SQL,\n _options?: SQLCommandOptions,\n ): Promise<QueryResult<Result>> => {\n const { query, params } = sqliteFormatter.format(sql, { serializer });\n const stmt = execute.prepare(query);\n const bound = params?.length ? stmt.bind(...params) : stmt;\n const result = await bound.run<Result>();\n return {\n rowCount: result.meta?.changes ?? 0,\n rows: result.results ?? [],\n };\n },\n\n batchCommand: async <Result extends QueryResultRow = QueryResultRow>(\n sqls: SQL[],\n options?: BatchSQLCommandOptions,\n ): Promise<QueryResult<Result>[]> => {\n const statements = sqls.map((sql) => {\n const { query, params } = sqliteFormatter.format(sql, { serializer });\n const stmt = execute.prepare(query);\n return params?.length ? stmt.bind(...params) : stmt;\n });\n const batchResults = await execute.batch<Result>(statements);\n\n return batchResults.map((result, i) => {\n const qr: QueryResult<Result> = {\n rowCount: result.meta?.changes ?? 0,\n rows: result.results ?? [],\n };\n\n if (options?.assertChanges && (qr.rowCount ?? 0) === 0) {\n throw new BatchCommandNoChangesError(i);\n }\n\n return qr;\n });\n },\n };\n};\n","import {\n CheckViolationError,\n ConnectionError,\n DataError,\n DeadlockError,\n DumboError,\n ForeignKeyViolationError,\n InsufficientResourcesError,\n IntegrityConstraintViolationError,\n InvalidOperationError,\n LockNotAvailableError,\n NotNullViolationError,\n SerializationError,\n SystemError,\n UniqueConstraintError,\n} from '../../../../core/errors';\n\nconst getErrorMessage = (error: unknown): string | undefined =>\n error instanceof Error ? error.message : undefined;\n\nconst asError = (error: unknown): Error | undefined =>\n error instanceof Error ? error : undefined;\n\n/**\n * Determines the constraint subtype from the error message.\n *\n * D1 embeds the SQLite constraint detail in the message string, e.g.:\n * \"D1_ERROR: UNIQUE constraint failed: users.email\"\n * \"D1_ERROR: SQLITE_CONSTRAINT: FOREIGN KEY constraint failed\"\n */\nconst mapConstraintError = (\n message: string | undefined,\n innerError: Error | undefined,\n): DumboError => {\n const upperMessage = message?.toUpperCase() ?? '';\n\n if (upperMessage.includes('UNIQUE') || upperMessage.includes('PRIMARY KEY'))\n return new UniqueConstraintError(message, innerError);\n\n if (upperMessage.includes('FOREIGN KEY'))\n return new ForeignKeyViolationError(message, innerError);\n\n if (upperMessage.includes('NOT NULL'))\n return new NotNullViolationError(message, innerError);\n\n if (upperMessage.includes('CHECK'))\n return new CheckViolationError(message, innerError);\n\n return new IntegrityConstraintViolationError(message, innerError);\n};\n\nconst isConstraintMessage = (upper: string): boolean =>\n upper.includes('CONSTRAINT') ||\n upper.includes('UNIQUE') ||\n upper.includes('PRIMARY KEY') ||\n upper.includes('FOREIGN KEY') ||\n upper.includes('NOT NULL');\n\n/** Extracts the first `SQLITE_<CODE>` token from a message string. */\nconst SQLITE_CODE_RE = /SQLITE_([A-Z]+)/;\n\nconst extractEmbeddedSqliteCode = (message: string): string | undefined => {\n const match = SQLITE_CODE_RE.exec(message);\n return match ? `SQLITE_${match[1]}` : undefined;\n};\n\n/**\n * Maps a `SQLITE_*` code found in the D1 message to a DumboError.\n *\n * D1 sometimes forwards raw SQLite result codes from the C++ layer, e.g.:\n * \"D1_ERROR: SQLITE_BUSY: database is locked\"\n * \"SQLITE_READONLY: attempt to write a readonly database\"\n *\n * See https://www.sqlite.org/rescode.html for the full code list.\n */\nconst mapEmbeddedSqliteCode = (\n code: string,\n message: string | undefined,\n innerError: Error | undefined,\n): DumboError | undefined => {\n switch (code) {\n case 'SQLITE_CONSTRAINT':\n return mapConstraintError(message, innerError);\n case 'SQLITE_BUSY':\n return new LockNotAvailableError(message, innerError);\n case 'SQLITE_LOCKED':\n return new DeadlockError(message, innerError);\n case 'SQLITE_PROTOCOL':\n return new LockNotAvailableError(message, innerError);\n case 'SQLITE_CANTOPEN':\n return new ConnectionError(message, innerError);\n case 'SQLITE_NOTADB':\n return new ConnectionError(message, innerError);\n case 'SQLITE_NOMEM':\n return new InsufficientResourcesError(message, innerError);\n case 'SQLITE_FULL':\n return new InsufficientResourcesError(message, innerError);\n case 'SQLITE_IOERR':\n return new SystemError(message, innerError);\n case 'SQLITE_CORRUPT':\n return new SystemError(message, innerError);\n case 'SQLITE_INTERNAL':\n return new SystemError(message, innerError);\n case 'SQLITE_NOLFS':\n return new SystemError(message, innerError);\n case 'SQLITE_TOOBIG':\n return new DataError(message, innerError);\n case 'SQLITE_MISMATCH':\n return new DataError(message, innerError);\n case 'SQLITE_RANGE':\n return new DataError(message, innerError);\n case 'SQLITE_ERROR':\n return new InvalidOperationError(message, innerError);\n case 'SQLITE_READONLY':\n return new InvalidOperationError(message, innerError);\n case 'SQLITE_MISUSE':\n return new InvalidOperationError(message, innerError);\n case 'SQLITE_AUTH':\n return new InvalidOperationError(message, innerError);\n case 'SQLITE_PERM':\n return new InvalidOperationError(message, innerError);\n case 'SQLITE_SCHEMA':\n return new InvalidOperationError(message, innerError);\n case 'SQLITE_ABORT':\n return new SerializationError(message, innerError);\n case 'SQLITE_INTERRUPT':\n return new SerializationError(message, innerError);\n }\n return undefined;\n};\n\n/**\n * Maps a Cloudflare D1 error to a typed DumboError.\n *\n * Unlike node-sqlite3, D1 throws **plain `Error` objects** with no `code`\n * property. All error information is embedded in `error.message`, using\n * well-known prefixes from the `workerd` runtime:\n *\n * | Prefix | Meaning |\n * |-----------------------|----------------------------------------------|\n * | `D1_ERROR:` | General D1 / SQLite error |\n * | `D1_EXEC_ERROR:` | Error during `.exec()` batch |\n * | `D1_TYPE_ERROR:` | Type mismatch (e.g. `undefined` vs `null`) |\n * | `D1_COLUMN_NOTFOUND` | Referenced column does not exist |\n * | `D1_DUMP_ERROR:` | Error during database dump |\n * | `D1_SESSION_ERROR:` | Session bookmark / constraint error |\n *\n * D1 also surfaces platform-level messages (no prefix) for transient errors:\n * - \"Network connection lost.\"\n * - \"D1 DB is overloaded. Too many requests queued.\"\n * - \"Memory limit would be exceeded by this operation.\"\n * - \"Cannot resolve D1 DB due to transient issue on remote node.\"\n * - \"D1 DB reset because its code was updated.\"\n *\n * Reference:\n * - https://developers.cloudflare.com/d1/platform/client-api/\n * - https://github.com/cloudflare/workerd (src/cloudflare/internal/d1-api.ts)\n *\n * Falls back to a generic DumboError (500) if the error is not a recognized D1 error.\n */\nexport const mapD1Error = (error: unknown): DumboError => {\n if (DumboError.isInstanceOf<DumboError>(error)) return error;\n\n const message = getErrorMessage(error);\n if (!message)\n return new DumboError({\n errorCode: 500,\n message: error instanceof Error ? error.message : String(error),\n innerError: asError(error),\n });\n\n const innerError = asError(error);\n const upper = message.toUpperCase();\n\n // D1-specific prefixes are checked first because some (e.g. D1_SESSION_ERROR)\n // contain constraint keywords in their message but have different semantics.\n if (upper.startsWith('D1_TYPE_ERROR'))\n return new DataError(message, innerError);\n\n if (upper.startsWith('D1_COLUMN_NOTFOUND'))\n return new DataError(message, innerError);\n\n if (upper.startsWith('D1_DUMP_ERROR'))\n return new SystemError(message, innerError);\n\n if (upper.startsWith('D1_SESSION_ERROR'))\n return new ConnectionError(message, innerError);\n\n if (isConstraintMessage(upper)) {\n return mapConstraintError(message, innerError);\n }\n\n if (\n upper.includes('NETWORK CONNECTION LOST') ||\n upper.includes('CANNOT RESOLVE D1 DB DUE TO TRANSIENT ISSUE') ||\n upper.includes('D1 DB RESET BECAUSE')\n )\n return new ConnectionError(message, innerError);\n\n if (\n upper.includes('D1 DB IS OVERLOADED') ||\n upper.includes('TOO MANY REQUESTS') ||\n upper.includes('MEMORY LIMIT WOULD BE EXCEEDED')\n )\n return new InsufficientResourcesError(message, innerError);\n\n if (upper.startsWith('D1_ERROR') || upper.startsWith('D1_EXEC_ERROR')) {\n const embeddedCode = extractEmbeddedSqliteCode(message);\n if (embeddedCode) {\n const mapped = mapEmbeddedSqliteCode(embeddedCode, message, innerError);\n if (mapped) return mapped;\n }\n\n return new InvalidOperationError(message, innerError);\n }\n\n const embeddedCode = extractEmbeddedSqliteCode(message);\n if (embeddedCode) {\n const mapped = mapEmbeddedSqliteCode(embeddedCode, message, innerError);\n if (mapped) return mapped;\n }\n\n return new DumboError({\n errorCode: 500,\n message,\n innerError,\n });\n};\n","import type {\n BatchSQLCommandOptions,\n DbSQLExecutor,\n QueryResult,\n QueryResultRow,\n SQL,\n SQLCommandOptions,\n SQLQueryOptions,\n} from '../../../../core';\nimport { tracer } from '../../../../core';\nimport { sqliteFormatter } from '../../core';\nimport type { D1Client, D1DriverType } from '../connections';\nimport { mapD1Error } from '../errors/errorMapper';\n\nexport const d1SQLExecutor = (): DbSQLExecutor<D1DriverType, D1Client> => ({\n driverType: 'SQLite:d1',\n formatter: sqliteFormatter,\n\n query: async <Result extends QueryResultRow>(\n client: D1Client,\n sql: SQL,\n options?: SQLQueryOptions,\n ): Promise<QueryResult<Result>> => {\n try {\n return await client.query<Result>(sql, options);\n } catch (error) {\n tracer.error('db:sql:query:execute:error', { error });\n throw mapD1Error(error);\n }\n },\n\n batchQuery: async <Result extends QueryResultRow>(\n client: D1Client,\n sqls: SQL[],\n options?: SQLQueryOptions,\n ): Promise<QueryResult<Result>[]> => {\n try {\n return await client.batchQuery<Result>(sqls, options);\n } catch (error) {\n tracer.error('db:sql:batch_query:execute:error', { error });\n throw mapD1Error(error);\n }\n },\n\n command: async <Result extends QueryResultRow>(\n client: D1Client,\n sql: SQL,\n options?: SQLCommandOptions,\n ): Promise<QueryResult<Result>> => {\n try {\n return await client.command<Result>(sql, options);\n } catch (error) {\n tracer.error('db:sql:command:execute:error', { error });\n throw mapD1Error(error);\n }\n },\n\n batchCommand: async <Result extends QueryResultRow>(\n client: D1Client,\n sqls: SQL[],\n options?: BatchSQLCommandOptions,\n ): Promise<QueryResult<Result>[]> => {\n try {\n return await client.batchCommand<Result>(sqls, options);\n } catch (error) {\n tracer.error('db:sql:batch_command:execute:error', { error });\n throw mapD1Error(error);\n }\n },\n});\n","import type { JSONSerializer } from '../../../../core';\nimport {\n sqlExecutor,\n type DatabaseTransaction,\n type DatabaseTransactionOptions,\n} from '../../../../core';\nimport { transactionNestingCounter } from '../../core';\nimport {\n D1DriverType,\n type D1Client,\n type D1Connection,\n type D1SessionOptions,\n} from '../connections';\nimport { d1SQLExecutor } from '../execute';\n\nexport type D1Transaction = DatabaseTransaction<\n D1Connection,\n D1TransactionOptions\n>;\n\nexport type D1TransactionOptions = DatabaseTransactionOptions & {\n d1Session?: D1SessionOptions;\n mode?: D1TransactionMode;\n};\n\nexport type D1TransactionMode = 'session_based' | 'strict';\n\nexport class D1TransactionNotSupportedError extends Error {\n constructor() {\n super(\n 'D1 does not support SQL transactions (BEGIN/COMMIT/ROLLBACK/SAVEPOINT). ' +\n 'Use { mode: \"session_based\" } to opt-in to session+batch semantics, or use ' +\n 'connection.execute.batchCommand() for atomic multi-statement execution.',\n );\n this.name = 'D1TransactionNotSupportedError';\n }\n}\n\nexport const d1Transaction =\n (\n connection: () => D1Connection,\n serializer: JSONSerializer,\n defaultOptions?: D1TransactionOptions,\n ) =>\n (\n getClient: Promise<D1Client>,\n options?: {\n close: (client: D1Client, error?: unknown) => Promise<void>;\n } & D1TransactionOptions,\n ): D1Transaction => {\n const transactionCounter = transactionNestingCounter();\n\n const allowNestedTransactions =\n options?.allowNestedTransactions ??\n defaultOptions?.allowNestedTransactions;\n\n const mode = options?.mode ?? defaultOptions?.mode;\n\n let client: D1Client | null = null;\n let sessionClient: D1Client | null = null;\n\n const getDatabaseClient = async () => {\n if (client) return Promise.resolve(client);\n\n client = await getClient;\n return client;\n };\n\n return {\n connection: connection(),\n driverType: D1DriverType,\n begin: async function () {\n if (mode !== 'session_based') {\n throw new D1TransactionNotSupportedError();\n }\n\n const client = await getDatabaseClient();\n\n if (allowNestedTransactions) {\n if (transactionCounter.level >= 1) {\n transactionCounter.increment();\n return;\n }\n\n transactionCounter.increment();\n }\n\n sessionClient = await client.withSession(options?.d1Session);\n },\n commit: async function () {\n const client = await getDatabaseClient();\n\n try {\n if (allowNestedTransactions) {\n if (transactionCounter.level > 1) {\n transactionCounter.decrement();\n\n return;\n }\n\n transactionCounter.reset();\n }\n sessionClient = null;\n } finally {\n if (options?.close) await options?.close(client);\n }\n },\n rollback: async function (error?: unknown) {\n const client = await getDatabaseClient();\n try {\n if (allowNestedTransactions) {\n if (transactionCounter.level > 1) {\n transactionCounter.decrement();\n return;\n }\n }\n\n sessionClient = null;\n } finally {\n if (options?.close) await options?.close(client, error);\n }\n },\n execute: sqlExecutor(d1SQLExecutor(), {\n connect: () => {\n if (!sessionClient) {\n throw new Error(\n 'Transaction has not been started. Call begin() first.',\n );\n }\n return Promise.resolve(sessionClient);\n },\n }),\n _transactionOptions: options ?? {},\n };\n };\n","import type { Connection } from '../../../../core';\nimport {\n sqliteAmbientClientConnection,\n type SQLiteConnectionOptions,\n type SQLiteDriverType,\n} from '../../core';\nimport { mapD1Error } from '../errors/errorMapper';\nimport { d1Transaction, type D1Transaction } from '../transactions';\nimport {\n d1Client,\n type D1Client,\n type D1ClientOptions,\n type D1SessionOptions,\n} from './d1Client';\n\nexport type D1DriverType = SQLiteDriverType<'d1'>;\nexport const D1DriverType: D1DriverType = 'SQLite:d1';\n\nexport type D1Connection = Connection<\n D1Connection,\n D1DriverType,\n D1Client,\n D1Transaction\n> & {\n d1Session: (constraintOrBookmark?: D1SessionOptions) => Promise<D1Connection>;\n withD1Session: <Result = never>(\n handle: (connection: D1Connection) => Promise<Result>,\n options?: D1SessionOptions,\n ) => Promise<Result>;\n};\n\nexport type D1ConnectionOptions = SQLiteConnectionOptions<D1Connection> & {\n client?: D1Client;\n connection?: D1Connection;\n transaction?: D1Transaction;\n} & D1ClientOptions;\n\nexport const d1Connection = (options: D1ConnectionOptions) => {\n const connection = options.connection ??\n options.transaction?.connection ?? {\n ...sqliteAmbientClientConnection<D1Connection>({\n driverType: D1DriverType,\n client: options.client ?? d1Client(options),\n initTransaction: (connection) =>\n d1Transaction(\n connection,\n options.serializer,\n options.transactionOptions,\n ),\n serializer: options.serializer,\n errorMapper: mapD1Error,\n }),\n };\n\n connection.d1Session = async (\n constraintOrBookmark?: D1SessionOptions,\n ): Promise<D1Connection> => {\n const client = await connection.open();\n\n const sessionClient = await client.withSession(constraintOrBookmark);\n\n return d1Connection({\n ...options,\n client: sessionClient,\n });\n };\n\n connection.withD1Session = async <Result = never>(\n handle: (connection: D1Connection) => Promise<Result>,\n options?: D1SessionOptions,\n ): Promise<Result> => {\n const sessionConnection = await connection.d1Session(options);\n\n try {\n return await handle(sessionConnection);\n } finally {\n await sessionConnection.close();\n }\n };\n\n return connection;\n};\n","import type { D1ConnectionOptions } from '..';\nimport {\n createSingletonConnectionPool,\n JSONSerializer,\n type ConnectionPool,\n type JSONSerializationOptions,\n} from '../../../../core';\nimport {\n d1Connection,\n D1DriverType,\n type D1Connection,\n} from '../connections/d1Connection';\n\nexport type D1PoolOptions = Omit<D1ConnectionOptions, 'serializer'> &\n JSONSerializationOptions;\n\nexport type D1ConnectionPool = ConnectionPool<D1Connection>;\n\nexport const d1Pool = (options: D1PoolOptions): D1ConnectionPool =>\n createSingletonConnectionPool<D1Connection>({\n driverType: D1DriverType,\n getConnection: () =>\n d1Connection({\n ...options,\n serializer: JSONSerializer.from(options),\n }),\n });\n","export * from './connections';\nimport type { D1Database } from '@cloudflare/workers-types';\nimport type { D1ConnectionPool } from '../../../cloudflare';\nimport {\n dumboDatabaseDriverRegistry,\n type DumboConnectionOptions,\n type DumboDatabaseDriver,\n} from '../../../core';\nimport {\n DefaultSQLiteMigratorOptions,\n sqliteFormatter,\n sqliteMetadata,\n} from '../core';\nimport { D1DriverType, type D1Connection } from './connections';\nimport { d1Pool, type D1PoolOptions } from './pool';\n\nexport type D1DumboOptions = D1PoolOptions;\n\nexport const d1DumboDriver: DumboDatabaseDriver<\n D1Connection,\n D1DumboOptions,\n D1ConnectionPool\n> = {\n driverType: D1DriverType,\n createPool: (options) => d1Pool(options),\n sqlFormatter: sqliteFormatter,\n defaultMigratorOptions: DefaultSQLiteMigratorOptions,\n canHandle: (options) => {\n return options.driverType === D1DriverType && 'database' in options;\n },\n databaseMetadata: sqliteMetadata,\n};\n\nexport const useD1DumboDriver = () => {\n dumboDatabaseDriverRegistry.register(D1DriverType, d1DumboDriver);\n};\n\nexport type D1DumboConnectionOptions = DumboConnectionOptions<\n typeof d1DumboDriver\n> & { database: D1Database };\n\nuseD1DumboDriver();\n\nexport * from './connections';\nexport * from './errors';\nexport * from './execute';\nexport * from './formatter';\nexport * from './pool';\nexport * from './transactions';\n"]}
|
package/dist/cloudflare.d.cts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { SQLiteClient, SQLiteDriverType, SQLiteConnectionOptions } from './sqlite.cjs';
|
|
2
|
-
export { AnySQLiteClientConnection, AnySQLiteConnection, AnySQLitePoolClientConnection, BatchSQLiteCommandOptions, DefaultSQLiteMigratorOptions, InMemorySQLiteDatabase, SQLiteAlwaysNewConnectionPool, SQLiteAmbientConnectionPool, SQLiteClientConnection, SQLiteClientConnectionDefinitionOptions, SQLiteClientFactory, SQLiteClientOptions, SQLiteClientOrPoolClient, SQLiteCommandOptions, SQLiteConnection, SQLiteConnectionDefinitionOptions, SQLiteConnectionFactory, SQLiteConnectionString, SQLiteDatabaseName, SQLiteDatabaseType, SQLiteError, SQLiteErrorMapper, SQLiteFileNameOrConnectionString, SQLiteParameters, SQLitePool, SQLitePoolClient, SQLitePoolClientConnection, SQLitePoolConnectionDefinitionOptions, SQLitePoolFactoryOptions, SQLitePoolOptions, SQLiteSQLExecutor, SQLiteSingletonConnectionPool, SQLiteTransaction, SQLiteTransactionMode, SQLiteTransactionOptions, SqliteAmbientClientConnectionOptions, TransactionNestingCounter, defaultSQLiteDatabase, isInMemoryDatabase, isSQLiteError, mapSqliteError, sqliteAlwaysNewConnectionPool, sqliteAmbientClientConnection, sqliteAmbientConnectionPool, sqliteClientConnection, sqliteConnection, sqliteExecute, sqliteFormatter, sqliteMetadata, sqlitePool, sqlitePoolClientConnection, sqliteSQLExecutor, sqliteSingletonConnectionPool, sqliteTransaction, tableExists, toSqlitePoolOptions, transactionNestingCounter } from './sqlite.cjs';
|
|
2
|
+
export { AnySQLiteClientConnection, AnySQLiteConnection, AnySQLitePoolClientConnection, BatchSQLiteCommandOptions, DEFAULT_SQLITE_PRAGMA_OPTIONS, DefaultSQLiteMigratorOptions, InMemorySQLiteDatabase, SQLiteAlwaysNewConnectionPool, SQLiteAmbientConnectionPool, SQLiteClientConnection, SQLiteClientConnectionDefinitionOptions, SQLiteClientFactory, SQLiteClientOptions, SQLiteClientOrPoolClient, SQLiteCommandOptions, SQLiteConnection, SQLiteConnectionDefinitionOptions, SQLiteConnectionFactory, SQLiteConnectionString, SQLiteDatabaseName, SQLiteDatabaseType, SQLiteError, SQLiteErrorMapper, SQLiteFileNameOrConnectionString, SQLiteParameters, SQLitePool, SQLitePoolClient, SQLitePoolClientConnection, SQLitePoolConnectionDefinitionOptions, SQLitePoolFactoryOptions, SQLitePoolOptions, SQLitePragmaOptions, SQLiteSQLExecutor, SQLiteSingletonConnectionPool, SQLiteTransaction, SQLiteTransactionMode, SQLiteTransactionOptions, SqliteAmbientClientConnectionOptions, TransactionNestingCounter, defaultSQLiteDatabase, isInMemoryDatabase, isSQLiteError, mapSqliteError, parsePragmasFromConnectionString, sqliteAlwaysNewConnectionPool, sqliteAmbientClientConnection, sqliteAmbientConnectionPool, sqliteClientConnection, sqliteConnection, sqliteExecute, sqliteFormatter, sqliteMetadata, sqlitePool, sqlitePoolClientConnection, sqliteSQLExecutor, sqliteSingletonConnectionPool, sqliteTransaction, tableExists, toSqlitePoolOptions, transactionNestingCounter } from './sqlite.cjs';
|
|
3
3
|
import { D1Database, D1DatabaseSession, D1SessionBookmark, D1SessionConstraint } from '@cloudflare/workers-types';
|
|
4
|
-
import { J as JSONSerializer,
|
|
4
|
+
import { J as JSONSerializer, i as DatabaseTransaction, h as DatabaseTransactionOptions, C as Connection, k as JSONSerializationOptions, j as ConnectionPool, m as DumboError, l as DbSQLExecutor, c as DumboDatabaseDriver, g as DumboConnectionOptions } from './connectionString-J4yRT71A.cjs';
|
|
5
5
|
|
|
6
6
|
type D1DatabaseOrSession = D1Database | D1DatabaseSession;
|
|
7
7
|
type D1ClientOptions = {
|
|
@@ -19,7 +19,7 @@ type D1Client = SQLiteClient & {
|
|
|
19
19
|
};
|
|
20
20
|
declare const d1Client: (options: D1ClientOptions) => D1Client;
|
|
21
21
|
|
|
22
|
-
type D1Transaction = DatabaseTransaction<D1Connection>;
|
|
22
|
+
type D1Transaction = DatabaseTransaction<D1Connection, D1TransactionOptions>;
|
|
23
23
|
type D1TransactionOptions = DatabaseTransactionOptions & {
|
|
24
24
|
d1Session?: D1SessionOptions;
|
|
25
25
|
mode?: D1TransactionMode;
|
|
@@ -34,7 +34,7 @@ declare const d1Transaction: (connection: () => D1Connection, serializer: JSONSe
|
|
|
34
34
|
|
|
35
35
|
type D1DriverType = SQLiteDriverType<'d1'>;
|
|
36
36
|
declare const D1DriverType: D1DriverType;
|
|
37
|
-
type D1Connection = Connection<D1Connection, D1DriverType, D1Client, D1Transaction
|
|
37
|
+
type D1Connection = Connection<D1Connection, D1DriverType, D1Client, D1Transaction> & {
|
|
38
38
|
d1Session: (constraintOrBookmark?: D1SessionOptions) => Promise<D1Connection>;
|
|
39
39
|
withD1Session: <Result = never>(handle: (connection: D1Connection) => Promise<Result>, options?: D1SessionOptions) => Promise<Result>;
|
|
40
40
|
};
|
package/dist/cloudflare.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { SQLiteClient, SQLiteDriverType, SQLiteConnectionOptions } from './sqlite.js';
|
|
2
|
-
export { AnySQLiteClientConnection, AnySQLiteConnection, AnySQLitePoolClientConnection, BatchSQLiteCommandOptions, DefaultSQLiteMigratorOptions, InMemorySQLiteDatabase, SQLiteAlwaysNewConnectionPool, SQLiteAmbientConnectionPool, SQLiteClientConnection, SQLiteClientConnectionDefinitionOptions, SQLiteClientFactory, SQLiteClientOptions, SQLiteClientOrPoolClient, SQLiteCommandOptions, SQLiteConnection, SQLiteConnectionDefinitionOptions, SQLiteConnectionFactory, SQLiteConnectionString, SQLiteDatabaseName, SQLiteDatabaseType, SQLiteError, SQLiteErrorMapper, SQLiteFileNameOrConnectionString, SQLiteParameters, SQLitePool, SQLitePoolClient, SQLitePoolClientConnection, SQLitePoolConnectionDefinitionOptions, SQLitePoolFactoryOptions, SQLitePoolOptions, SQLiteSQLExecutor, SQLiteSingletonConnectionPool, SQLiteTransaction, SQLiteTransactionMode, SQLiteTransactionOptions, SqliteAmbientClientConnectionOptions, TransactionNestingCounter, defaultSQLiteDatabase, isInMemoryDatabase, isSQLiteError, mapSqliteError, sqliteAlwaysNewConnectionPool, sqliteAmbientClientConnection, sqliteAmbientConnectionPool, sqliteClientConnection, sqliteConnection, sqliteExecute, sqliteFormatter, sqliteMetadata, sqlitePool, sqlitePoolClientConnection, sqliteSQLExecutor, sqliteSingletonConnectionPool, sqliteTransaction, tableExists, toSqlitePoolOptions, transactionNestingCounter } from './sqlite.js';
|
|
2
|
+
export { AnySQLiteClientConnection, AnySQLiteConnection, AnySQLitePoolClientConnection, BatchSQLiteCommandOptions, DEFAULT_SQLITE_PRAGMA_OPTIONS, DefaultSQLiteMigratorOptions, InMemorySQLiteDatabase, SQLiteAlwaysNewConnectionPool, SQLiteAmbientConnectionPool, SQLiteClientConnection, SQLiteClientConnectionDefinitionOptions, SQLiteClientFactory, SQLiteClientOptions, SQLiteClientOrPoolClient, SQLiteCommandOptions, SQLiteConnection, SQLiteConnectionDefinitionOptions, SQLiteConnectionFactory, SQLiteConnectionString, SQLiteDatabaseName, SQLiteDatabaseType, SQLiteError, SQLiteErrorMapper, SQLiteFileNameOrConnectionString, SQLiteParameters, SQLitePool, SQLitePoolClient, SQLitePoolClientConnection, SQLitePoolConnectionDefinitionOptions, SQLitePoolFactoryOptions, SQLitePoolOptions, SQLitePragmaOptions, SQLiteSQLExecutor, SQLiteSingletonConnectionPool, SQLiteTransaction, SQLiteTransactionMode, SQLiteTransactionOptions, SqliteAmbientClientConnectionOptions, TransactionNestingCounter, defaultSQLiteDatabase, isInMemoryDatabase, isSQLiteError, mapSqliteError, parsePragmasFromConnectionString, sqliteAlwaysNewConnectionPool, sqliteAmbientClientConnection, sqliteAmbientConnectionPool, sqliteClientConnection, sqliteConnection, sqliteExecute, sqliteFormatter, sqliteMetadata, sqlitePool, sqlitePoolClientConnection, sqliteSQLExecutor, sqliteSingletonConnectionPool, sqliteTransaction, tableExists, toSqlitePoolOptions, transactionNestingCounter } from './sqlite.js';
|
|
3
3
|
import { D1Database, D1DatabaseSession, D1SessionBookmark, D1SessionConstraint } from '@cloudflare/workers-types';
|
|
4
|
-
import { J as JSONSerializer,
|
|
4
|
+
import { J as JSONSerializer, i as DatabaseTransaction, h as DatabaseTransactionOptions, C as Connection, k as JSONSerializationOptions, j as ConnectionPool, m as DumboError, l as DbSQLExecutor, c as DumboDatabaseDriver, g as DumboConnectionOptions } from './connectionString-J4yRT71A.js';
|
|
5
5
|
|
|
6
6
|
type D1DatabaseOrSession = D1Database | D1DatabaseSession;
|
|
7
7
|
type D1ClientOptions = {
|
|
@@ -19,7 +19,7 @@ type D1Client = SQLiteClient & {
|
|
|
19
19
|
};
|
|
20
20
|
declare const d1Client: (options: D1ClientOptions) => D1Client;
|
|
21
21
|
|
|
22
|
-
type D1Transaction = DatabaseTransaction<D1Connection>;
|
|
22
|
+
type D1Transaction = DatabaseTransaction<D1Connection, D1TransactionOptions>;
|
|
23
23
|
type D1TransactionOptions = DatabaseTransactionOptions & {
|
|
24
24
|
d1Session?: D1SessionOptions;
|
|
25
25
|
mode?: D1TransactionMode;
|
|
@@ -34,7 +34,7 @@ declare const d1Transaction: (connection: () => D1Connection, serializer: JSONSe
|
|
|
34
34
|
|
|
35
35
|
type D1DriverType = SQLiteDriverType<'d1'>;
|
|
36
36
|
declare const D1DriverType: D1DriverType;
|
|
37
|
-
type D1Connection = Connection<D1Connection, D1DriverType, D1Client, D1Transaction
|
|
37
|
+
type D1Connection = Connection<D1Connection, D1DriverType, D1Client, D1Transaction> & {
|
|
38
38
|
d1Session: (constraintOrBookmark?: D1SessionOptions) => Promise<D1Connection>;
|
|
39
39
|
withD1Session: <Result = never>(handle: (connection: D1Connection) => Promise<Result>, options?: D1SessionOptions) => Promise<Result>;
|
|
40
40
|
};
|
package/dist/cloudflare.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
+
DEFAULT_SQLITE_PRAGMA_OPTIONS,
|
|
2
3
|
DefaultSQLiteMigratorOptions,
|
|
3
4
|
InMemorySQLiteDatabase,
|
|
4
5
|
SQLiteConnectionString,
|
|
@@ -6,6 +7,7 @@ import {
|
|
|
6
7
|
isInMemoryDatabase,
|
|
7
8
|
isSQLiteError,
|
|
8
9
|
mapSqliteError,
|
|
10
|
+
parsePragmasFromConnectionString,
|
|
9
11
|
sqliteAlwaysNewConnectionPool,
|
|
10
12
|
sqliteAmbientClientConnection,
|
|
11
13
|
sqliteAmbientConnectionPool,
|
|
@@ -20,12 +22,12 @@ import {
|
|
|
20
22
|
sqliteTransaction,
|
|
21
23
|
toSqlitePoolOptions,
|
|
22
24
|
transactionNestingCounter
|
|
23
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-D63MPAJC.js";
|
|
24
26
|
import {
|
|
25
27
|
defaultSQLiteDatabase,
|
|
26
28
|
sqliteMetadata,
|
|
27
29
|
tableExists
|
|
28
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-5SCFH2HY.js";
|
|
29
31
|
import {
|
|
30
32
|
BatchCommandNoChangesError,
|
|
31
33
|
CheckViolationError,
|
|
@@ -47,7 +49,7 @@ import {
|
|
|
47
49
|
dumboDatabaseDriverRegistry,
|
|
48
50
|
sqlExecutor,
|
|
49
51
|
tracer
|
|
50
|
-
} from "./chunk-
|
|
52
|
+
} from "./chunk-QUAG4MBP.js";
|
|
51
53
|
|
|
52
54
|
// src/storage/sqlite/d1/connections/d1Client.ts
|
|
53
55
|
var d1Client = (options) => {
|
|
@@ -349,7 +351,8 @@ var d1Transaction = (connection, serializer, defaultOptions) => (getClient, opti
|
|
|
349
351
|
}
|
|
350
352
|
return Promise.resolve(sessionClient);
|
|
351
353
|
}
|
|
352
|
-
})
|
|
354
|
+
}),
|
|
355
|
+
_transactionOptions: options ?? {}
|
|
353
356
|
};
|
|
354
357
|
};
|
|
355
358
|
|
|
@@ -415,6 +418,7 @@ useD1DumboDriver();
|
|
|
415
418
|
export {
|
|
416
419
|
D1DriverType,
|
|
417
420
|
D1TransactionNotSupportedError,
|
|
421
|
+
DEFAULT_SQLITE_PRAGMA_OPTIONS,
|
|
418
422
|
DefaultSQLiteMigratorOptions,
|
|
419
423
|
InMemorySQLiteDatabase,
|
|
420
424
|
SQLiteConnectionString,
|
|
@@ -430,6 +434,7 @@ export {
|
|
|
430
434
|
isSQLiteError,
|
|
431
435
|
mapD1Error,
|
|
432
436
|
mapSqliteError,
|
|
437
|
+
parsePragmasFromConnectionString,
|
|
433
438
|
sqliteAlwaysNewConnectionPool,
|
|
434
439
|
sqliteAmbientClientConnection,
|
|
435
440
|
sqliteAmbientConnectionPool,
|