dequanto 0.2.25 → 0.2.29

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.
Files changed (72) hide show
  1. package/lib/cjs/class/PackedRanges.js +422 -20
  2. package/lib/cjs/class/PackedRanges.js.map +1 -1
  3. package/lib/cjs/clients/Web3Client.js +2 -1
  4. package/lib/cjs/clients/Web3Client.js.map +1 -1
  5. package/lib/cjs/contracts/ContractReader.js +24 -1
  6. package/lib/cjs/contracts/ContractReader.js.map +1 -1
  7. package/lib/cjs/contracts/ContractWriter.js +1 -1
  8. package/lib/cjs/contracts/ContractWriter.js.map +1 -1
  9. package/lib/cjs/hardhat/HardhatProvider.js +7 -0
  10. package/lib/cjs/hardhat/HardhatProvider.js.map +1 -1
  11. package/lib/cjs/indexer/EventsIndexer.js +143 -98
  12. package/lib/cjs/indexer/EventsIndexer.js.map +1 -1
  13. package/lib/cjs/rpc/RpcContract.js +21 -13
  14. package/lib/cjs/rpc/RpcContract.js.map +1 -1
  15. package/lib/cjs/safe/GnosisSafeHandler.js +1 -1
  16. package/lib/cjs/safe/GnosisSafeHandler.js.map +1 -1
  17. package/lib/cjs/safe/transport/SafeServiceTransport.js +13 -3
  18. package/lib/cjs/safe/transport/SafeServiceTransport.js.map +1 -1
  19. package/lib/cjs/txs/TxWriter.js +5 -2
  20. package/lib/cjs/txs/TxWriter.js.map +1 -1
  21. package/lib/cjs/utils/$contract.js +7 -2
  22. package/lib/cjs/utils/$contract.js.map +1 -1
  23. package/lib/cjs/utils/$number.js +24 -0
  24. package/lib/cjs/utils/$number.js.map +1 -1
  25. package/lib/esm/class/PackedRanges.js.map +1 -1
  26. package/lib/esm/class/PackedRanges.mjs +422 -20
  27. package/lib/esm/clients/Web3Client.js.map +1 -1
  28. package/lib/esm/clients/Web3Client.mjs +2 -1
  29. package/lib/esm/contracts/ContractReader.js.map +1 -1
  30. package/lib/esm/contracts/ContractReader.mjs +24 -1
  31. package/lib/esm/contracts/ContractWriter.js.map +1 -1
  32. package/lib/esm/contracts/ContractWriter.mjs +1 -1
  33. package/lib/esm/hardhat/HardhatProvider.js.map +1 -1
  34. package/lib/esm/hardhat/HardhatProvider.mjs +7 -0
  35. package/lib/esm/indexer/EventsIndexer.js.map +1 -1
  36. package/lib/esm/indexer/EventsIndexer.mjs +143 -98
  37. package/lib/esm/rpc/RpcContract.js.map +1 -1
  38. package/lib/esm/rpc/RpcContract.mjs +21 -13
  39. package/lib/esm/safe/GnosisSafeHandler.js.map +1 -1
  40. package/lib/esm/safe/GnosisSafeHandler.mjs +1 -1
  41. package/lib/esm/safe/transport/SafeServiceTransport.js.map +1 -1
  42. package/lib/esm/safe/transport/SafeServiceTransport.mjs +13 -3
  43. package/lib/esm/txs/TxWriter.js.map +1 -1
  44. package/lib/esm/txs/TxWriter.mjs +5 -2
  45. package/lib/esm/utils/$contract.js.map +1 -1
  46. package/lib/esm/utils/$contract.mjs +7 -2
  47. package/lib/esm/utils/$number.js.map +1 -1
  48. package/lib/esm/utils/$number.mjs +24 -0
  49. package/lib/types/class/PackedRanges.d.ts +224 -0
  50. package/lib/types/clients/Web3Client.d.ts +4 -0
  51. package/lib/types/contracts/ContractReader.d.ts +1 -0
  52. package/lib/types/indexer/EventsIndexer.d.ts +5 -1
  53. package/lib/types/indexer/storage/interfaces.d.ts +1 -0
  54. package/lib/types/rpc/RpcContract.d.ts +16 -0
  55. package/lib/types/safe/GnosisSafeHandler.d.ts +1 -0
  56. package/lib/types/safe/transport/ISafeServiceTransport.d.ts +1 -0
  57. package/lib/types/utils/$contract.d.ts +1 -0
  58. package/package.json +1 -1
  59. package/src/class/PackedRanges.ts +447 -27
  60. package/src/clients/Web3Client.ts +6 -1
  61. package/src/contracts/ContractReader.ts +30 -3
  62. package/src/contracts/ContractWriter.ts +1 -1
  63. package/src/hardhat/HardhatProvider.ts +9 -0
  64. package/src/indexer/EventsIndexer.ts +173 -105
  65. package/src/indexer/storage/interfaces.ts +1 -0
  66. package/src/rpc/RpcContract.ts +34 -15
  67. package/src/safe/GnosisSafeHandler.ts +1 -1
  68. package/src/safe/transport/ISafeServiceTransport.ts +5 -1
  69. package/src/safe/transport/SafeServiceTransport.ts +15 -4
  70. package/src/txs/TxWriter.ts +6 -2
  71. package/src/utils/$contract.ts +7 -2
  72. package/src/utils/$number.ts +36 -10
@@ -25,6 +25,7 @@ class PackedRanges {
25
25
  this.ranges = opts.ranges ?? [];
26
26
  }
27
27
  }
28
+ // Get the outer range [from..to] total capacity (regardless of tracked ranges)
28
29
  total() {
29
30
  let min = this.from;
30
31
  let max = this.to ?? this.getMax();
@@ -33,6 +34,7 @@ class PackedRanges {
33
34
  }
34
35
  return max - min;
35
36
  }
37
+ // Get the sum of all tracked range lengths (total numbers visited/added)
36
38
  totalAdded() {
37
39
  let count = 0;
38
40
  for (let i = 0; i < this.ranges.length; i++) {
@@ -41,9 +43,29 @@ class PackedRanges {
41
43
  }
42
44
  return count;
43
45
  }
46
+ /**
47
+ * Calculates the number of elements remaining to be visited/added in the range.
48
+ * This is the difference between the total capacity and the number of elements already tracked.
49
+ */
44
50
  totalLeft() {
45
51
  return this.total() - this.totalAdded();
46
52
  }
53
+ /**
54
+ * Gets the next unvisited number in the range and marks it as visited.
55
+ *
56
+ * This method finds the next number that hasn't been added to the tracked ranges yet,
57
+ * automatically adds it to the ranges, and returns it. It respects the boundaries
58
+ * defined by `from` and `to` properties.
59
+ *
60
+ * The method works by:
61
+ * - Starting from `this.from` if no ranges exist
62
+ * - Filling gaps between existing ranges
63
+ * - Extending the last range if no gaps exist
64
+ * - Merging adjacent ranges when they become contiguous
65
+ *
66
+ * @returns The next unvisited number in the range, or `null` if all numbers up to `this.to` have been visited
67
+ * @throws {Error} If the internal ranges array is in an invalid state (unsorted or overlapping)
68
+ */
47
69
  next() {
48
70
  let min = this.from;
49
71
  if (this.ranges.length === 0) {
@@ -77,6 +99,14 @@ class PackedRanges {
77
99
  this.ranges[0][1] = r0Max;
78
100
  return r0Max;
79
101
  }
102
+ /**
103
+ * Gets the maximum (upper bound) value from all tracked ranges.
104
+ *
105
+ * This method returns the highest number that has been visited/added to the ranges.
106
+ * It retrieves the upper bound of the last range in the sorted ranges array.
107
+ *
108
+ * @returns The maximum value in the tracked ranges, or `null` if no ranges have been added yet
109
+ */
80
110
  getMax() {
81
111
  if (this.ranges.length === 0) {
82
112
  return null;
@@ -84,6 +114,16 @@ class PackedRanges {
84
114
  let r = this.ranges[this.ranges.length - 1];
85
115
  return r[1];
86
116
  }
117
+ /**
118
+ * Checks if a specific number has been visited/added to the tracked ranges.
119
+ *
120
+ * This method searches through all tracked ranges to determine if the given number
121
+ * falls within any of them. It performs a linear search through the ranges array,
122
+ * checking if the number is within the bounds (inclusive) of any range.
123
+ *
124
+ * @param nr - The number to check for inclusion in the tracked ranges
125
+ * @returns `true` if the number exists within any of the tracked ranges, `false` otherwise
126
+ */
87
127
  includes(nr) {
88
128
  for (let i = 0; i < this.ranges.length; i++) {
89
129
  let [a, b] = this.ranges[i];
@@ -93,6 +133,21 @@ class PackedRanges {
93
133
  }
94
134
  return false;
95
135
  }
136
+ /**
137
+ * Adds a number to the tracked ranges, marking it as visited.
138
+ *
139
+ * This method intelligently adds a number to the ranges by either:
140
+ * - Extending an existing range if the number is adjacent to it
141
+ * - Creating a new range if the number is isolated
142
+ * - Doing nothing if the number is already included in an existing range
143
+ *
144
+ * The method maintains the sorted order of ranges and automatically merges
145
+ * adjacent numbers into contiguous ranges for efficient storage.
146
+ *
147
+ * @param nr - The number to add to the tracked ranges
148
+ * @returns `true` if the number was successfully added (new or extended a range),
149
+ * `false` if the number was already present in the ranges
150
+ */
96
151
  add(nr) {
97
152
  let modified = false;
98
153
  for (let i = 0; i < this.ranges.length; i++) {
@@ -129,6 +184,40 @@ class PackedRanges {
129
184
  }
130
185
  return true;
131
186
  }
187
+ /**
188
+ * Adds a complete range to the tracked ranges and compacts the result.
189
+ *
190
+ * This method adds an entire range [min, max] to the tracked ranges array,
191
+ * then automatically compacts the ranges to merge any overlapping or adjacent
192
+ * ranges. This is useful for bulk operations where you want to mark multiple
193
+ * consecutive numbers as visited at once.
194
+ *
195
+ * Unlike the `add()` method which adds individual numbers, this method adds
196
+ * a complete range tuple and ensures the internal ranges array remains optimized
197
+ * by calling `compact()` after insertion.
198
+ *
199
+ * @param range - A tuple [min, max] representing the range to add, where both bounds are inclusive
200
+ */
201
+ addRange(range) {
202
+ this.ranges.push(range);
203
+ this.compact();
204
+ }
205
+ /**
206
+ * Removes a specific number from the tracked ranges, marking it as unvisited.
207
+ *
208
+ * This method searches for the number within the tracked ranges and removes it by either:
209
+ * - Removing the entire range if it contains only the target number
210
+ * - Shrinking the range by adjusting its lower bound if the number is at the start
211
+ * - Shrinking the range by adjusting its upper bound if the number is at the end
212
+ * - Splitting the range into two separate ranges if the number is in the middle
213
+ *
214
+ * The method maintains the sorted order of ranges and ensures efficient storage
215
+ * by handling all edge cases appropriately.
216
+ *
217
+ * @param nr - The number to remove from the tracked ranges
218
+ * @returns `true` if the number was found and successfully removed from the ranges,
219
+ * `false` if the number was not present in any of the tracked ranges
220
+ */
132
221
  remove(nr) {
133
222
  for (let i = 0; i < this.ranges.length; i++) {
134
223
  let [min, max] = this.ranges[i];
@@ -153,43 +242,356 @@ class PackedRanges {
153
242
  }
154
243
  return false;
155
244
  }
245
+ /**
246
+ * Removes a range of numbers from the tracked ranges, marking them as unvisited.
247
+ *
248
+ * This method subtracts the specified range from all tracked ranges, effectively
249
+ * removing all numbers within the given range from the visited/added set. It handles
250
+ * overlapping ranges by splitting or trimming existing ranges as needed.
251
+ *
252
+ * The method maintains the sorted order of ranges and ensures efficient storage
253
+ * by delegating to the `Ranges.subtract()` utility function.
254
+ *
255
+ * @param range - A tuple [min, max] representing the range to remove, where both bounds are inclusive
256
+ * @returns The current `PackedRanges` instance for method chaining
257
+ */
258
+ subtractRange(range) {
259
+ this.ranges = Ranges.subtract(this.ranges, range);
260
+ return this;
261
+ }
262
+ /**
263
+ * Removes multiple ranges of numbers from the tracked ranges, marking them as unvisited.
264
+ *
265
+ * This method subtracts all specified ranges from the tracked ranges, effectively
266
+ * removing all numbers within the given ranges from the visited/added set. It handles
267
+ * overlapping ranges by splitting or trimming existing ranges as needed for each
268
+ * range in the input array.
269
+ *
270
+ * The method maintains the sorted order of ranges and ensures efficient storage
271
+ * by delegating to the `Ranges.subtractMany()` utility function.
272
+ *
273
+ * @param ranges - An array of tuples [min, max] representing the ranges to remove, where both bounds are inclusive
274
+ * @returns The current `PackedRanges` instance for method chaining
275
+ */
276
+ subtractRanges(ranges) {
277
+ this.ranges = Ranges.subtractMany(this.ranges, ranges);
278
+ return this;
279
+ }
280
+ /**
281
+ * Compacts the tracked ranges by merging overlapping and adjacent ranges.
282
+ *
283
+ * This method optimizes the internal ranges array by:
284
+ * - Merging overlapping ranges into single contiguous ranges
285
+ * - Joining adjacent ranges (e.g., [1,4] and [5,6] become [1,6])
286
+ * - Sorting ranges by their starting values
287
+ * - Removing redundant range entries
288
+ *
289
+ * This operation is useful after bulk modifications to ensure the ranges
290
+ * array remains in its most efficient form for storage and querying.
291
+ */
156
292
  compact() {
157
- for (let i = 0; i < this.ranges.length; i++) {
158
- let rangeA = this.ranges[i];
159
- for (let j = i + 1; j < this.ranges.length; j++) {
160
- let rangeB = this.ranges[j];
161
- if (Ranges.overlaps(rangeA, rangeB)) {
162
- let [x1, y1] = rangeA;
163
- let [x2, y2] = rangeB;
164
- this.ranges[i] = [Math.min(x1, x2), Math.max(y1, y2)];
165
- this.ranges.splice(j, 1);
166
- j--;
167
- continue;
168
- }
169
- }
170
- }
171
- this.ranges = (0, alot_1.default)(this.ranges)
172
- .sortBy(([x]) => x)
173
- .toArray();
293
+ this.ranges = Ranges.compact(this.ranges);
174
294
  }
295
+ /**
296
+ * Sets the tracked ranges to a new array of ranges and compacts them.
297
+ *
298
+ * This method replaces the entire internal ranges array with the provided ranges,
299
+ * then automatically compacts them to merge any overlapping or adjacent ranges.
300
+ * This is useful for bulk initialization or restoration of ranges from a saved state.
301
+ *
302
+ * After setting the ranges, the method ensures the internal ranges array is optimized
303
+ * by calling `compact()`, which merges overlapping ranges and joins adjacent ones.
304
+ *
305
+ * @param ranges - An array of tuples [min, max] representing the ranges to set, where both bounds are inclusive
306
+ */
175
307
  set(ranges) {
176
308
  this.ranges = ranges;
177
309
  this.compact();
178
310
  }
311
+ /**
312
+ * Serializes the tracked ranges to a JSON string representation.
313
+ *
314
+ * This method converts the internal ranges array into a JSON string format,
315
+ * which can be used for persistence, transmission, or storage purposes.
316
+ * The serialized string can later be parsed and used to restore the ranges
317
+ * via the constructor's `ranges` option.
318
+ *
319
+ * @returns A JSON string representation of the tracked ranges array
320
+ */
179
321
  serialize() {
180
322
  return JSON.stringify(this.ranges);
181
323
  }
324
+ /**
325
+ * Creates a new PackedRanges instance containing only the ranges starting from a specified number.
326
+ *
327
+ * This method filters the tracked ranges to include only those that contain or come after
328
+ * the specified `from` value. If a range overlaps with the `from` value, it is trimmed
329
+ * to start at `from`. All ranges before `from` are excluded from the result.
330
+ *
331
+ * The original PackedRanges instance remains unchanged; a new instance is returned with
332
+ * the filtered ranges.
333
+ *
334
+ * @param from - The starting number from which to pick ranges (inclusive)
335
+ * @returns A new PackedRanges instance containing only the ranges from the specified number onwards
336
+ */
337
+ pickFrom(from) {
338
+ let arr = Ranges.pickFrom(this.ranges, from);
339
+ return new PackedRanges({ ranges: arr });
340
+ }
341
+ /**
342
+ * Creates a new PackedRanges instance containing only the ranges up to a specified number.
343
+ *
344
+ * This method filters the tracked ranges to include only those that contain or come before
345
+ * the specified `to` value. If a range overlaps with the `to` value, it is trimmed
346
+ * to end at `to`. All ranges after `to` are excluded from the result.
347
+ *
348
+ * The original PackedRanges instance remains unchanged; a new instance is returned with
349
+ * the filtered ranges.
350
+ *
351
+ * @param to - The ending number up to which to pick ranges (inclusive)
352
+ * @returns A new PackedRanges instance containing only the ranges up to the specified number
353
+ */
354
+ pickTo(to) {
355
+ let arr = Ranges.pickTo(this.ranges, to);
356
+ return new PackedRanges({ ranges: arr });
357
+ }
358
+ /**
359
+ * Computes the intersection of multiple range arrays, returning only the ranges that are common to all inputs.
360
+ *
361
+ * This method performs a set intersection operation across multiple arrays of ranges,
362
+ * finding only those number ranges that appear in every input array. The result is
363
+ * compacted to merge any overlapping or adjacent ranges for efficient storage.
364
+ *
365
+ * For example:
366
+ * - Input: [[[1,5], [10,15]], [[3,7], [12,20]]]
367
+ * - Output: [[3,5], [12,15]] (ranges common to both arrays)
368
+ *
369
+ * @param rangesArr - An array of range arrays, where each range array contains tuples [min, max] representing inclusive number ranges
370
+ * @returns A compacted array of ranges representing the intersection of all input range arrays, or an empty array if no common ranges exist or if the input is empty
371
+ */
372
+ static intersection(rangesArr) {
373
+ if (rangesArr.length === 0) {
374
+ return [];
375
+ }
376
+ let arr = Ranges.clone(rangesArr[0]);
377
+ for (let i = 1; i < rangesArr.length; i++) {
378
+ arr = Ranges.intersection(arr, rangesArr[i]);
379
+ }
380
+ return Ranges.compact(arr);
381
+ }
382
+ /**
383
+ * Computes the union of multiple range arrays, returning all ranges that appear in any of the inputs.
384
+ *
385
+ * This method performs a set union operation across multiple arrays of ranges,
386
+ * combining all number ranges from every input array. The result is compacted to
387
+ * merge any overlapping or adjacent ranges for efficient storage.
388
+ *
389
+ * For example:
390
+ * - Input: [[[1,5], [10,15]], [[3,7], [12,20]]]
391
+ * - Output: [[1,7], [10,20]] (all ranges merged and compacted)
392
+ *
393
+ * @param rangesArr - An array of range arrays, where each range array contains tuples [min, max] representing inclusive number ranges
394
+ * @returns A compacted array of ranges representing the union of all input range arrays, or an empty array if the input is empty
395
+ */
396
+ static union(rangesArr) {
397
+ let arr = (0, alot_1.default)(rangesArr)
398
+ .mapMany(x => x)
399
+ .toArray();
400
+ return Ranges.compact(arr);
401
+ }
402
+ /**
403
+ * Computes the difference between two range arrays, removing all ranges in B from ranges in A.
404
+ *
405
+ * This method performs a set difference operation (A − B), subtracting all number ranges
406
+ * in `rangesB` from `rangesA`. The result contains only those portions of `rangesA` that
407
+ * do not overlap with any range in `rangesB`. The result is compacted to merge any
408
+ * overlapping or adjacent ranges for efficient storage.
409
+ *
410
+ * For example:
411
+ * - Input: rangesA = [[1,10], [20,30]], rangesB = [[5,15], [25,35]]
412
+ * - Output: [[1,4], [20,24]] (parts of A not covered by B)
413
+ *
414
+ * @param rangesA - The array of ranges to subtract from, where each range is a tuple [min, max] representing inclusive number ranges
415
+ * @param rangesB - The array of ranges to subtract, where each range is a tuple [min, max] representing inclusive number ranges
416
+ * @returns A compacted array of ranges representing the difference (A − B), or an empty array if all of A is covered by B
417
+ */
418
+ static subtract(rangesA, rangesB) {
419
+ let arr = Ranges.subtractMany(rangesA, rangesB);
420
+ return Ranges.compact(arr);
421
+ }
422
+ static pickFrom(ranges, from) {
423
+ let arr = Ranges.pickFrom(ranges, from);
424
+ return arr;
425
+ }
426
+ static pickTo(ranges, to) {
427
+ let arr = Ranges.pickTo(ranges, to);
428
+ return arr;
429
+ }
182
430
  }
183
431
  exports.PackedRanges = PackedRanges;
184
- var Ranges;
185
- (function (Ranges) {
432
+ var Range;
433
+ (function (Range) {
434
+ // Check if two ranges overlap
186
435
  function overlaps(r1, r2) {
187
436
  let [x1, y1] = r1;
188
437
  let [x2, y2] = r2;
189
438
  let d = Math.min(y1, y2) - Math.max(x1, x2);
190
439
  return d > -1;
191
440
  }
192
- Ranges.overlaps = overlaps;
441
+ Range.overlaps = overlaps;
442
+ // AND: A ∩ B
443
+ function intersection(r1, r2) {
444
+ let [x1, y1] = r1;
445
+ let [x2, y2] = r2;
446
+ let minY = Math.min(y1, y2);
447
+ let maxX = Math.max(x1, x2);
448
+ if (minY >= maxX) {
449
+ return [maxX, minY];
450
+ }
451
+ return null;
452
+ }
453
+ Range.intersection = intersection;
454
+ })(Range || (Range = {}));
455
+ var Ranges;
456
+ (function (Ranges) {
457
+ function clone(ranges) {
458
+ let arr = [];
459
+ for (let [x, y] of ranges) {
460
+ arr.push([x, y]);
461
+ }
462
+ return arr;
463
+ }
464
+ Ranges.clone = clone;
465
+ // AND: A ∩ B
466
+ function intersection(rangesA, rangesB) {
467
+ let arr = [];
468
+ for (let i = 0; i < rangesA.length; i++) {
469
+ let rA = rangesA[i];
470
+ for (let j = 0; j < rangesB.length; j++) {
471
+ let union = Range.intersection(rA, rangesB[j]);
472
+ if (union) {
473
+ arr.push(union);
474
+ continue;
475
+ }
476
+ }
477
+ }
478
+ return arr;
479
+ }
480
+ Ranges.intersection = intersection;
481
+ function compact(ranges) {
482
+ for (let i = 0; i < ranges.length; i++) {
483
+ let rangeA = ranges[i];
484
+ for (let j = i + 1; j < ranges.length; j++) {
485
+ let rangeB = ranges[j];
486
+ if (Range.overlaps(rangeA, rangeB)) {
487
+ let [x1, y1] = rangeA;
488
+ let [x2, y2] = rangeB;
489
+ ranges[i] = [Math.min(x1, x2), Math.max(y1, y2)];
490
+ ranges.splice(j, 1);
491
+ j--;
492
+ continue;
493
+ }
494
+ }
495
+ }
496
+ ranges = (0, alot_1.default)(ranges)
497
+ .sortBy(([x]) => x)
498
+ .toArray();
499
+ // Join non overlapping ranges: [1,4],[5, 6] -> [1,6]
500
+ for (let i = 0; i < ranges.length - 1; i++) {
501
+ let A = ranges[i];
502
+ let B = ranges[i + 1];
503
+ let aLast = A[A.length - 1];
504
+ let bFirst = B[0];
505
+ if (aLast + 1 === bFirst) {
506
+ let bLast = B[B.length - 1];
507
+ A[A.length - 1] = bLast;
508
+ ranges.splice(i + 1, 1);
509
+ }
510
+ }
511
+ return ranges;
512
+ }
513
+ Ranges.compact = compact;
514
+ // Difference: A \ B
515
+ function subtract(ranges, range) {
516
+ let arr = [];
517
+ let [rmFrom, rmTo] = range;
518
+ for (let i = 0; i < ranges.length; i++) {
519
+ let A = ranges[i];
520
+ if (Range.overlaps(A, range) === false) {
521
+ arr.push(A);
522
+ continue;
523
+ }
524
+ let [Amin, Amax] = ranges[i];
525
+ if (Amin < rmFrom) {
526
+ arr.push([Amin, rmFrom - 1]);
527
+ }
528
+ if (Amax > rmTo) {
529
+ arr.push([rmTo + 1, Amax]);
530
+ }
531
+ }
532
+ return arr;
533
+ }
534
+ Ranges.subtract = subtract;
535
+ // Difference: A \ ∩B
536
+ function subtractMany(ranges, rangeArr) {
537
+ let arr = ranges;
538
+ for (let range of rangeArr) {
539
+ arr = subtract(arr, range);
540
+ }
541
+ return arr;
542
+ }
543
+ Ranges.subtractMany = subtractMany;
544
+ function pickFrom(ranges, from) {
545
+ if (ranges == null || ranges.length === 0) {
546
+ return [];
547
+ }
548
+ let arr = [];
549
+ for (let i = 0; i < ranges.length; i++) {
550
+ let A = ranges[i];
551
+ let aFirst = A[0];
552
+ let aLast = A[A.length - 1];
553
+ if (aLast < from) {
554
+ // This part is fully before from, ignore, search for the next part
555
+ continue;
556
+ }
557
+ if (from < aFirst) {
558
+ // No overlapping, pick all ranges
559
+ arr = ranges.slice(i).map(([x, y]) => [x, y]);
560
+ break;
561
+ }
562
+ let overlapped = [from, aLast];
563
+ arr = ranges.slice(i + 1).map(([x, y]) => [x, y]);
564
+ arr.unshift(overlapped);
565
+ break;
566
+ }
567
+ return arr;
568
+ }
569
+ Ranges.pickFrom = pickFrom;
570
+ function pickTo(ranges, to) {
571
+ if (ranges == null || ranges.length === 0) {
572
+ return [];
573
+ }
574
+ let arr = [];
575
+ for (let i = 0; i < ranges.length; i++) {
576
+ let A = ranges[i];
577
+ let aFirst = A[0];
578
+ let aLast = A[A.length - 1];
579
+ if (aFirst > to) {
580
+ // This part starts after 'to' => break (as sorted, next parts also start after 'to')
581
+ break;
582
+ }
583
+ if (aLast < to) {
584
+ // No overlapping, pick full range
585
+ arr.push([aFirst, aLast]);
586
+ }
587
+ else {
588
+ // Overlapps
589
+ arr.push([aFirst, to]);
590
+ }
591
+ }
592
+ return arr;
593
+ }
594
+ Ranges.pickTo = pickTo;
193
595
  })(Ranges || (Ranges = {}));
194
596
  //# sourceMappingURL=PackedRanges.js.map
195
597
  //# sourceMappingURL=PackedRanges.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PackedRanges.js","sourceRoot":"","sources":["../../../src/class/PackedRanges.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PackedRanges.js","sourceRoot":"","sources":["../../../src/class/PackedRanges.ts"],"names":[],"mappings":"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"}
@@ -523,7 +523,8 @@ var RangeWorker;
523
523
  blocks: perf.blocks,
524
524
  blocksPerSecond: Number(blocksPerSecFormatted),
525
525
  timeLeftSeconds: leftSeconds,
526
- completed: cursor >= toBlock
526
+ completed: cursor >= toBlock,
527
+ infos: { fetched: perf.blocks.loaded, cached: 0 }
527
528
  });
528
529
  let lastNodeStats = Date.now() - nodeStats;
529
530
  if (lastNodeStats > 30 * 1000) {