sqlite-executor 4.0.9 → 4.0.10

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.
@@ -225,6 +225,43 @@ function createRowStreamParser(onRow) {
225
225
  index++;
226
226
  continue;
227
227
  }
228
+ if (-1 !== elementEnd) {
229
+ if (isWhitespaceCode(code)) {
230
+ index++;
231
+ continue;
232
+ }
233
+ if (code === CHAR_COMMA || code === CHAR_CLOSE_BRACKET) {
234
+ onRow(buffer.slice(elementStart, elementEnd));
235
+ consumed = index + 1;
236
+ elementStart = -1;
237
+ elementEnd = -1;
238
+ nesting = 0;
239
+ if (code === CHAR_CLOSE_BRACKET) {
240
+ this.finished = true;
241
+ this.buffer = "";
242
+ this.started = false;
243
+ this.inString = false;
244
+ this.escaped = false;
245
+ this.elementStart = -1;
246
+ this.elementEnd = -1;
247
+ this.nesting = 0;
248
+ this._consumed = 0;
249
+ this.readPos = 0;
250
+ return buffer.slice(consumed);
251
+ }
252
+ index = consumed;
253
+ if (consumed > 65536) {
254
+ buffer = buffer.slice(consumed);
255
+ this.buffer = buffer;
256
+ this._consumed = 0;
257
+ index = 0;
258
+ consumed = 0;
259
+ }
260
+ continue;
261
+ }
262
+ index++;
263
+ continue;
264
+ }
228
265
  if (code === CHAR_QUOTE) {
229
266
  inString = true;
230
267
  index++;
@@ -239,42 +276,6 @@ function createRowStreamParser(onRow) {
239
276
  nesting--;
240
277
  if (0 === nesting) elementEnd = index + 1;
241
278
  }
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
279
  index++;
279
280
  }
280
281
  this.started = started;
@@ -2302,6 +2303,7 @@ function createFinalizeScheduler(param) {
2302
2303
  var scheduled = false;
2303
2304
  var immediate = null;
2304
2305
  var cancelled = false;
2306
+ var delayedZeroRowQueries = new WeakSet();
2305
2307
  var cancel = function() {
2306
2308
  cancelled = true;
2307
2309
  if (immediate) {
@@ -2317,8 +2319,66 @@ function createFinalizeScheduler(param) {
2317
2319
  immediate = setImmediate(function() {
2318
2320
  immediate = null;
2319
2321
  if (cancelled) return;
2322
+ var delayedTasks = [];
2323
+ var hasQueryRows = Array.from(pendingFinalizeTasks).some(function(task) {
2324
+ return "query" === task.kind && task.rows.length > 0;
2325
+ });
2326
+ if (!(null == pendingStderr ? void 0 : pendingStderr.length) && hasQueryRows) {
2327
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
2328
+ try {
2329
+ for(var _iterator = pendingFinalizeTasks[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
2330
+ var task = _step.value;
2331
+ if ("query" === task.kind && 0 === task.rows.length && !task.stderrText && !task.consumerError && !delayedZeroRowQueries.has(task)) {
2332
+ delayedZeroRowQueries.add(task);
2333
+ delayedTasks.push(task);
2334
+ }
2335
+ }
2336
+ } catch (err) {
2337
+ _didIteratorError = true;
2338
+ _iteratorError = err;
2339
+ } finally{
2340
+ try {
2341
+ if (!_iteratorNormalCompletion && null != _iterator["return"]) _iterator["return"]();
2342
+ } finally{
2343
+ if (_didIteratorError) throw _iteratorError;
2344
+ }
2345
+ }
2346
+ var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;
2347
+ try {
2348
+ for(var _iterator1 = delayedTasks[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
2349
+ var task1 = _step1.value;
2350
+ pendingFinalizeTasks["delete"](task1);
2351
+ }
2352
+ } catch (err) {
2353
+ _didIteratorError1 = true;
2354
+ _iteratorError1 = err;
2355
+ } finally{
2356
+ try {
2357
+ if (!_iteratorNormalCompletion1 && null != _iterator1["return"]) _iterator1["return"]();
2358
+ } finally{
2359
+ if (_didIteratorError1) throw _iteratorError1;
2360
+ }
2361
+ }
2362
+ }
2320
2363
  finalizePendingTasks(pendingFinalizeTasks, settle, pumpQueue, pendingStderr, inflight);
2364
+ var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;
2365
+ try {
2366
+ for(var _iterator2 = delayedTasks[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true){
2367
+ var task2 = _step2.value;
2368
+ pendingFinalizeTasks.add(task2);
2369
+ }
2370
+ } catch (err) {
2371
+ _didIteratorError2 = true;
2372
+ _iteratorError2 = err;
2373
+ } finally{
2374
+ try {
2375
+ if (!_iteratorNormalCompletion2 && null != _iterator2["return"]) _iterator2["return"]();
2376
+ } finally{
2377
+ if (_didIteratorError2) throw _iteratorError2;
2378
+ }
2379
+ }
2321
2380
  scheduled = false;
2381
+ if (delayedTasks.length > 0) check();
2322
2382
  });
2323
2383
  };
2324
2384
  check.cancel = cancel;