sqlite-executor 4.0.9 → 4.0.11
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/cjs/index.cjs +121 -38
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/utils/timeout.d.cts +5 -4
- package/dist/esm/index.mjs +121 -38
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/utils/timeout.d.mts +5 -4
- package/package.json +1 -1
package/dist/cjs/index.cjs
CHANGED
|
@@ -56,7 +56,30 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
56
56
|
}
|
|
57
57
|
});
|
|
58
58
|
var DEFAULT_STATEMENT_TIMEOUT = 30000;
|
|
59
|
-
function
|
|
59
|
+
function formatDateTime(date) {
|
|
60
|
+
var y = date.getFullYear();
|
|
61
|
+
var M = String(date.getMonth() + 1).padStart(2, "0");
|
|
62
|
+
var d = String(date.getDate()).padStart(2, "0");
|
|
63
|
+
var h = String(date.getHours()).padStart(2, "0");
|
|
64
|
+
var m = String(date.getMinutes()).padStart(2, "0");
|
|
65
|
+
var s = String(date.getSeconds()).padStart(2, "0");
|
|
66
|
+
var ms = String(date.getMilliseconds()).padStart(3, "0");
|
|
67
|
+
return "".concat(y, "-").concat(M, "-").concat(d, " ").concat(h, ":").concat(m, ":").concat(s, ".").concat(ms);
|
|
68
|
+
}
|
|
69
|
+
function formatDuration(ms) {
|
|
70
|
+
if (ms < 1000) return "".concat(ms, "ms");
|
|
71
|
+
if (ms < 60000) return "".concat((ms / 1000).toFixed(1), "s");
|
|
72
|
+
var mins = Math.floor(ms / 60000);
|
|
73
|
+
var secs = (ms % 60000 / 1000).toFixed(1);
|
|
74
|
+
return "".concat(mins, "m ").concat(secs, "s");
|
|
75
|
+
}
|
|
76
|
+
function createTimeoutError(timeout, sql, startTime) {
|
|
77
|
+
if (void 0 !== startTime) {
|
|
78
|
+
var elapsed = Math.max(0, performance.now() - startTime);
|
|
79
|
+
var startDate = new Date(Date.now() - elapsed);
|
|
80
|
+
var deadlineDate = new Date(startDate.getTime() + timeout);
|
|
81
|
+
return new Error("SQLite statement timed out after ".concat(formatDuration(timeout), " ") + "(start: ".concat(formatDateTime(startDate), ", ") + "deadline: ".concat(formatDateTime(deadlineDate), "): ").concat(sql));
|
|
82
|
+
}
|
|
60
83
|
return new Error("SQLite statement timed out after ".concat(timeout, "ms: ").concat(sql));
|
|
61
84
|
}
|
|
62
85
|
function toError(value) {
|
|
@@ -225,6 +248,43 @@ function createRowStreamParser(onRow) {
|
|
|
225
248
|
index++;
|
|
226
249
|
continue;
|
|
227
250
|
}
|
|
251
|
+
if (-1 !== elementEnd) {
|
|
252
|
+
if (isWhitespaceCode(code)) {
|
|
253
|
+
index++;
|
|
254
|
+
continue;
|
|
255
|
+
}
|
|
256
|
+
if (code === CHAR_COMMA || code === CHAR_CLOSE_BRACKET) {
|
|
257
|
+
onRow(buffer.slice(elementStart, elementEnd));
|
|
258
|
+
consumed = index + 1;
|
|
259
|
+
elementStart = -1;
|
|
260
|
+
elementEnd = -1;
|
|
261
|
+
nesting = 0;
|
|
262
|
+
if (code === CHAR_CLOSE_BRACKET) {
|
|
263
|
+
this.finished = true;
|
|
264
|
+
this.buffer = "";
|
|
265
|
+
this.started = false;
|
|
266
|
+
this.inString = false;
|
|
267
|
+
this.escaped = false;
|
|
268
|
+
this.elementStart = -1;
|
|
269
|
+
this.elementEnd = -1;
|
|
270
|
+
this.nesting = 0;
|
|
271
|
+
this._consumed = 0;
|
|
272
|
+
this.readPos = 0;
|
|
273
|
+
return buffer.slice(consumed);
|
|
274
|
+
}
|
|
275
|
+
index = consumed;
|
|
276
|
+
if (consumed > 65536) {
|
|
277
|
+
buffer = buffer.slice(consumed);
|
|
278
|
+
this.buffer = buffer;
|
|
279
|
+
this._consumed = 0;
|
|
280
|
+
index = 0;
|
|
281
|
+
consumed = 0;
|
|
282
|
+
}
|
|
283
|
+
continue;
|
|
284
|
+
}
|
|
285
|
+
index++;
|
|
286
|
+
continue;
|
|
287
|
+
}
|
|
228
288
|
if (code === CHAR_QUOTE) {
|
|
229
289
|
inString = true;
|
|
230
290
|
index++;
|
|
@@ -239,42 +299,6 @@ function createRowStreamParser(onRow) {
|
|
|
239
299
|
nesting--;
|
|
240
300
|
if (0 === nesting) elementEnd = index + 1;
|
|
241
301
|
}
|
|
242
|
-
if (-1 !== elementEnd) {
|
|
243
|
-
var lookAhead = index + 1;
|
|
244
|
-
while(lookAhead < buffer.length && isWhitespaceCode(buffer.charCodeAt(lookAhead)))lookAhead++;
|
|
245
|
-
if (lookAhead < buffer.length) {
|
|
246
|
-
var delimiter = buffer.charCodeAt(lookAhead);
|
|
247
|
-
if (delimiter === CHAR_COMMA || delimiter === CHAR_CLOSE_BRACKET) {
|
|
248
|
-
onRow(buffer.slice(elementStart, elementEnd));
|
|
249
|
-
consumed = lookAhead + 1;
|
|
250
|
-
elementStart = -1;
|
|
251
|
-
elementEnd = -1;
|
|
252
|
-
nesting = 0;
|
|
253
|
-
if (delimiter === CHAR_CLOSE_BRACKET) {
|
|
254
|
-
this.finished = true;
|
|
255
|
-
this.buffer = "";
|
|
256
|
-
this.started = false;
|
|
257
|
-
this.inString = false;
|
|
258
|
-
this.escaped = false;
|
|
259
|
-
this.elementStart = -1;
|
|
260
|
-
this.elementEnd = -1;
|
|
261
|
-
this.nesting = 0;
|
|
262
|
-
this._consumed = 0;
|
|
263
|
-
this.readPos = 0;
|
|
264
|
-
return buffer.slice(consumed);
|
|
265
|
-
}
|
|
266
|
-
index = consumed;
|
|
267
|
-
if (consumed > 65536) {
|
|
268
|
-
buffer = buffer.slice(consumed);
|
|
269
|
-
this.buffer = buffer;
|
|
270
|
-
this._consumed = 0;
|
|
271
|
-
index = 0;
|
|
272
|
-
consumed = 0;
|
|
273
|
-
}
|
|
274
|
-
continue;
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
302
|
index++;
|
|
279
303
|
}
|
|
280
304
|
this.started = started;
|
|
@@ -2269,7 +2293,7 @@ function prepareTaskTimeout(task, metrics) {
|
|
|
2269
2293
|
if (task.settled) return null;
|
|
2270
2294
|
task.timedout = true;
|
|
2271
2295
|
null == metrics || metrics.incrementTasksTimeout();
|
|
2272
|
-
return createTimeoutError(task.timeout, task.sql);
|
|
2296
|
+
return createTimeoutError(task.timeout, task.sql, task.startTime);
|
|
2273
2297
|
}
|
|
2274
2298
|
function createSweeper(param) {
|
|
2275
2299
|
var inflight = param.inflight, sweepIntervalMs = param.sweepIntervalMs, handleTaskTimeout = param.handleTaskTimeout;
|
|
@@ -2302,6 +2326,7 @@ function createFinalizeScheduler(param) {
|
|
|
2302
2326
|
var scheduled = false;
|
|
2303
2327
|
var immediate = null;
|
|
2304
2328
|
var cancelled = false;
|
|
2329
|
+
var delayedZeroRowQueries = new WeakSet();
|
|
2305
2330
|
var cancel = function() {
|
|
2306
2331
|
cancelled = true;
|
|
2307
2332
|
if (immediate) {
|
|
@@ -2317,8 +2342,66 @@ function createFinalizeScheduler(param) {
|
|
|
2317
2342
|
immediate = setImmediate(function() {
|
|
2318
2343
|
immediate = null;
|
|
2319
2344
|
if (cancelled) return;
|
|
2345
|
+
var delayedTasks = [];
|
|
2346
|
+
var hasQueryRows = Array.from(pendingFinalizeTasks).some(function(task) {
|
|
2347
|
+
return "query" === task.kind && task.rows.length > 0;
|
|
2348
|
+
});
|
|
2349
|
+
if (!(null == pendingStderr ? void 0 : pendingStderr.length) && hasQueryRows) {
|
|
2350
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
|
|
2351
|
+
try {
|
|
2352
|
+
for(var _iterator = pendingFinalizeTasks[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
2353
|
+
var task = _step.value;
|
|
2354
|
+
if ("query" === task.kind && 0 === task.rows.length && !task.stderrText && !task.consumerError && !delayedZeroRowQueries.has(task)) {
|
|
2355
|
+
delayedZeroRowQueries.add(task);
|
|
2356
|
+
delayedTasks.push(task);
|
|
2357
|
+
}
|
|
2358
|
+
}
|
|
2359
|
+
} catch (err) {
|
|
2360
|
+
_didIteratorError = true;
|
|
2361
|
+
_iteratorError = err;
|
|
2362
|
+
} finally{
|
|
2363
|
+
try {
|
|
2364
|
+
if (!_iteratorNormalCompletion && null != _iterator["return"]) _iterator["return"]();
|
|
2365
|
+
} finally{
|
|
2366
|
+
if (_didIteratorError) throw _iteratorError;
|
|
2367
|
+
}
|
|
2368
|
+
}
|
|
2369
|
+
var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;
|
|
2370
|
+
try {
|
|
2371
|
+
for(var _iterator1 = delayedTasks[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
|
|
2372
|
+
var task1 = _step1.value;
|
|
2373
|
+
pendingFinalizeTasks["delete"](task1);
|
|
2374
|
+
}
|
|
2375
|
+
} catch (err) {
|
|
2376
|
+
_didIteratorError1 = true;
|
|
2377
|
+
_iteratorError1 = err;
|
|
2378
|
+
} finally{
|
|
2379
|
+
try {
|
|
2380
|
+
if (!_iteratorNormalCompletion1 && null != _iterator1["return"]) _iterator1["return"]();
|
|
2381
|
+
} finally{
|
|
2382
|
+
if (_didIteratorError1) throw _iteratorError1;
|
|
2383
|
+
}
|
|
2384
|
+
}
|
|
2385
|
+
}
|
|
2320
2386
|
finalizePendingTasks(pendingFinalizeTasks, settle, pumpQueue, pendingStderr, inflight);
|
|
2387
|
+
var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;
|
|
2388
|
+
try {
|
|
2389
|
+
for(var _iterator2 = delayedTasks[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true){
|
|
2390
|
+
var task2 = _step2.value;
|
|
2391
|
+
pendingFinalizeTasks.add(task2);
|
|
2392
|
+
}
|
|
2393
|
+
} catch (err) {
|
|
2394
|
+
_didIteratorError2 = true;
|
|
2395
|
+
_iteratorError2 = err;
|
|
2396
|
+
} finally{
|
|
2397
|
+
try {
|
|
2398
|
+
if (!_iteratorNormalCompletion2 && null != _iterator2["return"]) _iterator2["return"]();
|
|
2399
|
+
} finally{
|
|
2400
|
+
if (_didIteratorError2) throw _iteratorError2;
|
|
2401
|
+
}
|
|
2402
|
+
}
|
|
2321
2403
|
scheduled = false;
|
|
2404
|
+
if (delayedTasks.length > 0) check();
|
|
2322
2405
|
});
|
|
2323
2406
|
};
|
|
2324
2407
|
check.cancel = cancel;
|