@event-driven-io/dumbo 0.13.0-beta.2 → 0.13.0-beta.21
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-65DKXURG.js +481 -0
- package/dist/chunk-65DKXURG.js.map +1 -0
- package/dist/chunk-7WEBHXZD.cjs +481 -0
- package/dist/chunk-7WEBHXZD.cjs.map +1 -0
- package/dist/chunk-AMACBMAZ.cjs +556 -0
- package/dist/chunk-AMACBMAZ.cjs.map +1 -0
- package/dist/chunk-FC4JR2R3.js +83 -0
- package/dist/chunk-FC4JR2R3.js.map +1 -0
- package/dist/chunk-H7ZKIJHB.cjs +83 -0
- package/dist/chunk-H7ZKIJHB.cjs.map +1 -0
- package/dist/chunk-IVJ3SNPJ.js +34 -0
- package/dist/chunk-IVJ3SNPJ.js.map +1 -0
- package/dist/chunk-R7P7CNMK.cjs +34 -0
- package/dist/chunk-R7P7CNMK.cjs.map +1 -0
- package/dist/{chunk-XVV3OOQX.js → chunk-T4A6BQRA.js} +209 -58
- package/dist/chunk-T4A6BQRA.js.map +1 -0
- package/dist/{chunk-N7RWT46K.js → chunk-XO5T5N5S.js} +2135 -1613
- package/dist/chunk-XO5T5N5S.js.map +1 -0
- package/dist/{chunk-OJ34O3Q2.cjs → chunk-XOQHZABK.cjs} +2161 -1639
- package/dist/chunk-XOQHZABK.cjs.map +1 -0
- package/dist/cloudflare.cjs +451 -0
- package/dist/cloudflare.cjs.map +1 -0
- package/dist/cloudflare.d.cts +92 -0
- package/dist/cloudflare.d.ts +92 -0
- package/dist/cloudflare.js +451 -0
- package/dist/cloudflare.js.map +1 -0
- package/dist/{columnProcessors-DMPpTPqM.d.ts → columnProcessors-C7fRa54L.d.ts} +1 -1
- package/dist/{columnProcessors-BX-sH7ah.d.cts → columnProcessors-Difrrk4c.d.cts} +1 -1
- package/dist/{connectionString-B1wm0TFc.d.cts → connectionString-oeg1LD5V.d.cts} +352 -137
- package/dist/{connectionString-B1wm0TFc.d.ts → connectionString-oeg1LD5V.d.ts} +352 -137
- package/dist/index.cjs +96 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +23 -18
- package/dist/index.d.ts +23 -18
- package/dist/index.js +101 -9
- package/dist/index.js.map +1 -1
- package/dist/pg.cjs +382 -9
- package/dist/pg.cjs.map +1 -1
- package/dist/pg.d.cts +81 -105
- package/dist/pg.d.ts +81 -105
- package/dist/pg.js +434 -61
- package/dist/pg.js.map +1 -1
- package/dist/postgresql.cjs +50 -0
- package/dist/postgresql.cjs.map +1 -0
- package/dist/postgresql.d.cts +61 -0
- package/dist/postgresql.d.ts +61 -0
- package/dist/postgresql.js +50 -0
- package/dist/sqlite.cjs +56 -0
- package/dist/sqlite.cjs.map +1 -0
- package/dist/{index-C0h0c380.d.cts → sqlite.d.cts} +31 -10
- package/dist/{index-C2z_XBn6.d.ts → sqlite.d.ts} +31 -10
- package/dist/sqlite.js +56 -0
- package/dist/sqlite3.cjs +240 -11
- package/dist/sqlite3.cjs.map +1 -1
- package/dist/sqlite3.d.cts +39 -19
- package/dist/sqlite3.d.ts +39 -19
- package/dist/sqlite3.js +251 -22
- package/dist/sqlite3.js.map +1 -1
- package/package.json +69 -29
- package/dist/chunk-A7TC7IOP.cjs +0 -55
- package/dist/chunk-A7TC7IOP.cjs.map +0 -1
- package/dist/chunk-F7JQ7BX7.js +0 -240
- package/dist/chunk-F7JQ7BX7.js.map +0 -1
- package/dist/chunk-I34X53VL.js +0 -688
- package/dist/chunk-I34X53VL.js.map +0 -1
- package/dist/chunk-ISNF6USX.cjs +0 -688
- package/dist/chunk-ISNF6USX.cjs.map +0 -1
- package/dist/chunk-IYEHOE4S.cjs +0 -405
- package/dist/chunk-IYEHOE4S.cjs.map +0 -1
- package/dist/chunk-L2YZQAG3.cjs +0 -240
- package/dist/chunk-L2YZQAG3.cjs.map +0 -1
- package/dist/chunk-N7RWT46K.js.map +0 -1
- package/dist/chunk-OJ34O3Q2.cjs.map +0 -1
- package/dist/chunk-TXSETOGH.js +0 -55
- package/dist/chunk-TXSETOGH.js.map +0 -1
- package/dist/chunk-XVV3OOQX.js.map +0 -1
- package/dist/d1.cjs +0 -277
- package/dist/d1.cjs.map +0 -1
- package/dist/d1.d.cts +0 -72
- package/dist/d1.d.ts +0 -72
- package/dist/d1.js +0 -277
- package/dist/d1.js.map +0 -1
- package/dist/pg-3ACXFMU4.cjs +0 -59
- package/dist/pg-3ACXFMU4.cjs.map +0 -1
- package/dist/pg-GHOW3XSG.js +0 -59
- package/dist/sqlite3-EEIKQCJR.js +0 -25
- package/dist/sqlite3-SE4DDYZE.cjs +0 -25
- package/dist/sqlite3-SE4DDYZE.cjs.map +0 -1
- /package/dist/{pg-GHOW3XSG.js.map → postgresql.js.map} +0 -0
- /package/dist/{sqlite3-EEIKQCJR.js.map → sqlite.js.map} +0 -0
|
@@ -0,0 +1,451 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
var _chunkAMACBMAZcjs = require('./chunk-AMACBMAZ.cjs');
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
var _chunkR7P7CNMKcjs = require('./chunk-R7P7CNMK.cjs');
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
var _chunkXOQHZABKcjs = require('./chunk-XOQHZABK.cjs');
|
|
51
|
+
|
|
52
|
+
// src/storage/sqlite/d1/connections/d1Client.ts
|
|
53
|
+
var d1Client = (options) => {
|
|
54
|
+
const { database, session, serializer } = options;
|
|
55
|
+
const execute = _nullishCoalesce(session, () => ( database));
|
|
56
|
+
return {
|
|
57
|
+
database,
|
|
58
|
+
session,
|
|
59
|
+
connect: () => Promise.resolve(),
|
|
60
|
+
close: () => Promise.resolve(),
|
|
61
|
+
withSession: async (constraintOrBookmark) => {
|
|
62
|
+
const newSession = constraintOrBookmark ? database.withSession(constraintOrBookmark) : database.withSession();
|
|
63
|
+
return Promise.resolve(
|
|
64
|
+
d1Client({
|
|
65
|
+
database,
|
|
66
|
+
session: newSession,
|
|
67
|
+
serializer
|
|
68
|
+
})
|
|
69
|
+
);
|
|
70
|
+
},
|
|
71
|
+
query: async (sql, _options) => {
|
|
72
|
+
const { query, params } = _chunkAMACBMAZcjs.sqliteFormatter.format(sql, { serializer });
|
|
73
|
+
const stmt = execute.prepare(query);
|
|
74
|
+
const bound = _optionalChain([params, 'optionalAccess', _ => _.length]) ? stmt.bind(...params) : stmt;
|
|
75
|
+
const { results } = await bound.all();
|
|
76
|
+
return { rowCount: _nullishCoalesce(_optionalChain([results, 'optionalAccess', _2 => _2.length]), () => ( 0)), rows: _nullishCoalesce(results, () => ( [])) };
|
|
77
|
+
},
|
|
78
|
+
batchQuery: async (sqls, _options) => {
|
|
79
|
+
const statements = sqls.map((sql) => {
|
|
80
|
+
const { query, params } = _chunkAMACBMAZcjs.sqliteFormatter.format(sql, { serializer });
|
|
81
|
+
const stmt = execute.prepare(query);
|
|
82
|
+
return _optionalChain([params, 'optionalAccess', _3 => _3.length]) ? stmt.bind(...params) : stmt;
|
|
83
|
+
});
|
|
84
|
+
const results = await execute.batch(statements);
|
|
85
|
+
return results.map((result) => ({
|
|
86
|
+
rowCount: _nullishCoalesce(_optionalChain([result, 'access', _4 => _4.results, 'optionalAccess', _5 => _5.length]), () => ( 0)),
|
|
87
|
+
rows: _nullishCoalesce(result.results, () => ( []))
|
|
88
|
+
}));
|
|
89
|
+
},
|
|
90
|
+
command: async (sql, _options) => {
|
|
91
|
+
const { query, params } = _chunkAMACBMAZcjs.sqliteFormatter.format(sql, { serializer });
|
|
92
|
+
const stmt = execute.prepare(query);
|
|
93
|
+
const bound = _optionalChain([params, 'optionalAccess', _6 => _6.length]) ? stmt.bind(...params) : stmt;
|
|
94
|
+
const result = await bound.run();
|
|
95
|
+
return {
|
|
96
|
+
rowCount: _nullishCoalesce(_optionalChain([result, 'access', _7 => _7.meta, 'optionalAccess', _8 => _8.changes]), () => ( 0)),
|
|
97
|
+
rows: _nullishCoalesce(result.results, () => ( []))
|
|
98
|
+
};
|
|
99
|
+
},
|
|
100
|
+
batchCommand: async (sqls, options2) => {
|
|
101
|
+
const statements = sqls.map((sql) => {
|
|
102
|
+
const { query, params } = _chunkAMACBMAZcjs.sqliteFormatter.format(sql, { serializer });
|
|
103
|
+
const stmt = execute.prepare(query);
|
|
104
|
+
return _optionalChain([params, 'optionalAccess', _9 => _9.length]) ? stmt.bind(...params) : stmt;
|
|
105
|
+
});
|
|
106
|
+
const batchResults = await execute.batch(statements);
|
|
107
|
+
return batchResults.map((result, i) => {
|
|
108
|
+
const qr = {
|
|
109
|
+
rowCount: _nullishCoalesce(_optionalChain([result, 'access', _10 => _10.meta, 'optionalAccess', _11 => _11.changes]), () => ( 0)),
|
|
110
|
+
rows: _nullishCoalesce(result.results, () => ( []))
|
|
111
|
+
};
|
|
112
|
+
if (_optionalChain([options2, 'optionalAccess', _12 => _12.assertChanges]) && (_nullishCoalesce(qr.rowCount, () => ( 0))) === 0) {
|
|
113
|
+
throw new (0, _chunkXOQHZABKcjs.BatchCommandNoChangesError)(i);
|
|
114
|
+
}
|
|
115
|
+
return qr;
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
// src/storage/sqlite/d1/errors/errorMapper.ts
|
|
122
|
+
var getErrorMessage = (error) => error instanceof Error ? error.message : void 0;
|
|
123
|
+
var asError = (error) => error instanceof Error ? error : void 0;
|
|
124
|
+
var mapConstraintError = (message, innerError) => {
|
|
125
|
+
const upperMessage = _nullishCoalesce(_optionalChain([message, 'optionalAccess', _13 => _13.toUpperCase, 'call', _14 => _14()]), () => ( ""));
|
|
126
|
+
if (upperMessage.includes("UNIQUE") || upperMessage.includes("PRIMARY KEY"))
|
|
127
|
+
return new (0, _chunkXOQHZABKcjs.UniqueConstraintError)(message, innerError);
|
|
128
|
+
if (upperMessage.includes("FOREIGN KEY"))
|
|
129
|
+
return new (0, _chunkXOQHZABKcjs.ForeignKeyViolationError)(message, innerError);
|
|
130
|
+
if (upperMessage.includes("NOT NULL"))
|
|
131
|
+
return new (0, _chunkXOQHZABKcjs.NotNullViolationError)(message, innerError);
|
|
132
|
+
if (upperMessage.includes("CHECK"))
|
|
133
|
+
return new (0, _chunkXOQHZABKcjs.CheckViolationError)(message, innerError);
|
|
134
|
+
return new (0, _chunkXOQHZABKcjs.IntegrityConstraintViolationError)(message, innerError);
|
|
135
|
+
};
|
|
136
|
+
var isConstraintMessage = (upper) => upper.includes("CONSTRAINT") || upper.includes("UNIQUE") || upper.includes("PRIMARY KEY") || upper.includes("FOREIGN KEY") || upper.includes("NOT NULL");
|
|
137
|
+
var SQLITE_CODE_RE = /SQLITE_([A-Z]+)/;
|
|
138
|
+
var extractEmbeddedSqliteCode = (message) => {
|
|
139
|
+
const match = SQLITE_CODE_RE.exec(message);
|
|
140
|
+
return match ? `SQLITE_${match[1]}` : void 0;
|
|
141
|
+
};
|
|
142
|
+
var mapEmbeddedSqliteCode = (code, message, innerError) => {
|
|
143
|
+
switch (code) {
|
|
144
|
+
case "SQLITE_CONSTRAINT":
|
|
145
|
+
return mapConstraintError(message, innerError);
|
|
146
|
+
case "SQLITE_BUSY":
|
|
147
|
+
return new (0, _chunkXOQHZABKcjs.LockNotAvailableError)(message, innerError);
|
|
148
|
+
case "SQLITE_LOCKED":
|
|
149
|
+
return new (0, _chunkXOQHZABKcjs.DeadlockError)(message, innerError);
|
|
150
|
+
case "SQLITE_PROTOCOL":
|
|
151
|
+
return new (0, _chunkXOQHZABKcjs.LockNotAvailableError)(message, innerError);
|
|
152
|
+
case "SQLITE_CANTOPEN":
|
|
153
|
+
return new (0, _chunkXOQHZABKcjs.ConnectionError)(message, innerError);
|
|
154
|
+
case "SQLITE_NOTADB":
|
|
155
|
+
return new (0, _chunkXOQHZABKcjs.ConnectionError)(message, innerError);
|
|
156
|
+
case "SQLITE_NOMEM":
|
|
157
|
+
return new (0, _chunkXOQHZABKcjs.InsufficientResourcesError)(message, innerError);
|
|
158
|
+
case "SQLITE_FULL":
|
|
159
|
+
return new (0, _chunkXOQHZABKcjs.InsufficientResourcesError)(message, innerError);
|
|
160
|
+
case "SQLITE_IOERR":
|
|
161
|
+
return new (0, _chunkXOQHZABKcjs.SystemError)(message, innerError);
|
|
162
|
+
case "SQLITE_CORRUPT":
|
|
163
|
+
return new (0, _chunkXOQHZABKcjs.SystemError)(message, innerError);
|
|
164
|
+
case "SQLITE_INTERNAL":
|
|
165
|
+
return new (0, _chunkXOQHZABKcjs.SystemError)(message, innerError);
|
|
166
|
+
case "SQLITE_NOLFS":
|
|
167
|
+
return new (0, _chunkXOQHZABKcjs.SystemError)(message, innerError);
|
|
168
|
+
case "SQLITE_TOOBIG":
|
|
169
|
+
return new (0, _chunkXOQHZABKcjs.DataError)(message, innerError);
|
|
170
|
+
case "SQLITE_MISMATCH":
|
|
171
|
+
return new (0, _chunkXOQHZABKcjs.DataError)(message, innerError);
|
|
172
|
+
case "SQLITE_RANGE":
|
|
173
|
+
return new (0, _chunkXOQHZABKcjs.DataError)(message, innerError);
|
|
174
|
+
case "SQLITE_ERROR":
|
|
175
|
+
return new (0, _chunkXOQHZABKcjs.InvalidOperationError)(message, innerError);
|
|
176
|
+
case "SQLITE_READONLY":
|
|
177
|
+
return new (0, _chunkXOQHZABKcjs.InvalidOperationError)(message, innerError);
|
|
178
|
+
case "SQLITE_MISUSE":
|
|
179
|
+
return new (0, _chunkXOQHZABKcjs.InvalidOperationError)(message, innerError);
|
|
180
|
+
case "SQLITE_AUTH":
|
|
181
|
+
return new (0, _chunkXOQHZABKcjs.InvalidOperationError)(message, innerError);
|
|
182
|
+
case "SQLITE_PERM":
|
|
183
|
+
return new (0, _chunkXOQHZABKcjs.InvalidOperationError)(message, innerError);
|
|
184
|
+
case "SQLITE_SCHEMA":
|
|
185
|
+
return new (0, _chunkXOQHZABKcjs.InvalidOperationError)(message, innerError);
|
|
186
|
+
case "SQLITE_ABORT":
|
|
187
|
+
return new (0, _chunkXOQHZABKcjs.SerializationError)(message, innerError);
|
|
188
|
+
case "SQLITE_INTERRUPT":
|
|
189
|
+
return new (0, _chunkXOQHZABKcjs.SerializationError)(message, innerError);
|
|
190
|
+
}
|
|
191
|
+
return void 0;
|
|
192
|
+
};
|
|
193
|
+
var mapD1Error = (error) => {
|
|
194
|
+
if (_chunkXOQHZABKcjs.DumboError.isInstanceOf(error)) return error;
|
|
195
|
+
const message = getErrorMessage(error);
|
|
196
|
+
if (!message)
|
|
197
|
+
return new (0, _chunkXOQHZABKcjs.DumboError)({
|
|
198
|
+
errorCode: 500,
|
|
199
|
+
message: error instanceof Error ? error.message : String(error),
|
|
200
|
+
innerError: asError(error)
|
|
201
|
+
});
|
|
202
|
+
const innerError = asError(error);
|
|
203
|
+
const upper = message.toUpperCase();
|
|
204
|
+
if (upper.startsWith("D1_TYPE_ERROR"))
|
|
205
|
+
return new (0, _chunkXOQHZABKcjs.DataError)(message, innerError);
|
|
206
|
+
if (upper.startsWith("D1_COLUMN_NOTFOUND"))
|
|
207
|
+
return new (0, _chunkXOQHZABKcjs.DataError)(message, innerError);
|
|
208
|
+
if (upper.startsWith("D1_DUMP_ERROR"))
|
|
209
|
+
return new (0, _chunkXOQHZABKcjs.SystemError)(message, innerError);
|
|
210
|
+
if (upper.startsWith("D1_SESSION_ERROR"))
|
|
211
|
+
return new (0, _chunkXOQHZABKcjs.ConnectionError)(message, innerError);
|
|
212
|
+
if (isConstraintMessage(upper)) {
|
|
213
|
+
return mapConstraintError(message, innerError);
|
|
214
|
+
}
|
|
215
|
+
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, _chunkXOQHZABKcjs.ConnectionError)(message, innerError);
|
|
217
|
+
if (upper.includes("D1 DB IS OVERLOADED") || upper.includes("TOO MANY REQUESTS") || upper.includes("MEMORY LIMIT WOULD BE EXCEEDED"))
|
|
218
|
+
return new (0, _chunkXOQHZABKcjs.InsufficientResourcesError)(message, innerError);
|
|
219
|
+
if (upper.startsWith("D1_ERROR") || upper.startsWith("D1_EXEC_ERROR")) {
|
|
220
|
+
const embeddedCode2 = extractEmbeddedSqliteCode(message);
|
|
221
|
+
if (embeddedCode2) {
|
|
222
|
+
const mapped = mapEmbeddedSqliteCode(embeddedCode2, message, innerError);
|
|
223
|
+
if (mapped) return mapped;
|
|
224
|
+
}
|
|
225
|
+
return new (0, _chunkXOQHZABKcjs.InvalidOperationError)(message, innerError);
|
|
226
|
+
}
|
|
227
|
+
const embeddedCode = extractEmbeddedSqliteCode(message);
|
|
228
|
+
if (embeddedCode) {
|
|
229
|
+
const mapped = mapEmbeddedSqliteCode(embeddedCode, message, innerError);
|
|
230
|
+
if (mapped) return mapped;
|
|
231
|
+
}
|
|
232
|
+
return new (0, _chunkXOQHZABKcjs.DumboError)({
|
|
233
|
+
errorCode: 500,
|
|
234
|
+
message,
|
|
235
|
+
innerError
|
|
236
|
+
});
|
|
237
|
+
};
|
|
238
|
+
|
|
239
|
+
// src/storage/sqlite/d1/execute/d1SqlExecutor.ts
|
|
240
|
+
var d1SQLExecutor = () => ({
|
|
241
|
+
driverType: "SQLite:d1",
|
|
242
|
+
formatter: _chunkAMACBMAZcjs.sqliteFormatter,
|
|
243
|
+
query: async (client, sql, options) => {
|
|
244
|
+
try {
|
|
245
|
+
return await client.query(sql, options);
|
|
246
|
+
} catch (error) {
|
|
247
|
+
_chunkXOQHZABKcjs.tracer.error("db:sql:query:execute:error", { error });
|
|
248
|
+
throw mapD1Error(error);
|
|
249
|
+
}
|
|
250
|
+
},
|
|
251
|
+
batchQuery: async (client, sqls, options) => {
|
|
252
|
+
try {
|
|
253
|
+
return await client.batchQuery(sqls, options);
|
|
254
|
+
} catch (error) {
|
|
255
|
+
_chunkXOQHZABKcjs.tracer.error("db:sql:batch_query:execute:error", { error });
|
|
256
|
+
throw mapD1Error(error);
|
|
257
|
+
}
|
|
258
|
+
},
|
|
259
|
+
command: async (client, sql, options) => {
|
|
260
|
+
try {
|
|
261
|
+
return await client.command(sql, options);
|
|
262
|
+
} catch (error) {
|
|
263
|
+
_chunkXOQHZABKcjs.tracer.error("db:sql:command:execute:error", { error });
|
|
264
|
+
throw mapD1Error(error);
|
|
265
|
+
}
|
|
266
|
+
},
|
|
267
|
+
batchCommand: async (client, sqls, options) => {
|
|
268
|
+
try {
|
|
269
|
+
return await client.batchCommand(sqls, options);
|
|
270
|
+
} catch (error) {
|
|
271
|
+
_chunkXOQHZABKcjs.tracer.error("db:sql:batch_command:execute:error", { error });
|
|
272
|
+
throw mapD1Error(error);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
});
|
|
276
|
+
|
|
277
|
+
// src/storage/sqlite/d1/transactions/d1Transaction.ts
|
|
278
|
+
var D1TransactionNotSupportedError = class extends Error {
|
|
279
|
+
constructor() {
|
|
280
|
+
super(
|
|
281
|
+
'D1 does not support SQL transactions (BEGIN/COMMIT/ROLLBACK/SAVEPOINT). Use { mode: "session_based" } to opt-in to session+batch semantics, or use connection.execute.batchCommand() for atomic multi-statement execution.'
|
|
282
|
+
);
|
|
283
|
+
this.name = "D1TransactionNotSupportedError";
|
|
284
|
+
}
|
|
285
|
+
};
|
|
286
|
+
var d1Transaction = (connection, serializer, defaultOptions) => (getClient, options) => {
|
|
287
|
+
const transactionCounter = _chunkAMACBMAZcjs.transactionNestingCounter.call(void 0, );
|
|
288
|
+
const allowNestedTransactions = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _15 => _15.allowNestedTransactions]), () => ( _optionalChain([defaultOptions, 'optionalAccess', _16 => _16.allowNestedTransactions])));
|
|
289
|
+
const mode = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _17 => _17.mode]), () => ( _optionalChain([defaultOptions, 'optionalAccess', _18 => _18.mode])));
|
|
290
|
+
let client = null;
|
|
291
|
+
let sessionClient = null;
|
|
292
|
+
const getDatabaseClient = async () => {
|
|
293
|
+
if (client) return Promise.resolve(client);
|
|
294
|
+
client = await getClient;
|
|
295
|
+
return client;
|
|
296
|
+
};
|
|
297
|
+
return {
|
|
298
|
+
connection: connection(),
|
|
299
|
+
driverType: D1DriverType,
|
|
300
|
+
begin: async function() {
|
|
301
|
+
if (mode !== "session_based") {
|
|
302
|
+
throw new D1TransactionNotSupportedError();
|
|
303
|
+
}
|
|
304
|
+
const client2 = await getDatabaseClient();
|
|
305
|
+
if (allowNestedTransactions) {
|
|
306
|
+
if (transactionCounter.level >= 1) {
|
|
307
|
+
transactionCounter.increment();
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
310
|
+
transactionCounter.increment();
|
|
311
|
+
}
|
|
312
|
+
sessionClient = await client2.withSession(_optionalChain([options, 'optionalAccess', _19 => _19.d1Session]));
|
|
313
|
+
},
|
|
314
|
+
commit: async function() {
|
|
315
|
+
const client2 = await getDatabaseClient();
|
|
316
|
+
try {
|
|
317
|
+
if (allowNestedTransactions) {
|
|
318
|
+
if (transactionCounter.level > 1) {
|
|
319
|
+
transactionCounter.decrement();
|
|
320
|
+
return;
|
|
321
|
+
}
|
|
322
|
+
transactionCounter.reset();
|
|
323
|
+
}
|
|
324
|
+
sessionClient = null;
|
|
325
|
+
} finally {
|
|
326
|
+
if (_optionalChain([options, 'optionalAccess', _20 => _20.close])) await _optionalChain([options, 'optionalAccess', _21 => _21.close, 'call', _22 => _22(client2)]);
|
|
327
|
+
}
|
|
328
|
+
},
|
|
329
|
+
rollback: async function(error) {
|
|
330
|
+
const client2 = await getDatabaseClient();
|
|
331
|
+
try {
|
|
332
|
+
if (allowNestedTransactions) {
|
|
333
|
+
if (transactionCounter.level > 1) {
|
|
334
|
+
transactionCounter.decrement();
|
|
335
|
+
return;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
sessionClient = null;
|
|
339
|
+
} finally {
|
|
340
|
+
if (_optionalChain([options, 'optionalAccess', _23 => _23.close])) await _optionalChain([options, 'optionalAccess', _24 => _24.close, 'call', _25 => _25(client2, error)]);
|
|
341
|
+
}
|
|
342
|
+
},
|
|
343
|
+
execute: _chunkXOQHZABKcjs.sqlExecutor.call(void 0, d1SQLExecutor(), {
|
|
344
|
+
connect: () => {
|
|
345
|
+
if (!sessionClient) {
|
|
346
|
+
throw new Error(
|
|
347
|
+
"Transaction has not been started. Call begin() first."
|
|
348
|
+
);
|
|
349
|
+
}
|
|
350
|
+
return Promise.resolve(sessionClient);
|
|
351
|
+
}
|
|
352
|
+
})
|
|
353
|
+
};
|
|
354
|
+
};
|
|
355
|
+
|
|
356
|
+
// src/storage/sqlite/d1/connections/d1Connection.ts
|
|
357
|
+
var D1DriverType = "SQLite:d1";
|
|
358
|
+
var d1Connection = (options) => {
|
|
359
|
+
const connection = _nullishCoalesce(_nullishCoalesce(options.connection, () => ( _optionalChain([options, 'access', _26 => _26.transaction, 'optionalAccess', _27 => _27.connection]))), () => ( {
|
|
360
|
+
..._chunkAMACBMAZcjs.sqliteAmbientClientConnection.call(void 0, {
|
|
361
|
+
driverType: D1DriverType,
|
|
362
|
+
client: _nullishCoalesce(options.client, () => ( d1Client(options))),
|
|
363
|
+
initTransaction: (connection2) => d1Transaction(
|
|
364
|
+
connection2,
|
|
365
|
+
options.serializer,
|
|
366
|
+
options.transactionOptions
|
|
367
|
+
),
|
|
368
|
+
serializer: options.serializer,
|
|
369
|
+
errorMapper: mapD1Error
|
|
370
|
+
})
|
|
371
|
+
}));
|
|
372
|
+
connection.d1Session = async (constraintOrBookmark) => {
|
|
373
|
+
const client = await connection.open();
|
|
374
|
+
const sessionClient = await client.withSession(constraintOrBookmark);
|
|
375
|
+
return d1Connection({
|
|
376
|
+
...options,
|
|
377
|
+
client: sessionClient
|
|
378
|
+
});
|
|
379
|
+
};
|
|
380
|
+
connection.withD1Session = async (handle, options2) => {
|
|
381
|
+
const sessionConnection = await connection.d1Session(options2);
|
|
382
|
+
try {
|
|
383
|
+
return await handle(sessionConnection);
|
|
384
|
+
} finally {
|
|
385
|
+
await sessionConnection.close();
|
|
386
|
+
}
|
|
387
|
+
};
|
|
388
|
+
return connection;
|
|
389
|
+
};
|
|
390
|
+
|
|
391
|
+
// src/storage/sqlite/d1/pool/d1ConnectionPool.ts
|
|
392
|
+
var d1Pool = (options) => _chunkXOQHZABKcjs.createSingletonConnectionPool.call(void 0, {
|
|
393
|
+
driverType: D1DriverType,
|
|
394
|
+
getConnection: () => d1Connection({
|
|
395
|
+
...options,
|
|
396
|
+
serializer: _chunkXOQHZABKcjs.JSONSerializer.from(options)
|
|
397
|
+
})
|
|
398
|
+
});
|
|
399
|
+
|
|
400
|
+
// src/storage/sqlite/d1/index.ts
|
|
401
|
+
var d1DumboDriver = {
|
|
402
|
+
driverType: D1DriverType,
|
|
403
|
+
createPool: (options) => d1Pool(options),
|
|
404
|
+
sqlFormatter: _chunkAMACBMAZcjs.sqliteFormatter,
|
|
405
|
+
defaultMigratorOptions: _chunkAMACBMAZcjs.DefaultSQLiteMigratorOptions,
|
|
406
|
+
canHandle: (options) => {
|
|
407
|
+
return options.driverType === D1DriverType && "database" in options;
|
|
408
|
+
},
|
|
409
|
+
databaseMetadata: _chunkR7P7CNMKcjs.sqliteMetadata
|
|
410
|
+
};
|
|
411
|
+
var useD1DumboDriver = () => {
|
|
412
|
+
_chunkXOQHZABKcjs.dumboDatabaseDriverRegistry.register(D1DriverType, d1DumboDriver);
|
|
413
|
+
};
|
|
414
|
+
useD1DumboDriver();
|
|
415
|
+
|
|
416
|
+
|
|
417
|
+
|
|
418
|
+
|
|
419
|
+
|
|
420
|
+
|
|
421
|
+
|
|
422
|
+
|
|
423
|
+
|
|
424
|
+
|
|
425
|
+
|
|
426
|
+
|
|
427
|
+
|
|
428
|
+
|
|
429
|
+
|
|
430
|
+
|
|
431
|
+
|
|
432
|
+
|
|
433
|
+
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
|
|
437
|
+
|
|
438
|
+
|
|
439
|
+
|
|
440
|
+
|
|
441
|
+
|
|
442
|
+
|
|
443
|
+
|
|
444
|
+
|
|
445
|
+
|
|
446
|
+
|
|
447
|
+
|
|
448
|
+
|
|
449
|
+
|
|
450
|
+
exports.D1DriverType = D1DriverType; exports.D1TransactionNotSupportedError = D1TransactionNotSupportedError; exports.DefaultSQLiteMigratorOptions = _chunkAMACBMAZcjs.DefaultSQLiteMigratorOptions; exports.InMemorySQLiteDatabase = _chunkAMACBMAZcjs.InMemorySQLiteDatabase; exports.SQLiteConnectionString = _chunkAMACBMAZcjs.SQLiteConnectionString; exports.SQLiteDatabaseName = _chunkAMACBMAZcjs.SQLiteDatabaseName; exports.d1Client = d1Client; exports.d1Connection = d1Connection; exports.d1DumboDriver = d1DumboDriver; exports.d1Pool = d1Pool; exports.d1SQLExecutor = d1SQLExecutor; exports.d1Transaction = d1Transaction; exports.defaultSQLiteDatabase = _chunkR7P7CNMKcjs.defaultSQLiteDatabase; exports.isInMemoryDatabase = _chunkAMACBMAZcjs.isInMemoryDatabase; exports.isSQLiteError = _chunkAMACBMAZcjs.isSQLiteError; exports.mapD1Error = mapD1Error; exports.mapSqliteError = _chunkAMACBMAZcjs.mapSqliteError; exports.sqliteAlwaysNewConnectionPool = _chunkAMACBMAZcjs.sqliteAlwaysNewConnectionPool; exports.sqliteAmbientClientConnection = _chunkAMACBMAZcjs.sqliteAmbientClientConnection; exports.sqliteAmbientConnectionPool = _chunkAMACBMAZcjs.sqliteAmbientConnectionPool; exports.sqliteClientConnection = _chunkAMACBMAZcjs.sqliteClientConnection; exports.sqliteConnection = _chunkAMACBMAZcjs.sqliteConnection; exports.sqliteExecute = _chunkAMACBMAZcjs.sqliteExecute; exports.sqliteFormatter = _chunkAMACBMAZcjs.sqliteFormatter; exports.sqliteMetadata = _chunkR7P7CNMKcjs.sqliteMetadata; exports.sqlitePool = _chunkAMACBMAZcjs.sqlitePool; exports.sqlitePoolClientConnection = _chunkAMACBMAZcjs.sqlitePoolClientConnection; exports.sqliteSQLExecutor = _chunkAMACBMAZcjs.sqliteSQLExecutor; exports.sqliteSingletonConnectionPool = _chunkAMACBMAZcjs.sqliteSingletonConnectionPool; exports.sqliteTransaction = _chunkAMACBMAZcjs.sqliteTransaction; exports.tableExists = _chunkR7P7CNMKcjs.tableExists; exports.toSqlitePoolOptions = _chunkAMACBMAZcjs.toSqlitePoolOptions; exports.transactionNestingCounter = _chunkAMACBMAZcjs.transactionNestingCounter; exports.useD1DumboDriver = useD1DumboDriver;
|
|
451
|
+
//# sourceMappingURL=cloudflare.cjs.map
|
|
@@ -0,0 +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":"AAAA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACA;ACbO,IAAM,SAAA,EAAW,CAAC,OAAA,EAAA,GAAuC;AAC9D,EAAA,MAAM,EAAE,QAAA,EAAU,OAAA,EAAS,WAAW,EAAA,EAAI,OAAA;AAE1C,EAAA,MAAM,QAAA,mBAAU,OAAA,UAAW,UAAA;AAE3B,EAAA,OAAO;AAAA,IACL,QAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA,EAAS,CAAA,EAAA,GAAM,OAAA,CAAQ,OAAA,CAAQ,CAAA;AAAA,IAC/B,KAAA,EAAO,CAAA,EAAA,GAAM,OAAA,CAAQ,OAAA,CAAQ,CAAA;AAAA,IAC7B,WAAA,EAAa,MAAA,CAAO,oBAAA,EAAA,GAA4C;AAC9D,MAAA,MAAM,WAAA,EAAa,qBAAA,EACf,QAAA,CAAS,WAAA,CAAY,oBAA8B,EAAA,EACnD,QAAA,CAAS,WAAA,CAAY,CAAA;AAEzB,MAAA,OAAO,OAAA,CAAQ,OAAA;AAAA,QACb,QAAA,CAAS;AAAA,UACP,QAAA;AAAA,UACA,OAAA,EAAS,UAAA;AAAA,UACT;AAAA,QACF,CAAC;AAAA,MACH,CAAA;AAAA,IACF,CAAA;AAAA,IAEA,KAAA,EAAO,MAAA,CACL,GAAA,EACA,QAAA,EAAA,GACiC;AACjC,MAAA,MAAM,EAAE,KAAA,EAAO,OAAO,EAAA,EAAI,iCAAA,CAAgB,MAAA,CAAO,GAAA,EAAK,EAAE,WAAW,CAAC,CAAA;AACpE,MAAA,MAAM,KAAA,EAAO,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAA;AAClC,MAAA,MAAM,MAAA,kBAAQ,MAAA,2BAAQ,SAAA,EAAS,IAAA,CAAK,IAAA,CAAK,GAAG,MAAM,EAAA,EAAI,IAAA;AACtD,MAAA,MAAM,EAAE,QAAQ,EAAA,EAAI,MAAM,KAAA,CAAM,GAAA,CAAY,CAAA;AAC5C,MAAA,OAAO,EAAE,QAAA,mCAAU,OAAA,6BAAS,QAAA,UAAU,GAAA,EAAG,IAAA,mBAAM,OAAA,UAAW,CAAC,IAAE,CAAA;AAAA,IAC/D,CAAA;AAAA,IAEA,UAAA,EAAY,MAAA,CACV,IAAA,EACA,QAAA,EAAA,GACmC;AACnC,MAAA,MAAM,WAAA,EAAa,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,EAAA,GAAQ;AACnC,QAAA,MAAM,EAAE,KAAA,EAAO,OAAO,EAAA,EAAI,iCAAA,CAAgB,MAAA,CAAO,GAAA,EAAK,EAAE,WAAW,CAAC,CAAA;AACpE,QAAA,MAAM,KAAA,EAAO,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAA;AAClC,QAAA,uBAAO,MAAA,6BAAQ,SAAA,EAAS,IAAA,CAAK,IAAA,CAAK,GAAG,MAAM,EAAA,EAAI,IAAA;AAAA,MACjD,CAAC,CAAA;AACD,MAAA,MAAM,QAAA,EAAU,MAAM,OAAA,CAAQ,KAAA,CAAc,UAAU,CAAA;AACtD,MAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,EAAA,GAAA,CAAY;AAAA,QAC9B,QAAA,mCAAU,MAAA,qBAAO,OAAA,6BAAS,QAAA,UAAU,GAAA;AAAA,QACpC,IAAA,mBAAM,MAAA,CAAO,OAAA,UAAW,CAAC;AAAA,MAC3B,CAAA,CAAE,CAAA;AAAA,IACJ,CAAA;AAAA,IAEA,OAAA,EAAS,MAAA,CACP,GAAA,EACA,QAAA,EAAA,GACiC;AACjC,MAAA,MAAM,EAAE,KAAA,EAAO,OAAO,EAAA,EAAI,iCAAA,CAAgB,MAAA,CAAO,GAAA,EAAK,EAAE,WAAW,CAAC,CAAA;AACpE,MAAA,MAAM,KAAA,EAAO,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAA;AAClC,MAAA,MAAM,MAAA,kBAAQ,MAAA,6BAAQ,SAAA,EAAS,IAAA,CAAK,IAAA,CAAK,GAAG,MAAM,EAAA,EAAI,IAAA;AACtD,MAAA,MAAM,OAAA,EAAS,MAAM,KAAA,CAAM,GAAA,CAAY,CAAA;AACvC,MAAA,OAAO;AAAA,QACL,QAAA,mCAAU,MAAA,qBAAO,IAAA,6BAAM,SAAA,UAAW,GAAA;AAAA,QAClC,IAAA,mBAAM,MAAA,CAAO,OAAA,UAAW,CAAC;AAAA,MAC3B,CAAA;AAAA,IACF,CAAA;AAAA,IAEA,YAAA,EAAc,MAAA,CACZ,IAAA,EACAA,QAAAA,EAAAA,GACmC;AACnC,MAAA,MAAM,WAAA,EAAa,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,EAAA,GAAQ;AACnC,QAAA,MAAM,EAAE,KAAA,EAAO,OAAO,EAAA,EAAI,iCAAA,CAAgB,MAAA,CAAO,GAAA,EAAK,EAAE,WAAW,CAAC,CAAA;AACpE,QAAA,MAAM,KAAA,EAAO,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAA;AAClC,QAAA,uBAAO,MAAA,6BAAQ,SAAA,EAAS,IAAA,CAAK,IAAA,CAAK,GAAG,MAAM,EAAA,EAAI,IAAA;AAAA,MACjD,CAAC,CAAA;AACD,MAAA,MAAM,aAAA,EAAe,MAAM,OAAA,CAAQ,KAAA,CAAc,UAAU,CAAA;AAE3D,MAAA,OAAO,YAAA,CAAa,GAAA,CAAI,CAAC,MAAA,EAAQ,CAAA,EAAA,GAAM;AACrC,QAAA,MAAM,GAAA,EAA0B;AAAA,UAC9B,QAAA,mCAAU,MAAA,uBAAO,IAAA,+BAAM,SAAA,UAAW,GAAA;AAAA,UAClC,IAAA,mBAAM,MAAA,CAAO,OAAA,UAAW,CAAC;AAAA,QAC3B,CAAA;AAEA,QAAA,GAAA,iBAAIA,QAAAA,+BAAS,gBAAA,GAAA,kBAAkB,EAAA,CAAG,QAAA,UAAY,GAAA,EAAA,IAAO,CAAA,EAAG;AACtD,UAAA,MAAM,IAAI,iDAAA,CAA2B,CAAC,CAAA;AAAA,QACxC;AAEA,QAAA,OAAO,EAAA;AAAA,MACT,CAAC,CAAA;AAAA,IACH;AAAA,EACF,CAAA;AACF,CAAA;ADTA;AACA;AEvGA,IAAM,gBAAA,EAAkB,CAAC,KAAA,EAAA,GACvB,MAAA,WAAiB,MAAA,EAAQ,KAAA,CAAM,QAAA,EAAU,KAAA,CAAA;AAE3C,IAAM,QAAA,EAAU,CAAC,KAAA,EAAA,GACf,MAAA,WAAiB,MAAA,EAAQ,MAAA,EAAQ,KAAA,CAAA;AASnC,IAAM,mBAAA,EAAqB,CACzB,OAAA,EACA,UAAA,EAAA,GACe;AACf,EAAA,MAAM,aAAA,mCAAe,OAAA,+BAAS,WAAA,qBAAY,GAAA,UAAK,IAAA;AAE/C,EAAA,GAAA,CAAI,YAAA,CAAa,QAAA,CAAS,QAAQ,EAAA,GAAK,YAAA,CAAa,QAAA,CAAS,aAAa,CAAA;AACxE,IAAA,OAAO,IAAI,4CAAA,CAAsB,OAAA,EAAS,UAAU,CAAA;AAEtD,EAAA,GAAA,CAAI,YAAA,CAAa,QAAA,CAAS,aAAa,CAAA;AACrC,IAAA,OAAO,IAAI,+CAAA,CAAyB,OAAA,EAAS,UAAU,CAAA;AAEzD,EAAA,GAAA,CAAI,YAAA,CAAa,QAAA,CAAS,UAAU,CAAA;AAClC,IAAA,OAAO,IAAI,4CAAA,CAAsB,OAAA,EAAS,UAAU,CAAA;AAEtD,EAAA,GAAA,CAAI,YAAA,CAAa,QAAA,CAAS,OAAO,CAAA;AAC/B,IAAA,OAAO,IAAI,0CAAA,CAAoB,OAAA,EAAS,UAAU,CAAA;AAEpD,EAAA,OAAO,IAAI,wDAAA,CAAkC,OAAA,EAAS,UAAU,CAAA;AAClE,CAAA;AAEA,IAAM,oBAAA,EAAsB,CAAC,KAAA,EAAA,GAC3B,KAAA,CAAM,QAAA,CAAS,YAAY,EAAA,GAC3B,KAAA,CAAM,QAAA,CAAS,QAAQ,EAAA,GACvB,KAAA,CAAM,QAAA,CAAS,aAAa,EAAA,GAC5B,KAAA,CAAM,QAAA,CAAS,aAAa,EAAA,GAC5B,KAAA,CAAM,QAAA,CAAS,UAAU,CAAA;AAG3B,IAAM,eAAA,EAAiB,iBAAA;AAEvB,IAAM,0BAAA,EAA4B,CAAC,OAAA,EAAA,GAAwC;AACzE,EAAA,MAAM,MAAA,EAAQ,cAAA,CAAe,IAAA,CAAK,OAAO,CAAA;AACzC,EAAA,OAAO,MAAA,EAAQ,CAAA,OAAA,EAAU,KAAA,CAAM,CAAC,CAAC,CAAA,EAAA;AACnC;AAaE;AAGc,EAAA;AACP,IAAA;AACuB,MAAA;AACvB,IAAA;AACQ,MAAA;AACR,IAAA;AACsB,MAAA;AACtB,IAAA;AACQ,MAAA;AACR,IAAA;AACwB,MAAA;AACxB,IAAA;AACwB,MAAA;AACxB,IAAA;AACQ,MAAA;AACR,IAAA;AACQ,MAAA;AACR,IAAA;AACoB,MAAA;AACpB,IAAA;AACoB,MAAA;AACpB,IAAA;AACoB,MAAA;AACpB,IAAA;AACoB,MAAA;AACpB,IAAA;AAC2B,MAAA;AAC3B,IAAA;AAC2B,MAAA;AAC3B,IAAA;AAC2B,MAAA;AAC3B,IAAA;AACQ,MAAA;AACR,IAAA;AACQ,MAAA;AACR,IAAA;AACQ,MAAA;AACR,IAAA;AACQ,MAAA;AACR,IAAA;AACQ,MAAA;AACR,IAAA;AACQ,MAAA;AACR,IAAA;AAC2B,MAAA;AAC3B,IAAA;AAC2B,MAAA;AAClC,EAAA;AACO,EAAA;AACT;AA+B0D;AACX,EAAA;AAEb,EAAA;AAC3B,EAAA;AACmB,IAAA;AACT,MAAA;AACe,MAAA;AACD,MAAA;AAC1B,IAAA;AAE6B,EAAA;AACE,EAAA;AAIb,EAAA;AACW,IAAA;AAEX,EAAA;AACW,IAAA;AAEX,EAAA;AACa,IAAA;AAEb,EAAA;AACQ,IAAA;AAEG,EAAA;AACJ,IAAA;AAC5B,EAAA;AAGiB,EAAA;AAIY,IAAA;AAGZ,EAAA;AAIJ,IAAA;AAEkB,EAAA;AACR,IAAA;AACH,IAAA;AACD,MAAA;AACI,MAAA;AACrB,IAAA;AAEW,IAAA;AACb,EAAA;AAEqB,EAAA;AACH,EAAA;AACD,IAAA;AACI,IAAA;AACrB,EAAA;AAEsB,EAAA;AACT,IAAA;AACX,IAAA;AACA,IAAA;AACD,EAAA;AACH;AFUoC;AACA;AGhOuC;AAC7D,EAAA;AACD,EAAA;AAKT,EAAA;AAEI,IAAA;AACgC,MAAA;AACpB,IAAA;AACD,MAAA;AACS,MAAA;AACxB,IAAA;AACF,EAAA;AAKE,EAAA;AAEI,IAAA;AACkB,MAAA;AACN,IAAA;AACD,MAAA;AACS,MAAA;AACxB,IAAA;AACF,EAAA;AAKE,EAAA;AAEI,IAAA;AACkC,MAAA;AACtB,IAAA;AACD,MAAA;AACS,MAAA;AACxB,IAAA;AACF,EAAA;AAIE,EAAA;AAGI,IAAA;AACkB,MAAA;AACN,IAAA;AACD,MAAA;AACS,MAAA;AACxB,IAAA;AACF,EAAA;AACF;AH8MoC;AACA;AI5PvB;AACG,EAAA;AACZ,IAAA;AACE,MAAA;AAGF,IAAA;AACY,IAAA;AACd,EAAA;AACF;AAKI;AAS2B,EAAA;AAGzB,EAAA;AAG4B,EAAA;AAEA,EAAA;AACO,EAAA;AAEX,EAAA;AACG,IAAA;AAEZ,IAAA;AACR,IAAA;AACT,EAAA;AAEO,EAAA;AACkB,IAAA;AACX,IAAA;AACa,IAAA;AACO,MAAA;AAClB,QAAA;AACZ,MAAA;AAEqB,MAAA;AAEQ,MAAA;AACJ,QAAA;AACF,UAAA;AACnB,UAAA;AACF,QAAA;AAEmB,QAAA;AACrB,MAAA;AAE6B,MAAA;AAC/B,IAAA;AAC0B,IAAA;AACH,MAAA;AAEjB,MAAA;AACE,QAAA;AACqB,UAAA;AACF,YAAA;AAEnB,YAAA;AACF,UAAA;AAEyB,UAAA;AAC3B,QAAA;AACgB,QAAA;AAChB,MAAA;AAC0B,QAAA;AAC5B,MAAA;AACF,IAAA;AAC2C,IAAA;AACpB,MAAA;AACjB,MAAA;AACE,QAAA;AACqB,UAAA;AACF,YAAA;AACnB,YAAA;AACF,UAAA;AACF,QAAA;AAEgB,QAAA;AAChB,MAAA;AAC0B,QAAA;AAC5B,MAAA;AACF,IAAA;AACqB,IAAA;AACJ,MAAA;AACO,QAAA;AACR,UAAA;AACR,YAAA;AACF,UAAA;AACF,QAAA;AACuB,QAAA;AACzB,MAAA;AACD,IAAA;AACH,EAAA;AACF;AJgOkC;AACA;AK/UM;AAsBoB;AACjC,EAAA;AAEpB,IAAA;AACW,MAAA;AACc,MAAA;AACRC,MAAAA;AAEdA,QAAAA;AACQ,QAAA;AACA,QAAA;AACV,MAAA;AACkB,MAAA;AACP,MAAA;AACd,IAAA;AACH,EAAA;AAGA,EAAA;AAEgC,IAAA;AAEJ,IAAA;AAER,IAAA;AACf,MAAA;AACK,MAAA;AACT,IAAA;AACH,EAAA;AAGE,EAAA;AAGgC,IAAA;AAE5B,IAAA;AACkB,MAAA;AACpB,IAAA;AAC8B,MAAA;AAChC,IAAA;AACF,EAAA;AAEO,EAAA;AACT;AL+SoC;AACA;AMnXlC;AACc,EAAA;AAEG,EAAA;AACR,IAAA;AAC6B,IAAA;AACjC,EAAA;AACJ;ANoXiC;AACA;AOzXhC;AACU,EAAA;AACoB,EAAA;AAClB,EAAA;AACU,EAAA;AACA,EAAA;AACQ,IAAA;AAChC,EAAA;AACkB,EAAA;AACpB;AAEsC;AACR,EAAA;AAC9B;AAMiB;APqXmB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","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"]}
|
|
@@ -0,0 +1,92 @@
|
|
|
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';
|
|
3
|
+
import { D1Database, D1DatabaseSession, D1SessionBookmark, D1SessionConstraint } from '@cloudflare/workers-types';
|
|
4
|
+
import { J as JSONSerializer, h as DatabaseTransaction, g as DatabaseTransactionOptions, C as Connection, k as JSONSerializationOptions, i as ConnectionPool, m as DumboError, l as DbSQLExecutor, c as DumboDatabaseDriver, f as DumboConnectionOptions } from './connectionString-oeg1LD5V.cjs';
|
|
5
|
+
|
|
6
|
+
type D1DatabaseOrSession = D1Database | D1DatabaseSession;
|
|
7
|
+
type D1ClientOptions = {
|
|
8
|
+
database: D1Database;
|
|
9
|
+
session?: D1DatabaseSession | undefined;
|
|
10
|
+
serializer: JSONSerializer;
|
|
11
|
+
};
|
|
12
|
+
type D1SessionOptions = {
|
|
13
|
+
constraintOrBookmark?: D1SessionBookmark | D1SessionConstraint;
|
|
14
|
+
};
|
|
15
|
+
type D1Client = SQLiteClient & {
|
|
16
|
+
database: D1Database;
|
|
17
|
+
session?: D1DatabaseSession | undefined;
|
|
18
|
+
withSession: (constraintOrBookmark?: D1SessionOptions) => Promise<D1Client>;
|
|
19
|
+
};
|
|
20
|
+
declare const d1Client: (options: D1ClientOptions) => D1Client;
|
|
21
|
+
|
|
22
|
+
type D1Transaction = DatabaseTransaction<D1Connection>;
|
|
23
|
+
type D1TransactionOptions = DatabaseTransactionOptions & {
|
|
24
|
+
d1Session?: D1SessionOptions;
|
|
25
|
+
mode?: D1TransactionMode;
|
|
26
|
+
};
|
|
27
|
+
type D1TransactionMode = 'session_based' | 'strict';
|
|
28
|
+
declare class D1TransactionNotSupportedError extends Error {
|
|
29
|
+
constructor();
|
|
30
|
+
}
|
|
31
|
+
declare const d1Transaction: (connection: () => D1Connection, serializer: JSONSerializer, defaultOptions?: D1TransactionOptions) => (getClient: Promise<D1Client>, options?: {
|
|
32
|
+
close: (client: D1Client, error?: unknown) => Promise<void>;
|
|
33
|
+
} & D1TransactionOptions) => D1Transaction;
|
|
34
|
+
|
|
35
|
+
type D1DriverType = SQLiteDriverType<'d1'>;
|
|
36
|
+
declare const D1DriverType: D1DriverType;
|
|
37
|
+
type D1Connection = Connection<D1Connection, D1DriverType, D1Client, D1Transaction, D1TransactionOptions> & {
|
|
38
|
+
d1Session: (constraintOrBookmark?: D1SessionOptions) => Promise<D1Connection>;
|
|
39
|
+
withD1Session: <Result = never>(handle: (connection: D1Connection) => Promise<Result>, options?: D1SessionOptions) => Promise<Result>;
|
|
40
|
+
};
|
|
41
|
+
type D1ConnectionOptions = SQLiteConnectionOptions<D1Connection> & {
|
|
42
|
+
client?: D1Client;
|
|
43
|
+
connection?: D1Connection;
|
|
44
|
+
transaction?: D1Transaction;
|
|
45
|
+
} & D1ClientOptions;
|
|
46
|
+
declare const d1Connection: (options: D1ConnectionOptions) => D1Connection;
|
|
47
|
+
|
|
48
|
+
type D1PoolOptions = Omit<D1ConnectionOptions, 'serializer'> & JSONSerializationOptions;
|
|
49
|
+
type D1ConnectionPool = ConnectionPool<D1Connection>;
|
|
50
|
+
declare const d1Pool: (options: D1PoolOptions) => D1ConnectionPool;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Maps a Cloudflare D1 error to a typed DumboError.
|
|
54
|
+
*
|
|
55
|
+
* Unlike node-sqlite3, D1 throws **plain `Error` objects** with no `code`
|
|
56
|
+
* property. All error information is embedded in `error.message`, using
|
|
57
|
+
* well-known prefixes from the `workerd` runtime:
|
|
58
|
+
*
|
|
59
|
+
* | Prefix | Meaning |
|
|
60
|
+
* |-----------------------|----------------------------------------------|
|
|
61
|
+
* | `D1_ERROR:` | General D1 / SQLite error |
|
|
62
|
+
* | `D1_EXEC_ERROR:` | Error during `.exec()` batch |
|
|
63
|
+
* | `D1_TYPE_ERROR:` | Type mismatch (e.g. `undefined` vs `null`) |
|
|
64
|
+
* | `D1_COLUMN_NOTFOUND` | Referenced column does not exist |
|
|
65
|
+
* | `D1_DUMP_ERROR:` | Error during database dump |
|
|
66
|
+
* | `D1_SESSION_ERROR:` | Session bookmark / constraint error |
|
|
67
|
+
*
|
|
68
|
+
* D1 also surfaces platform-level messages (no prefix) for transient errors:
|
|
69
|
+
* - "Network connection lost."
|
|
70
|
+
* - "D1 DB is overloaded. Too many requests queued."
|
|
71
|
+
* - "Memory limit would be exceeded by this operation."
|
|
72
|
+
* - "Cannot resolve D1 DB due to transient issue on remote node."
|
|
73
|
+
* - "D1 DB reset because its code was updated."
|
|
74
|
+
*
|
|
75
|
+
* Reference:
|
|
76
|
+
* - https://developers.cloudflare.com/d1/platform/client-api/
|
|
77
|
+
* - https://github.com/cloudflare/workerd (src/cloudflare/internal/d1-api.ts)
|
|
78
|
+
*
|
|
79
|
+
* Falls back to a generic DumboError (500) if the error is not a recognized D1 error.
|
|
80
|
+
*/
|
|
81
|
+
declare const mapD1Error: (error: unknown) => DumboError;
|
|
82
|
+
|
|
83
|
+
declare const d1SQLExecutor: () => DbSQLExecutor<D1DriverType, D1Client>;
|
|
84
|
+
|
|
85
|
+
type D1DumboOptions = D1PoolOptions;
|
|
86
|
+
declare const d1DumboDriver: DumboDatabaseDriver<D1Connection, D1DumboOptions, D1ConnectionPool>;
|
|
87
|
+
declare const useD1DumboDriver: () => void;
|
|
88
|
+
type D1DumboConnectionOptions = DumboConnectionOptions<typeof d1DumboDriver> & {
|
|
89
|
+
database: D1Database;
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
export { type D1Client, type D1ClientOptions, type D1Connection, type D1ConnectionOptions, type D1ConnectionPool, type D1DatabaseOrSession, D1DriverType, type D1DumboConnectionOptions, type D1DumboOptions, type D1PoolOptions, type D1SessionOptions, type D1Transaction, type D1TransactionMode, D1TransactionNotSupportedError, type D1TransactionOptions, SQLiteClient, SQLiteConnectionOptions, SQLiteDriverType, d1Client, d1Connection, d1DumboDriver, d1Pool, d1SQLExecutor, d1Transaction, mapD1Error, useD1DumboDriver };
|