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.
@@ -56,7 +56,30 @@ __webpack_require__.d(__webpack_exports__, {
56
56
  }
57
57
  });
58
58
  var DEFAULT_STATEMENT_TIMEOUT = 30000;
59
- function createTimeoutError(timeout, sql) {
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;