@yydb/light-db 0.0.0

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 (150) hide show
  1. package/dist/api/LightDB.d.ts +194 -0
  2. package/dist/api/LightDB.d.ts.map +1 -0
  3. package/dist/api/LightDB.js +299 -0
  4. package/dist/api/LightDB.js.map +1 -0
  5. package/dist/api/Transaction.d.ts +100 -0
  6. package/dist/api/Transaction.d.ts.map +1 -0
  7. package/dist/api/Transaction.js +263 -0
  8. package/dist/api/Transaction.js.map +1 -0
  9. package/dist/api/index.d.ts +24 -0
  10. package/dist/api/index.d.ts.map +1 -0
  11. package/dist/api/index.js +54 -0
  12. package/dist/api/index.js.map +1 -0
  13. package/dist/api/types.d.ts +154 -0
  14. package/dist/api/types.d.ts.map +1 -0
  15. package/dist/api/types.js +7 -0
  16. package/dist/api/types.js.map +1 -0
  17. package/dist/collection/Collection.d.ts +235 -0
  18. package/dist/collection/Collection.d.ts.map +1 -0
  19. package/dist/collection/Collection.js +671 -0
  20. package/dist/collection/Collection.js.map +1 -0
  21. package/dist/collection/QueryBuilder.d.ts +225 -0
  22. package/dist/collection/QueryBuilder.d.ts.map +1 -0
  23. package/dist/collection/QueryBuilder.js +475 -0
  24. package/dist/collection/QueryBuilder.js.map +1 -0
  25. package/dist/collection/QueryParser.d.ts +117 -0
  26. package/dist/collection/QueryParser.d.ts.map +1 -0
  27. package/dist/collection/QueryParser.js +438 -0
  28. package/dist/collection/QueryParser.js.map +1 -0
  29. package/dist/collection/index.d.ts +42 -0
  30. package/dist/collection/index.d.ts.map +1 -0
  31. package/dist/collection/index.js +41 -0
  32. package/dist/collection/index.js.map +1 -0
  33. package/dist/collection/types.d.ts +365 -0
  34. package/dist/collection/types.d.ts.map +1 -0
  35. package/dist/collection/types.js +7 -0
  36. package/dist/collection/types.js.map +1 -0
  37. package/dist/constants/index.d.ts +51 -0
  38. package/dist/constants/index.d.ts.map +1 -0
  39. package/dist/constants/index.js +68 -0
  40. package/dist/constants/index.js.map +1 -0
  41. package/dist/errors/index.d.ts +69 -0
  42. package/dist/errors/index.d.ts.map +1 -0
  43. package/dist/errors/index.js +132 -0
  44. package/dist/errors/index.js.map +1 -0
  45. package/dist/index.d.ts +220 -0
  46. package/dist/index.d.ts.map +1 -0
  47. package/dist/index.js +729 -0
  48. package/dist/index.js.map +1 -0
  49. package/dist/indexes/BPlusTree.d.ts +181 -0
  50. package/dist/indexes/BPlusTree.d.ts.map +1 -0
  51. package/dist/indexes/BPlusTree.js +528 -0
  52. package/dist/indexes/BPlusTree.js.map +1 -0
  53. package/dist/indexes/IndexManager.d.ts +236 -0
  54. package/dist/indexes/IndexManager.d.ts.map +1 -0
  55. package/dist/indexes/IndexManager.js +502 -0
  56. package/dist/indexes/IndexManager.js.map +1 -0
  57. package/dist/indexes/PrimaryIndex.d.ts +240 -0
  58. package/dist/indexes/PrimaryIndex.d.ts.map +1 -0
  59. package/dist/indexes/PrimaryIndex.js +354 -0
  60. package/dist/indexes/PrimaryIndex.js.map +1 -0
  61. package/dist/indexes/SecondaryIndex.d.ts +204 -0
  62. package/dist/indexes/SecondaryIndex.d.ts.map +1 -0
  63. package/dist/indexes/SecondaryIndex.js +480 -0
  64. package/dist/indexes/SecondaryIndex.js.map +1 -0
  65. package/dist/indexes/errors.d.ts +66 -0
  66. package/dist/indexes/errors.d.ts.map +1 -0
  67. package/dist/indexes/errors.js +117 -0
  68. package/dist/indexes/errors.js.map +1 -0
  69. package/dist/indexes/index.d.ts +52 -0
  70. package/dist/indexes/index.d.ts.map +1 -0
  71. package/dist/indexes/index.js +131 -0
  72. package/dist/indexes/index.js.map +1 -0
  73. package/dist/indexes/types.d.ts +246 -0
  74. package/dist/indexes/types.d.ts.map +1 -0
  75. package/dist/indexes/types.js +30 -0
  76. package/dist/indexes/types.js.map +1 -0
  77. package/dist/performance/BatchWALWriter.d.ts +185 -0
  78. package/dist/performance/BatchWALWriter.d.ts.map +1 -0
  79. package/dist/performance/BatchWALWriter.js +490 -0
  80. package/dist/performance/BatchWALWriter.js.map +1 -0
  81. package/dist/performance/ColumnarStorage.d.ts +138 -0
  82. package/dist/performance/ColumnarStorage.d.ts.map +1 -0
  83. package/dist/performance/ColumnarStorage.js +875 -0
  84. package/dist/performance/ColumnarStorage.js.map +1 -0
  85. package/dist/performance/LazyQuery.d.ts +307 -0
  86. package/dist/performance/LazyQuery.d.ts.map +1 -0
  87. package/dist/performance/LazyQuery.js +588 -0
  88. package/dist/performance/LazyQuery.js.map +1 -0
  89. package/dist/performance/OptimizedBuffer.d.ts +375 -0
  90. package/dist/performance/OptimizedBuffer.d.ts.map +1 -0
  91. package/dist/performance/OptimizedBuffer.js +730 -0
  92. package/dist/performance/OptimizedBuffer.js.map +1 -0
  93. package/dist/performance/RWLock.d.ts +260 -0
  94. package/dist/performance/RWLock.d.ts.map +1 -0
  95. package/dist/performance/RWLock.js +570 -0
  96. package/dist/performance/RWLock.js.map +1 -0
  97. package/dist/performance/index.d.ts +41 -0
  98. package/dist/performance/index.d.ts.map +1 -0
  99. package/dist/performance/index.js +162 -0
  100. package/dist/performance/index.js.map +1 -0
  101. package/dist/performance/types.d.ts +247 -0
  102. package/dist/performance/types.d.ts.map +1 -0
  103. package/dist/performance/types.js +26 -0
  104. package/dist/performance/types.js.map +1 -0
  105. package/dist/storage/Checkpoint.d.ts +128 -0
  106. package/dist/storage/Checkpoint.d.ts.map +1 -0
  107. package/dist/storage/Checkpoint.js +251 -0
  108. package/dist/storage/Checkpoint.js.map +1 -0
  109. package/dist/storage/LightFile.d.ts +227 -0
  110. package/dist/storage/LightFile.d.ts.map +1 -0
  111. package/dist/storage/LightFile.js +526 -0
  112. package/dist/storage/LightFile.js.map +1 -0
  113. package/dist/storage/Recovery.d.ts +172 -0
  114. package/dist/storage/Recovery.d.ts.map +1 -0
  115. package/dist/storage/Recovery.js +399 -0
  116. package/dist/storage/Recovery.js.map +1 -0
  117. package/dist/storage/SHMFile.d.ts +243 -0
  118. package/dist/storage/SHMFile.d.ts.map +1 -0
  119. package/dist/storage/SHMFile.js +436 -0
  120. package/dist/storage/SHMFile.js.map +1 -0
  121. package/dist/storage/StorageEngine.d.ts +146 -0
  122. package/dist/storage/StorageEngine.d.ts.map +1 -0
  123. package/dist/storage/StorageEngine.js +353 -0
  124. package/dist/storage/StorageEngine.js.map +1 -0
  125. package/dist/storage/WALFile.d.ts +248 -0
  126. package/dist/storage/WALFile.d.ts.map +1 -0
  127. package/dist/storage/WALFile.js +597 -0
  128. package/dist/storage/WALFile.js.map +1 -0
  129. package/dist/storage/index.d.ts +10 -0
  130. package/dist/storage/index.d.ts.map +1 -0
  131. package/dist/storage/index.js +153 -0
  132. package/dist/storage/index.js.map +1 -0
  133. package/dist/types/index.d.ts +220 -0
  134. package/dist/types/index.d.ts.map +1 -0
  135. package/dist/types/index.js +7 -0
  136. package/dist/types/index.js.map +1 -0
  137. package/dist/utils/binary.d.ts +271 -0
  138. package/dist/utils/binary.d.ts.map +1 -0
  139. package/dist/utils/binary.js +454 -0
  140. package/dist/utils/binary.js.map +1 -0
  141. package/dist/utils/file.d.ts +166 -0
  142. package/dist/utils/file.d.ts.map +1 -0
  143. package/dist/utils/file.js +346 -0
  144. package/dist/utils/file.js.map +1 -0
  145. package/dist/utils/index.d.ts +6 -0
  146. package/dist/utils/index.d.ts.map +1 -0
  147. package/dist/utils/index.js +39 -0
  148. package/dist/utils/index.js.map +1 -0
  149. package/package.json +37 -0
  150. package/readme.md +124 -0
@@ -0,0 +1,588 @@
1
+ "use strict";
2
+ /**
3
+ * 惰性求值查询实现
4
+ * 实现 Iterable 风格的惰性求值,不一次性加载所有结果
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.GeneratorUtils = exports.LazyQueryBuilder = exports.LazyQueryIterator = void 0;
8
+ exports.lazy = lazy;
9
+ exports.lazyIterator = lazyIterator;
10
+ /**
11
+ * 惰性查询迭代器
12
+ * 支持链式操作和提前终止
13
+ */
14
+ class LazyQueryIterator {
15
+ /**
16
+ * 创建惰性查询迭代器
17
+ * @param source 数据源
18
+ * @param options 配置选项
19
+ */
20
+ constructor(source, _options = {}) {
21
+ this.source = source;
22
+ this.filters = [];
23
+ this.transforms = [];
24
+ this.currentIndex = 0;
25
+ this.limitValue = 0;
26
+ this.skipValue = 0;
27
+ this.yieldedCount = 0;
28
+ this.completed = false;
29
+ }
30
+ /**
31
+ * 添加过滤条件
32
+ * @param predicate 过滤函数
33
+ */
34
+ filter(predicate) {
35
+ this.filters.push(predicate);
36
+ return this;
37
+ }
38
+ /**
39
+ * 添加映射转换
40
+ * @param mapper 映射函数
41
+ */
42
+ map(mapper) {
43
+ const newIterator = new LazyQueryIterator(this);
44
+ newIterator.originalMap = mapper;
45
+ return newIterator;
46
+ }
47
+ /**
48
+ * 添加转换
49
+ * @param transform 转换函数
50
+ */
51
+ transform(transform) {
52
+ this.transforms.push(transform);
53
+ return this;
54
+ }
55
+ /**
56
+ * 设置限制
57
+ * @param count 最大数量
58
+ */
59
+ limit(count) {
60
+ this.limitValue = Math.max(0, count);
61
+ return this;
62
+ }
63
+ /**
64
+ * 设置跳过
65
+ * @param count 跳过数量
66
+ */
67
+ skip(count) {
68
+ this.skipValue = Math.max(0, count);
69
+ return this;
70
+ }
71
+ /**
72
+ * 获取迭代器
73
+ */
74
+ [Symbol.iterator]() {
75
+ return this;
76
+ }
77
+ /**
78
+ * 获取下一个元素
79
+ */
80
+ next() {
81
+ if (this.completed) {
82
+ return { done: true, value: undefined };
83
+ }
84
+ if (this.limitValue > 0 && this.yieldedCount >= this.limitValue) {
85
+ this.completed = true;
86
+ return { done: true, value: undefined };
87
+ }
88
+ const iterator = this.getIterator();
89
+ while (true) {
90
+ const result = iterator.next();
91
+ if (result.done) {
92
+ this.completed = true;
93
+ return { done: true, value: undefined };
94
+ }
95
+ let value = result.value;
96
+ this.currentIndex++;
97
+ for (const transform of this.transforms) {
98
+ value = transform(value);
99
+ }
100
+ let passes = true;
101
+ for (const filter of this.filters) {
102
+ if (!filter(value, this.currentIndex - 1)) {
103
+ passes = false;
104
+ break;
105
+ }
106
+ }
107
+ if (!passes) {
108
+ continue;
109
+ }
110
+ if (this.skipValue > 0) {
111
+ this.skipValue--;
112
+ continue;
113
+ }
114
+ this.yieldedCount++;
115
+ return { done: false, value };
116
+ }
117
+ }
118
+ /**
119
+ * 获取底层迭代器
120
+ */
121
+ getIterator() {
122
+ if (Symbol.iterator in this.source) {
123
+ return this.source[Symbol.iterator]();
124
+ }
125
+ return this.source;
126
+ }
127
+ /**
128
+ * 转换为数组
129
+ */
130
+ toArray() {
131
+ const result = [];
132
+ for (const item of this) {
133
+ result.push(item);
134
+ }
135
+ return result;
136
+ }
137
+ /**
138
+ * 获取第一个元素
139
+ */
140
+ first() {
141
+ for (const item of this) {
142
+ return item;
143
+ }
144
+ return undefined;
145
+ }
146
+ /**
147
+ * 获取最后一个元素
148
+ */
149
+ last() {
150
+ let lastItem;
151
+ for (const item of this) {
152
+ lastItem = item;
153
+ }
154
+ return lastItem;
155
+ }
156
+ /**
157
+ * 统计数量
158
+ */
159
+ count() {
160
+ let count = 0;
161
+ for (const _ of this) {
162
+ count++;
163
+ }
164
+ return count;
165
+ }
166
+ /**
167
+ * 检查是否存在匹配元素
168
+ */
169
+ some(predicate) {
170
+ if (predicate) {
171
+ this.filter(predicate);
172
+ }
173
+ for (const _ of this) {
174
+ return true;
175
+ }
176
+ return false;
177
+ }
178
+ /**
179
+ * 检查是否所有元素都匹配
180
+ */
181
+ every(predicate) {
182
+ for (const item of this) {
183
+ if (!predicate(item, this.currentIndex - 1)) {
184
+ return false;
185
+ }
186
+ }
187
+ return true;
188
+ }
189
+ /**
190
+ * 查找匹配元素
191
+ */
192
+ find(predicate) {
193
+ this.filter(predicate);
194
+ return this.first();
195
+ }
196
+ /**
197
+ * 查找匹配元素的索引
198
+ */
199
+ findIndex(predicate) {
200
+ let index = 0;
201
+ for (const item of this) {
202
+ if (predicate(item, index)) {
203
+ return index;
204
+ }
205
+ index++;
206
+ }
207
+ return -1;
208
+ }
209
+ /**
210
+ * 遍历所有元素
211
+ * @param callback 回调函数
212
+ */
213
+ forEach(callback) {
214
+ let index = 0;
215
+ for (const item of this) {
216
+ callback(item, index++);
217
+ }
218
+ }
219
+ /**
220
+ * 归约
221
+ * @param reducer 归约函数
222
+ * @param initial 初始值
223
+ */
224
+ reduce(reducer, initial) {
225
+ let acc = initial;
226
+ let index = 0;
227
+ for (const item of this) {
228
+ acc = reducer(acc, item, index++);
229
+ }
230
+ return acc;
231
+ }
232
+ /**
233
+ * 获取统计信息
234
+ */
235
+ getStats() {
236
+ return {
237
+ iteratedCount: this.yieldedCount,
238
+ completed: this.completed,
239
+ usedIndex: false,
240
+ };
241
+ }
242
+ /**
243
+ * 重置迭代器
244
+ */
245
+ reset() {
246
+ this.currentIndex = 0;
247
+ this.yieldedCount = 0;
248
+ this.completed = false;
249
+ }
250
+ }
251
+ exports.LazyQueryIterator = LazyQueryIterator;
252
+ /**
253
+ * 惰性查询构建器
254
+ * 提供链式 API 构建惰性查询
255
+ */
256
+ class LazyQueryBuilder {
257
+ constructor(source) {
258
+ this.source = source;
259
+ this.filters = [];
260
+ this.transforms = [];
261
+ this.limitValue = 0;
262
+ this.skipValue = 0;
263
+ this.prefetchSize = 0;
264
+ }
265
+ /**
266
+ * 添加过滤条件
267
+ * @param predicate 过滤函数
268
+ */
269
+ where(predicate) {
270
+ this.filters.push(predicate);
271
+ return this;
272
+ }
273
+ /**
274
+ * 添加等于条件
275
+ * @param field 字段名
276
+ * @param value 值
277
+ */
278
+ eq(field, value) {
279
+ return this.where((item) => item[field] === value);
280
+ }
281
+ /**
282
+ * 添加不等于条件
283
+ * @param field 字段名
284
+ * @param value 值
285
+ */
286
+ ne(field, value) {
287
+ return this.where((item) => item[field] !== value);
288
+ }
289
+ /**
290
+ * 添加大于条件
291
+ * @param field 字段名
292
+ * @param value 值
293
+ */
294
+ gt(field, value) {
295
+ return this.where((item) => item[field] > value);
296
+ }
297
+ /**
298
+ * 添加大于等于条件
299
+ * @param field 字段名
300
+ * @param value 值
301
+ */
302
+ gte(field, value) {
303
+ return this.where((item) => item[field] >= value);
304
+ }
305
+ /**
306
+ * 添加小于条件
307
+ * @param field 字段名
308
+ * @param value 值
309
+ */
310
+ lt(field, value) {
311
+ return this.where((item) => item[field] < value);
312
+ }
313
+ /**
314
+ * 添加小于等于条件
315
+ * @param field 字段名
316
+ * @param value 值
317
+ */
318
+ lte(field, value) {
319
+ return this.where((item) => item[field] <= value);
320
+ }
321
+ /**
322
+ * 添加包含条件
323
+ * @param field 字段名
324
+ * @param values 值数组
325
+ */
326
+ in(field, values) {
327
+ const valueSet = new Set(values);
328
+ return this.where((item) => valueSet.has(item[field]));
329
+ }
330
+ /**
331
+ * 添加转换
332
+ * @param transform 转换函数
333
+ */
334
+ apply(transform) {
335
+ this.transforms.push(transform);
336
+ return this;
337
+ }
338
+ /**
339
+ * 设置限制
340
+ * @param count 最大数量
341
+ */
342
+ limit(count) {
343
+ this.limitValue = Math.max(0, count);
344
+ return this;
345
+ }
346
+ /**
347
+ * 设置跳过
348
+ * @param count 跳过数量
349
+ */
350
+ skip(count) {
351
+ this.skipValue = Math.max(0, count);
352
+ return this;
353
+ }
354
+ /**
355
+ * 设置预取大小
356
+ * @param size 预取大小
357
+ */
358
+ prefetch(size) {
359
+ this.prefetchSize = Math.max(0, size);
360
+ return this;
361
+ }
362
+ /**
363
+ * 构建迭代器
364
+ */
365
+ build() {
366
+ const iterator = new LazyQueryIterator(this.source, {
367
+ prefetchSize: this.prefetchSize,
368
+ });
369
+ for (const filter of this.filters) {
370
+ iterator.filter(filter);
371
+ }
372
+ for (const transform of this.transforms) {
373
+ iterator.transform(transform);
374
+ }
375
+ if (this.limitValue > 0) {
376
+ iterator.limit(this.limitValue);
377
+ }
378
+ if (this.skipValue > 0) {
379
+ iterator.skip(this.skipValue);
380
+ }
381
+ return iterator;
382
+ }
383
+ /**
384
+ * 执行查询并返回迭代器
385
+ */
386
+ [Symbol.iterator]() {
387
+ return this.build();
388
+ }
389
+ /**
390
+ * 转换为数组
391
+ */
392
+ toArray() {
393
+ return this.build().toArray();
394
+ }
395
+ /**
396
+ * 获取第一个元素
397
+ */
398
+ first() {
399
+ return this.build().first();
400
+ }
401
+ /**
402
+ * 获取最后一个元素
403
+ */
404
+ last() {
405
+ return this.build().last();
406
+ }
407
+ /**
408
+ * 统计数量
409
+ */
410
+ count() {
411
+ return this.build().count();
412
+ }
413
+ /**
414
+ * 遍历所有元素
415
+ */
416
+ forEach(callback) {
417
+ this.build().forEach(callback);
418
+ }
419
+ }
420
+ exports.LazyQueryBuilder = LazyQueryBuilder;
421
+ /**
422
+ * 创建惰性查询
423
+ * @param source 数据源
424
+ */
425
+ function lazy(source) {
426
+ return new LazyQueryBuilder(source);
427
+ }
428
+ /**
429
+ * 创建惰性查询迭代器
430
+ * @param source 数据源
431
+ */
432
+ function lazyIterator(source) {
433
+ return new LazyQueryIterator(source);
434
+ }
435
+ /**
436
+ * 生成器工具函数
437
+ */
438
+ class GeneratorUtils {
439
+ /**
440
+ * 创建范围生成器
441
+ * @param start 起始值
442
+ * @param end 结束值
443
+ * @param step 步长
444
+ */
445
+ static *range(start, end, step = 1) {
446
+ if (step > 0) {
447
+ for (let i = start; i < end; i += step) {
448
+ yield i;
449
+ }
450
+ } else if (step < 0) {
451
+ for (let i = start; i > end; i += step) {
452
+ yield i;
453
+ }
454
+ }
455
+ }
456
+ /**
457
+ * 创建重复生成器
458
+ * @param value 值
459
+ * @param count 重复次数,-1 表示无限
460
+ */
461
+ static *repeat(value, count = -1) {
462
+ if (count < 0) {
463
+ while (true) {
464
+ yield value;
465
+ }
466
+ } else {
467
+ for (let i = 0; i < count; i++) {
468
+ yield value;
469
+ }
470
+ }
471
+ }
472
+ /**
473
+ * 合并多个生成器
474
+ * @param sources 生成器数组
475
+ */
476
+ static *concat(...sources) {
477
+ for (const source of sources) {
478
+ yield* source;
479
+ }
480
+ }
481
+ /**
482
+ * 交替生成
483
+ * @param sources 生成器数组
484
+ */
485
+ static *zip(...sources) {
486
+ const iterators = sources.map((s) => s[Symbol.iterator]());
487
+ while (true) {
488
+ const results = [];
489
+ let done = true;
490
+ for (const iterator of iterators) {
491
+ const result = iterator.next();
492
+ if (!result.done) {
493
+ results.push(result.value);
494
+ done = false;
495
+ }
496
+ }
497
+ if (done) {
498
+ break;
499
+ }
500
+ yield results;
501
+ }
502
+ }
503
+ /**
504
+ * 展开嵌套生成器
505
+ * @param source 嵌套生成器
506
+ */
507
+ static *flatten(source) {
508
+ for (const inner of source) {
509
+ yield* inner;
510
+ }
511
+ }
512
+ /**
513
+ * 带索引生成
514
+ * @param source 生成器
515
+ */
516
+ static *enumerate(source) {
517
+ let index = 0;
518
+ for (const item of source) {
519
+ yield [index++, item];
520
+ }
521
+ }
522
+ /**
523
+ * 分块生成
524
+ * @param source 生成器
525
+ * @param size 块大小
526
+ */
527
+ static *chunk(source, size) {
528
+ let chunk = [];
529
+ for (const item of source) {
530
+ chunk.push(item);
531
+ if (chunk.length >= size) {
532
+ yield chunk;
533
+ chunk = [];
534
+ }
535
+ }
536
+ if (chunk.length > 0) {
537
+ yield chunk;
538
+ }
539
+ }
540
+ /**
541
+ * 去重生成
542
+ * @param source 生成器
543
+ * @param keySelector 键选择器
544
+ */
545
+ static *distinct(source, keySelector) {
546
+ const seen = new Set();
547
+ const selector = keySelector ?? ((item) => item);
548
+ for (const item of source) {
549
+ const key = selector(item);
550
+ if (!seen.has(key)) {
551
+ seen.add(key);
552
+ yield item;
553
+ }
554
+ }
555
+ }
556
+ /**
557
+ * 取前 N 个
558
+ * @param source 生成器
559
+ * @param count 数量
560
+ */
561
+ static *take(source, count) {
562
+ let taken = 0;
563
+ for (const item of source) {
564
+ if (taken >= count) {
565
+ break;
566
+ }
567
+ yield item;
568
+ taken++;
569
+ }
570
+ }
571
+ /**
572
+ * 跳过前 N 个
573
+ * @param source 生成器
574
+ * @param count 数量
575
+ */
576
+ static *skip(source, count) {
577
+ let skipped = 0;
578
+ for (const item of source) {
579
+ if (skipped >= count) {
580
+ yield item;
581
+ } else {
582
+ skipped++;
583
+ }
584
+ }
585
+ }
586
+ }
587
+ exports.GeneratorUtils = GeneratorUtils;
588
+ //# sourceMappingURL=LazyQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LazyQuery.js","sourceRoot":"","sources":["../../src/performance/LazyQuery.ts"],"names":[],"mappings":"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"}