@yydb/light-db 0.0.0 → 0.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.
Files changed (230) hide show
  1. package/dist/api/database.d.ts +48 -0
  2. package/dist/api/database.d.ts.map +1 -0
  3. package/dist/api/database.js +120 -0
  4. package/dist/api/database.js.map +1 -0
  5. package/dist/api/index.d.ts +7 -22
  6. package/dist/api/index.d.ts.map +1 -1
  7. package/dist/api/index.js +5 -52
  8. package/dist/api/index.js.map +1 -1
  9. package/dist/api/schema.d.ts +33 -0
  10. package/dist/api/schema.d.ts.map +1 -0
  11. package/dist/api/schema.js +80 -0
  12. package/dist/api/schema.js.map +1 -0
  13. package/dist/api/transaction.d.ts +26 -0
  14. package/dist/api/transaction.d.ts.map +1 -0
  15. package/dist/api/transaction.js +52 -0
  16. package/dist/api/transaction.js.map +1 -0
  17. package/dist/api/types.d.ts +55 -148
  18. package/dist/api/types.d.ts.map +1 -1
  19. package/dist/api/types.js +6 -5
  20. package/dist/api/types.js.map +1 -1
  21. package/dist/codec/binary.d.ts +196 -0
  22. package/dist/codec/binary.d.ts.map +1 -0
  23. package/dist/codec/binary.js +342 -0
  24. package/dist/codec/binary.js.map +1 -0
  25. package/dist/codec/checksum.d.ts +21 -0
  26. package/dist/codec/checksum.d.ts.map +1 -0
  27. package/dist/codec/checksum.js +46 -0
  28. package/dist/codec/checksum.js.map +1 -0
  29. package/dist/codec/index.d.ts +12 -0
  30. package/dist/codec/index.d.ts.map +1 -0
  31. package/dist/codec/index.js +10 -0
  32. package/dist/codec/index.js.map +1 -0
  33. package/dist/codec/page.d.ts +114 -0
  34. package/dist/codec/page.d.ts.map +1 -0
  35. package/dist/codec/page.js +225 -0
  36. package/dist/codec/page.js.map +1 -0
  37. package/dist/codec/record.d.ts +62 -0
  38. package/dist/codec/record.d.ts.map +1 -0
  39. package/dist/codec/record.js +82 -0
  40. package/dist/codec/record.js.map +1 -0
  41. package/dist/core/broadcast.d.ts +39 -0
  42. package/dist/core/broadcast.d.ts.map +1 -0
  43. package/dist/core/broadcast.js +54 -0
  44. package/dist/core/broadcast.js.map +1 -0
  45. package/dist/core/checkpoint.d.ts +23 -0
  46. package/dist/core/checkpoint.d.ts.map +1 -0
  47. package/dist/core/checkpoint.js +49 -0
  48. package/dist/core/checkpoint.js.map +1 -0
  49. package/dist/core/engine.d.ts +142 -0
  50. package/dist/core/engine.d.ts.map +1 -0
  51. package/dist/core/engine.js +304 -0
  52. package/dist/core/engine.js.map +1 -0
  53. package/dist/core/index.d.ts +17 -0
  54. package/dist/core/index.d.ts.map +1 -0
  55. package/dist/core/index.js +13 -0
  56. package/dist/core/index.js.map +1 -0
  57. package/dist/core/lease.d.ts +32 -0
  58. package/dist/core/lease.d.ts.map +1 -0
  59. package/dist/core/lease.js +81 -0
  60. package/dist/core/lease.js.map +1 -0
  61. package/dist/core/records.d.ts +49 -0
  62. package/dist/core/records.d.ts.map +1 -0
  63. package/dist/core/records.js +70 -0
  64. package/dist/core/records.js.map +1 -0
  65. package/dist/core/recovery.d.ts +43 -0
  66. package/dist/core/recovery.d.ts.map +1 -0
  67. package/dist/core/recovery.js +99 -0
  68. package/dist/core/recovery.js.map +1 -0
  69. package/dist/core/wal.d.ts +50 -0
  70. package/dist/core/wal.d.ts.map +1 -0
  71. package/dist/core/wal.js +114 -0
  72. package/dist/core/wal.js.map +1 -0
  73. package/dist/errors/index.d.ts +44 -66
  74. package/dist/errors/index.d.ts.map +1 -1
  75. package/dist/errors/index.js +43 -128
  76. package/dist/errors/index.js.map +1 -1
  77. package/dist/index.d.ts +14 -215
  78. package/dist/index.d.ts.map +1 -1
  79. package/dist/index.js +14 -724
  80. package/dist/index.js.map +1 -1
  81. package/dist/storage/StorageAdapter.d.ts +97 -0
  82. package/dist/storage/StorageAdapter.d.ts.map +1 -0
  83. package/dist/storage/StorageAdapter.js +9 -0
  84. package/dist/storage/StorageAdapter.js.map +1 -0
  85. package/dist/storage/index.d.ts +9 -8
  86. package/dist/storage/index.d.ts.map +1 -1
  87. package/dist/storage/index.js +8 -151
  88. package/dist/storage/index.js.map +1 -1
  89. package/dist/storage/indexeddb/IndexedDbStorageAdapter.d.ts +140 -0
  90. package/dist/storage/indexeddb/IndexedDbStorageAdapter.d.ts.map +1 -0
  91. package/dist/storage/indexeddb/IndexedDbStorageAdapter.js +403 -0
  92. package/dist/storage/indexeddb/IndexedDbStorageAdapter.js.map +1 -0
  93. package/dist/storage/memory/MemoryStorageAdapter.d.ts +76 -0
  94. package/dist/storage/memory/MemoryStorageAdapter.d.ts.map +1 -0
  95. package/dist/storage/memory/MemoryStorageAdapter.js +212 -0
  96. package/dist/storage/memory/MemoryStorageAdapter.js.map +1 -0
  97. package/dist/storage/opfs/OpfsStorageAdapter.d.ts +141 -0
  98. package/dist/storage/opfs/OpfsStorageAdapter.d.ts.map +1 -0
  99. package/dist/storage/opfs/OpfsStorageAdapter.js +400 -0
  100. package/dist/storage/opfs/OpfsStorageAdapter.js.map +1 -0
  101. package/package.json +48 -36
  102. package/readme.md +80 -94
  103. package/dist/api/LightDB.d.ts +0 -194
  104. package/dist/api/LightDB.d.ts.map +0 -1
  105. package/dist/api/LightDB.js +0 -299
  106. package/dist/api/LightDB.js.map +0 -1
  107. package/dist/api/Transaction.d.ts +0 -100
  108. package/dist/api/Transaction.d.ts.map +0 -1
  109. package/dist/api/Transaction.js +0 -263
  110. package/dist/api/Transaction.js.map +0 -1
  111. package/dist/collection/Collection.d.ts +0 -235
  112. package/dist/collection/Collection.d.ts.map +0 -1
  113. package/dist/collection/Collection.js +0 -671
  114. package/dist/collection/Collection.js.map +0 -1
  115. package/dist/collection/QueryBuilder.d.ts +0 -225
  116. package/dist/collection/QueryBuilder.d.ts.map +0 -1
  117. package/dist/collection/QueryBuilder.js +0 -475
  118. package/dist/collection/QueryBuilder.js.map +0 -1
  119. package/dist/collection/QueryParser.d.ts +0 -117
  120. package/dist/collection/QueryParser.d.ts.map +0 -1
  121. package/dist/collection/QueryParser.js +0 -438
  122. package/dist/collection/QueryParser.js.map +0 -1
  123. package/dist/collection/index.d.ts +0 -42
  124. package/dist/collection/index.d.ts.map +0 -1
  125. package/dist/collection/index.js +0 -41
  126. package/dist/collection/index.js.map +0 -1
  127. package/dist/collection/types.d.ts +0 -365
  128. package/dist/collection/types.d.ts.map +0 -1
  129. package/dist/collection/types.js +0 -7
  130. package/dist/collection/types.js.map +0 -1
  131. package/dist/constants/index.d.ts +0 -51
  132. package/dist/constants/index.d.ts.map +0 -1
  133. package/dist/constants/index.js +0 -68
  134. package/dist/constants/index.js.map +0 -1
  135. package/dist/indexes/BPlusTree.d.ts +0 -181
  136. package/dist/indexes/BPlusTree.d.ts.map +0 -1
  137. package/dist/indexes/BPlusTree.js +0 -528
  138. package/dist/indexes/BPlusTree.js.map +0 -1
  139. package/dist/indexes/IndexManager.d.ts +0 -236
  140. package/dist/indexes/IndexManager.d.ts.map +0 -1
  141. package/dist/indexes/IndexManager.js +0 -502
  142. package/dist/indexes/IndexManager.js.map +0 -1
  143. package/dist/indexes/PrimaryIndex.d.ts +0 -240
  144. package/dist/indexes/PrimaryIndex.d.ts.map +0 -1
  145. package/dist/indexes/PrimaryIndex.js +0 -354
  146. package/dist/indexes/PrimaryIndex.js.map +0 -1
  147. package/dist/indexes/SecondaryIndex.d.ts +0 -204
  148. package/dist/indexes/SecondaryIndex.d.ts.map +0 -1
  149. package/dist/indexes/SecondaryIndex.js +0 -480
  150. package/dist/indexes/SecondaryIndex.js.map +0 -1
  151. package/dist/indexes/errors.d.ts +0 -66
  152. package/dist/indexes/errors.d.ts.map +0 -1
  153. package/dist/indexes/errors.js +0 -117
  154. package/dist/indexes/errors.js.map +0 -1
  155. package/dist/indexes/index.d.ts +0 -52
  156. package/dist/indexes/index.d.ts.map +0 -1
  157. package/dist/indexes/index.js +0 -131
  158. package/dist/indexes/index.js.map +0 -1
  159. package/dist/indexes/types.d.ts +0 -246
  160. package/dist/indexes/types.d.ts.map +0 -1
  161. package/dist/indexes/types.js +0 -30
  162. package/dist/indexes/types.js.map +0 -1
  163. package/dist/performance/BatchWALWriter.d.ts +0 -185
  164. package/dist/performance/BatchWALWriter.d.ts.map +0 -1
  165. package/dist/performance/BatchWALWriter.js +0 -490
  166. package/dist/performance/BatchWALWriter.js.map +0 -1
  167. package/dist/performance/ColumnarStorage.d.ts +0 -138
  168. package/dist/performance/ColumnarStorage.d.ts.map +0 -1
  169. package/dist/performance/ColumnarStorage.js +0 -875
  170. package/dist/performance/ColumnarStorage.js.map +0 -1
  171. package/dist/performance/LazyQuery.d.ts +0 -307
  172. package/dist/performance/LazyQuery.d.ts.map +0 -1
  173. package/dist/performance/LazyQuery.js +0 -588
  174. package/dist/performance/LazyQuery.js.map +0 -1
  175. package/dist/performance/OptimizedBuffer.d.ts +0 -375
  176. package/dist/performance/OptimizedBuffer.d.ts.map +0 -1
  177. package/dist/performance/OptimizedBuffer.js +0 -730
  178. package/dist/performance/OptimizedBuffer.js.map +0 -1
  179. package/dist/performance/RWLock.d.ts +0 -260
  180. package/dist/performance/RWLock.d.ts.map +0 -1
  181. package/dist/performance/RWLock.js +0 -570
  182. package/dist/performance/RWLock.js.map +0 -1
  183. package/dist/performance/index.d.ts +0 -41
  184. package/dist/performance/index.d.ts.map +0 -1
  185. package/dist/performance/index.js +0 -162
  186. package/dist/performance/index.js.map +0 -1
  187. package/dist/performance/types.d.ts +0 -247
  188. package/dist/performance/types.d.ts.map +0 -1
  189. package/dist/performance/types.js +0 -26
  190. package/dist/performance/types.js.map +0 -1
  191. package/dist/storage/Checkpoint.d.ts +0 -128
  192. package/dist/storage/Checkpoint.d.ts.map +0 -1
  193. package/dist/storage/Checkpoint.js +0 -251
  194. package/dist/storage/Checkpoint.js.map +0 -1
  195. package/dist/storage/LightFile.d.ts +0 -227
  196. package/dist/storage/LightFile.d.ts.map +0 -1
  197. package/dist/storage/LightFile.js +0 -526
  198. package/dist/storage/LightFile.js.map +0 -1
  199. package/dist/storage/Recovery.d.ts +0 -172
  200. package/dist/storage/Recovery.d.ts.map +0 -1
  201. package/dist/storage/Recovery.js +0 -399
  202. package/dist/storage/Recovery.js.map +0 -1
  203. package/dist/storage/SHMFile.d.ts +0 -243
  204. package/dist/storage/SHMFile.d.ts.map +0 -1
  205. package/dist/storage/SHMFile.js +0 -436
  206. package/dist/storage/SHMFile.js.map +0 -1
  207. package/dist/storage/StorageEngine.d.ts +0 -146
  208. package/dist/storage/StorageEngine.d.ts.map +0 -1
  209. package/dist/storage/StorageEngine.js +0 -353
  210. package/dist/storage/StorageEngine.js.map +0 -1
  211. package/dist/storage/WALFile.d.ts +0 -248
  212. package/dist/storage/WALFile.d.ts.map +0 -1
  213. package/dist/storage/WALFile.js +0 -597
  214. package/dist/storage/WALFile.js.map +0 -1
  215. package/dist/types/index.d.ts +0 -220
  216. package/dist/types/index.d.ts.map +0 -1
  217. package/dist/types/index.js +0 -7
  218. package/dist/types/index.js.map +0 -1
  219. package/dist/utils/binary.d.ts +0 -271
  220. package/dist/utils/binary.d.ts.map +0 -1
  221. package/dist/utils/binary.js +0 -454
  222. package/dist/utils/binary.js.map +0 -1
  223. package/dist/utils/file.d.ts +0 -166
  224. package/dist/utils/file.d.ts.map +0 -1
  225. package/dist/utils/file.js +0 -346
  226. package/dist/utils/file.js.map +0 -1
  227. package/dist/utils/index.d.ts +0 -6
  228. package/dist/utils/index.d.ts.map +0 -1
  229. package/dist/utils/index.js +0 -39
  230. package/dist/utils/index.js.map +0 -1
@@ -1,588 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"LazyQuery.js","sourceRoot":"","sources":["../../src/performance/LazyQuery.ts"],"names":[],"mappings":"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"}