@adobe/data 0.3.0 → 0.3.2

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 (158) hide show
  1. package/README.md +1 -1
  2. package/dist/cache/functions/hashing/array-buffer-to-hex.d.ts +1 -0
  3. package/dist/cache/functions/hashing/array-buffer-to-hex.js +27 -0
  4. package/dist/cache/functions/hashing/array-buffer-to-hex.js.map +1 -0
  5. package/dist/cache/functions/hashing/arrayBufferToHex.d.ts +1 -0
  6. package/dist/cache/functions/hashing/arrayBufferToHex.js +27 -0
  7. package/dist/cache/functions/hashing/arrayBufferToHex.js.map +1 -0
  8. package/dist/cache/functions/hashing/blob-to-hash.d.ts +5 -0
  9. package/dist/cache/functions/hashing/blob-to-hash.js +34 -8
  10. package/dist/cache/functions/hashing/blob-to-hash.js.map +1 -1
  11. package/dist/cache/functions/hashing/buffer-to-hash.js +1 -5
  12. package/dist/cache/functions/hashing/buffer-to-hash.js.map +1 -1
  13. package/dist/cache/functions/hashing/hashing.test.js +322 -65
  14. package/dist/cache/functions/hashing/hashing.test.js.map +1 -1
  15. package/dist/ecs/archetype/archetype.d.ts +8 -3
  16. package/dist/ecs/archetype/create-archetype.js +2 -1
  17. package/dist/ecs/archetype/create-archetype.js.map +1 -1
  18. package/dist/ecs/archetype/create-archetype.test.js +4 -4
  19. package/dist/ecs/archetype/create-archetype.test.js.map +1 -1
  20. package/dist/ecs/archetype/delete-row.test.js +3 -3
  21. package/dist/ecs/archetype/delete-row.test.js.map +1 -1
  22. package/dist/ecs/database/create-database.js +17 -2
  23. package/dist/ecs/database/create-database.js.map +1 -1
  24. package/dist/ecs/database/create-database.test.js +234 -0
  25. package/dist/ecs/database/create-database.test.js.map +1 -1
  26. package/dist/ecs/database/database.d.ts +7 -4
  27. package/dist/ecs/database/observe-select-entities.d.ts +1 -1
  28. package/dist/ecs/database/observe-select-entities.js.map +1 -1
  29. package/dist/ecs/database/transactional-store/create-transactional-store.js +3 -0
  30. package/dist/ecs/database/transactional-store/create-transactional-store.js.map +1 -1
  31. package/dist/ecs/database/transactional-store/create-transactional-store.test.js +29 -2
  32. package/dist/ecs/database/transactional-store/create-transactional-store.test.js.map +1 -1
  33. package/dist/ecs/database/transactional-store/patch-entity-values.d.ts +2 -2
  34. package/dist/ecs/database/transactional-store/patch-entity-values.js.map +1 -1
  35. package/dist/ecs/entity-location-table/create-entity-location-table.d.ts +7 -0
  36. package/dist/ecs/entity-location-table/create-entity-location-table.js +14 -3
  37. package/dist/ecs/entity-location-table/create-entity-location-table.js.map +1 -1
  38. package/dist/ecs/store/core/core.d.ts +13 -5
  39. package/dist/ecs/store/core/create-core.js +8 -3
  40. package/dist/ecs/store/core/create-core.js.map +1 -1
  41. package/dist/ecs/store/core/create-core.test.js +118 -0
  42. package/dist/ecs/store/core/create-core.test.js.map +1 -1
  43. package/dist/ecs/store/core/select-entities.d.ts +1 -1
  44. package/dist/ecs/store/core/select-entities.js +2 -2
  45. package/dist/ecs/store/core/select-entities.js.map +1 -1
  46. package/dist/ecs/store/create-store.js.map +1 -1
  47. package/dist/ecs/store/create-store.test.js +21 -0
  48. package/dist/ecs/store/create-store.test.js.map +1 -1
  49. package/dist/ecs/store/store.d.ts +1 -1
  50. package/dist/equals.js +17 -11
  51. package/dist/equals.js.map +1 -1
  52. package/dist/equals.test.js +47 -0
  53. package/dist/equals.test.js.map +1 -1
  54. package/dist/functions/blit.d.ts +9 -0
  55. package/dist/functions/blit.js +42 -0
  56. package/dist/functions/blit.js.map +1 -0
  57. package/dist/functions/copy-view-bytes.d.ts +2 -0
  58. package/dist/functions/copy-view-bytes.js +29 -0
  59. package/dist/functions/copy-view-bytes.js.map +1 -0
  60. package/dist/functions/index.d.ts +3 -0
  61. package/dist/functions/index.js +3 -0
  62. package/dist/functions/index.js.map +1 -1
  63. package/dist/functions/serialization/codec.d.ts +24 -0
  64. package/dist/functions/serialization/codec.js +48 -0
  65. package/dist/functions/serialization/codec.js.map +1 -0
  66. package/dist/functions/serialization/deserialize.d.ts +4 -0
  67. package/dist/functions/serialization/deserialize.js +15 -0
  68. package/dist/functions/serialization/deserialize.js.map +1 -0
  69. package/dist/functions/serialization/index.d.ts +2 -0
  70. package/dist/functions/serialization/index.js +3 -0
  71. package/dist/functions/serialization/index.js.map +1 -0
  72. package/dist/functions/serialization/register-typed-array-codecs.d.ts +1 -0
  73. package/dist/functions/serialization/register-typed-array-codecs.js +13 -0
  74. package/dist/functions/serialization/register-typed-array-codecs.js.map +1 -0
  75. package/dist/functions/serialization/serialization.test.d.ts +1 -0
  76. package/dist/functions/serialization/serialization.test.js +79 -0
  77. package/dist/functions/serialization/serialization.test.js.map +1 -0
  78. package/dist/functions/serialization/serialize.d.ts +4 -0
  79. package/dist/functions/serialization/serialize.js +19 -0
  80. package/dist/functions/serialization/serialize.js.map +1 -0
  81. package/dist/observe/index.d.ts +1 -0
  82. package/dist/observe/index.js +1 -0
  83. package/dist/observe/index.js.map +1 -1
  84. package/dist/observe/observe.test.js +24 -0
  85. package/dist/observe/observe.test.js.map +1 -1
  86. package/dist/observe/to-async-generator.d.ts +9 -0
  87. package/dist/observe/to-async-generator.js +129 -0
  88. package/dist/observe/to-async-generator.js.map +1 -0
  89. package/dist/observe/to-async-generator.test.d.ts +1 -0
  90. package/dist/observe/to-async-generator.test.js +413 -0
  91. package/dist/observe/to-async-generator.test.js.map +1 -0
  92. package/dist/observe/with-map.d.ts +1 -1
  93. package/dist/observe/with-map.js +4 -1
  94. package/dist/observe/with-map.js.map +1 -1
  95. package/dist/schema/f32 copy.d.ts +6 -0
  96. package/dist/schema/f32 copy.js +6 -0
  97. package/dist/schema/f32 copy.js.map +1 -0
  98. package/dist/schema/f64.d.ts +6 -0
  99. package/dist/schema/f64.js +6 -0
  100. package/dist/schema/f64.js.map +1 -0
  101. package/dist/schema/schema.d.ts +5 -1
  102. package/dist/schema/time.d.ts +1 -1
  103. package/dist/schema/time.js +2 -2
  104. package/dist/table/add-row.js +4 -3
  105. package/dist/table/add-row.js.map +1 -1
  106. package/dist/table/copy-column-to-gpu-buffer.js +2 -2
  107. package/dist/table/copy-column-to-gpu-buffer.js.map +1 -1
  108. package/dist/table/create-table.js +4 -2
  109. package/dist/table/create-table.js.map +1 -1
  110. package/dist/table/create-table.test.js +1 -1
  111. package/dist/table/create-table.test.js.map +1 -1
  112. package/dist/table/delete-row.js +1 -1
  113. package/dist/table/delete-row.js.map +1 -1
  114. package/dist/table/ensure-capacity.d.ts +1 -1
  115. package/dist/table/ensure-capacity.js +10 -10
  116. package/dist/table/ensure-capacity.js.map +1 -1
  117. package/dist/table/select-rows.js +2 -2
  118. package/dist/table/select-rows.js.map +1 -1
  119. package/dist/table/table.d.ts +4 -2
  120. package/dist/tsconfig.tsbuildinfo +1 -1
  121. package/dist/typed-buffer/create-array-buffer.d.ts +3 -3
  122. package/dist/typed-buffer/create-array-buffer.js +36 -32
  123. package/dist/typed-buffer/create-array-buffer.js.map +1 -1
  124. package/dist/typed-buffer/create-const-buffer.d.ts +3 -1
  125. package/dist/typed-buffer/create-const-buffer.js +30 -28
  126. package/dist/typed-buffer/create-const-buffer.js.map +1 -1
  127. package/dist/typed-buffer/create-const-buffer.test.js +18 -46
  128. package/dist/typed-buffer/create-const-buffer.test.js.map +1 -1
  129. package/dist/typed-buffer/create-number-buffer.d.ts +2 -6
  130. package/dist/typed-buffer/create-number-buffer.js +40 -33
  131. package/dist/typed-buffer/create-number-buffer.js.map +1 -1
  132. package/dist/typed-buffer/create-struct-buffer.d.ts +3 -7
  133. package/dist/typed-buffer/create-struct-buffer.js +58 -41
  134. package/dist/typed-buffer/create-struct-buffer.js.map +1 -1
  135. package/dist/typed-buffer/create-typed-buffer.d.ts +2 -5
  136. package/dist/typed-buffer/create-typed-buffer.js +16 -8
  137. package/dist/typed-buffer/create-typed-buffer.js.map +1 -1
  138. package/dist/typed-buffer/is-typed-buffer.d.ts +2 -0
  139. package/dist/typed-buffer/is-typed-buffer.js +5 -0
  140. package/dist/typed-buffer/is-typed-buffer.js.map +1 -0
  141. package/dist/typed-buffer/is-typed-buffer.test.d.ts +1 -0
  142. package/dist/typed-buffer/is-typed-buffer.test.js +26 -0
  143. package/dist/typed-buffer/is-typed-buffer.test.js.map +1 -0
  144. package/dist/typed-buffer/register-typed-buffer-codecs.d.ts +1 -0
  145. package/dist/typed-buffer/register-typed-buffer-codecs.js +80 -0
  146. package/dist/typed-buffer/register-typed-buffer-codecs.js.map +1 -0
  147. package/dist/typed-buffer/typed-buffer-equals.d.ts +2 -0
  148. package/dist/typed-buffer/typed-buffer-equals.js +20 -0
  149. package/dist/typed-buffer/typed-buffer-equals.js.map +1 -0
  150. package/dist/typed-buffer/typed-buffer-equals.test.d.ts +1 -0
  151. package/dist/typed-buffer/typed-buffer-equals.test.js +234 -0
  152. package/dist/typed-buffer/typed-buffer-equals.test.js.map +1 -0
  153. package/dist/typed-buffer/typed-buffer.d.ts +18 -8
  154. package/dist/typed-buffer/typed-buffer.js +6 -1
  155. package/dist/typed-buffer/typed-buffer.js.map +1 -1
  156. package/dist/typed-buffer/typed-buffer.test.js +30 -66
  157. package/dist/typed-buffer/typed-buffer.test.js.map +1 -1
  158. package/package.json +1 -1
@@ -0,0 +1,413 @@
1
+ /*MIT License
2
+
3
+ © Copyright 2025 Adobe. All rights reserved.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.*/
22
+ import { describe, it, expect } from 'vitest';
23
+ import { toAsyncGenerator } from './to-async-generator.js';
24
+ // Helper function to create test observables
25
+ function createTestObservable(sync, async) {
26
+ const observers = new Set();
27
+ const observe = (observer) => {
28
+ observers.add(observer);
29
+ if (sync !== undefined) {
30
+ observer(sync);
31
+ }
32
+ return () => {
33
+ observers.delete(observer);
34
+ };
35
+ };
36
+ return [
37
+ observe,
38
+ async () => {
39
+ for (const value of async) {
40
+ await Promise.resolve();
41
+ for (const observer of observers) {
42
+ observer(value);
43
+ }
44
+ }
45
+ // Add finish signal after all async values
46
+ for (const observer of observers) {
47
+ observer(null);
48
+ }
49
+ },
50
+ ];
51
+ }
52
+ // Helper function to collect all values from an async generator
53
+ async function collectValues(generator) {
54
+ const values = [];
55
+ try {
56
+ while (true) {
57
+ const result = await generator.next();
58
+ if (result.done)
59
+ break;
60
+ values.push(result.value);
61
+ }
62
+ }
63
+ catch (error) {
64
+ throw error;
65
+ }
66
+ return values;
67
+ }
68
+ describe('toAsyncGenerator', () => {
69
+ it('should convert observable with sync value to async generator', async () => {
70
+ // Create a simple observable that emits a sync value and then finishes
71
+ const observe = (notify) => {
72
+ notify(42);
73
+ notify(null); // Explicitly finish the generator
74
+ return () => { };
75
+ };
76
+ const generator = toAsyncGenerator(observe);
77
+ // Consume the generator
78
+ const result = await generator.next();
79
+ expect(result.done).toBe(false);
80
+ expect(result.value).toBe(42);
81
+ // Should be done after consuming the value
82
+ const doneResult = await generator.next();
83
+ expect(doneResult).toEqual({ done: true, value: undefined });
84
+ });
85
+ it('should work with async observable', async () => {
86
+ // Create an async observable
87
+ const observe = (notify) => {
88
+ // Emit value asynchronously
89
+ setTimeout(() => {
90
+ notify(42);
91
+ notify(null); // Finish
92
+ }, 0);
93
+ return () => { };
94
+ };
95
+ const generator = toAsyncGenerator(observe);
96
+ // Consume the generator
97
+ const result = await generator.next();
98
+ expect(result.done).toBe(false);
99
+ expect(result.value).toBe(42);
100
+ // Should be done after consuming the value
101
+ const doneResult = await generator.next();
102
+ expect(doneResult).toEqual({ done: true, value: undefined });
103
+ });
104
+ it('should work with custom finished function', async () => {
105
+ // Create an observable that emits a specific finish value
106
+ const observe = (notify) => {
107
+ notify(42);
108
+ notify(999); // Use 999 as finish signal
109
+ return () => { };
110
+ };
111
+ // Custom finished function that finishes on 999
112
+ const generator = toAsyncGenerator(observe, (value) => value === 999);
113
+ // Consume the generator
114
+ const result = await generator.next();
115
+ expect(result.done).toBe(false);
116
+ expect(result.value).toBe(42);
117
+ // Should be done after consuming the value
118
+ const doneResult = await generator.next();
119
+ expect(doneResult).toEqual({ done: true, value: undefined });
120
+ });
121
+ it('should yield synchronous values immediately', async () => {
122
+ const observe = (notify) => {
123
+ notify(42);
124
+ notify(null); // Finish immediately
125
+ return () => { };
126
+ };
127
+ const generator = toAsyncGenerator(observe);
128
+ const values = await collectValues(generator);
129
+ expect(values).toEqual([42]);
130
+ });
131
+ it('should yield asynchronous values in order', async () => {
132
+ const observe = (notify) => {
133
+ // Emit values asynchronously
134
+ setTimeout(() => {
135
+ notify(1);
136
+ notify(2);
137
+ notify(3);
138
+ notify(null); // Finish
139
+ }, 0);
140
+ return () => { };
141
+ };
142
+ const generator = toAsyncGenerator(observe);
143
+ const values = await collectValues(generator);
144
+ expect(values).toEqual([1, 2, 3]);
145
+ });
146
+ it('should yield both sync and async values in correct order', async () => {
147
+ const observe = (notify) => {
148
+ notify(0); // Sync value
149
+ // Emit values asynchronously
150
+ setTimeout(() => {
151
+ notify(1);
152
+ notify(2);
153
+ notify(3);
154
+ notify(null); // Finish
155
+ }, 0);
156
+ return () => { };
157
+ };
158
+ const generator = toAsyncGenerator(observe);
159
+ const values = await collectValues(generator);
160
+ expect(values).toEqual([0, 1, 2, 3]);
161
+ });
162
+ it('should stop on null/undefined by default', async () => {
163
+ const observe = (notify) => {
164
+ notify(1);
165
+ notify(null); // This should finish the generator
166
+ notify(3); // This should be ignored
167
+ return () => { };
168
+ };
169
+ const generator = toAsyncGenerator(observe);
170
+ const values = await collectValues(generator);
171
+ expect(values).toEqual([1]);
172
+ });
173
+ it('should handle empty observable', async () => {
174
+ const observe = (notify) => {
175
+ notify(null); // Finish immediately
176
+ return () => { };
177
+ };
178
+ const generator = toAsyncGenerator(observe);
179
+ const values = await collectValues(generator);
180
+ expect(values).toEqual([]);
181
+ });
182
+ it('should handle immediate finish value', async () => {
183
+ const [observe] = createTestObservable(null, [1, 2, 3]);
184
+ const generator = toAsyncGenerator(observe);
185
+ const values = await collectValues(generator);
186
+ expect(values).toEqual([]);
187
+ });
188
+ it('should handle multiple rapid emissions', async () => {
189
+ const observe = (notify) => {
190
+ // Emit values rapidly
191
+ setTimeout(() => {
192
+ notify(1);
193
+ notify(2);
194
+ notify(3);
195
+ notify(4);
196
+ notify(5);
197
+ notify(null); // Finish
198
+ }, 0);
199
+ return () => { };
200
+ };
201
+ const generator = toAsyncGenerator(observe);
202
+ const values = await collectValues(generator);
203
+ expect(values).toEqual([1, 2, 3, 4, 5]);
204
+ });
205
+ it('should handle synchronous finish in observe callback', async () => {
206
+ const observe = (notify) => {
207
+ notify(1);
208
+ notify(2);
209
+ notify(null); // This should finish the generator
210
+ notify(4); // This should be ignored
211
+ return () => { };
212
+ };
213
+ const generator = toAsyncGenerator(observe);
214
+ const values = await collectValues(generator);
215
+ expect(values).toEqual([1, 2]);
216
+ });
217
+ it('should handle errors in finished function', async () => {
218
+ const observe = (notify) => {
219
+ notify(1);
220
+ notify(2);
221
+ notify(3);
222
+ return () => { };
223
+ };
224
+ const generator = toAsyncGenerator(observe, () => {
225
+ throw new Error('Finished function error');
226
+ });
227
+ await expect(collectValues(generator)).rejects.toThrow('Finished function error');
228
+ });
229
+ it('should handle return() method correctly', async () => {
230
+ const observe = (notify) => {
231
+ notify(1);
232
+ notify(2);
233
+ notify(3);
234
+ notify(null); // Finish
235
+ return () => { };
236
+ };
237
+ const generator = toAsyncGenerator(observe);
238
+ // Get first value
239
+ const firstResult = await generator.next();
240
+ expect(firstResult).toEqual({ done: false, value: 1 });
241
+ // Return early
242
+ const returnResult = await generator.return(undefined);
243
+ expect(returnResult).toEqual({ done: true, value: undefined });
244
+ // Subsequent calls should return done
245
+ const nextResult = await generator.next();
246
+ expect(nextResult).toEqual({ done: true, value: undefined });
247
+ });
248
+ it('should handle throw() method correctly', async () => {
249
+ const [observe] = createTestObservable(undefined, [1, 2, 3]);
250
+ const generator = toAsyncGenerator(observe);
251
+ const error = new Error('Test throw error');
252
+ await expect(generator.throw(error)).rejects.toThrow('Test throw error');
253
+ });
254
+ it('should handle multiple subscribers correctly', async () => {
255
+ const observe = (notify) => {
256
+ notify(1);
257
+ notify(2);
258
+ notify(3);
259
+ notify(null); // Finish
260
+ return () => { };
261
+ };
262
+ // Create two generators
263
+ const generator1 = toAsyncGenerator(observe);
264
+ const generator2 = toAsyncGenerator(observe);
265
+ // Collect from both
266
+ const values1 = await collectValues(generator1);
267
+ const values2 = await collectValues(generator2);
268
+ expect(values1).toEqual([1, 2, 3]);
269
+ expect(values2).toEqual([1, 2, 3]);
270
+ });
271
+ it('should handle queue compaction correctly', async () => {
272
+ const observe = (notify) => {
273
+ // Emit many values
274
+ setTimeout(() => {
275
+ for (let i = 0; i < 2000; i++) {
276
+ notify(i);
277
+ }
278
+ notify(null); // Finish
279
+ }, 0);
280
+ return () => { };
281
+ };
282
+ const generator = toAsyncGenerator(observe);
283
+ const values = await collectValues(generator);
284
+ expect(values).toEqual(Array.from({ length: 2000 }, (_, i) => i));
285
+ });
286
+ it('should handle custom finished function that never returns true', async () => {
287
+ const observe = (notify) => {
288
+ notify(1);
289
+ notify(2);
290
+ notify(3);
291
+ notify(null); // Finish signal (but finished function ignores it)
292
+ return () => { };
293
+ };
294
+ const generator = toAsyncGenerator(observe, () => false);
295
+ // Test that we can get the first few values
296
+ const result1 = await generator.next();
297
+ expect(result1).toEqual({ done: false, value: 1 });
298
+ const result2 = await generator.next();
299
+ expect(result2).toEqual({ done: false, value: 2 });
300
+ const result3 = await generator.next();
301
+ expect(result3).toEqual({ done: false, value: 3 });
302
+ // The null value should be ignored since finished function returns false
303
+ const result4 = await generator.next();
304
+ expect(result4).toEqual({ done: false, value: null });
305
+ });
306
+ it('should handle finished function that returns true on first value', async () => {
307
+ const observe = (notify) => {
308
+ notify(1);
309
+ notify(2);
310
+ notify(3);
311
+ return () => { };
312
+ };
313
+ const generator = toAsyncGenerator(observe, () => true);
314
+ const values = await collectValues(generator);
315
+ expect(values).toEqual([]);
316
+ });
317
+ it('should handle synchronous observe callback that finishes immediately', async () => {
318
+ const observe = (notify) => {
319
+ notify(null); // Finish immediately
320
+ return () => { };
321
+ };
322
+ const generator = toAsyncGenerator(observe);
323
+ const values = await collectValues(generator);
324
+ expect(values).toEqual([]);
325
+ });
326
+ it('should handle mixed sync/async with custom finished function', async () => {
327
+ const [observe, doAsync] = createTestObservable(0, [1, 2, 3, 4, 5]);
328
+ const generator = toAsyncGenerator(observe, (value) => value === 3);
329
+ // Start collecting values
330
+ const valuesPromise = collectValues(generator);
331
+ // Trigger async values
332
+ await doAsync();
333
+ const values = await valuesPromise;
334
+ expect(values).toEqual([0, 1, 2]);
335
+ });
336
+ it('should handle return() after error', async () => {
337
+ const [observe] = createTestObservable(undefined, [1, 2, 3]);
338
+ const generator = toAsyncGenerator(observe, () => {
339
+ throw new Error('Test error');
340
+ });
341
+ // Try to return after error
342
+ const returnResult = await generator.return(undefined);
343
+ expect(returnResult).toEqual({ done: true, value: undefined });
344
+ });
345
+ it('should handle throw() after return()', async () => {
346
+ const [observe] = createTestObservable(undefined, [1, 2, 3]);
347
+ const generator = toAsyncGenerator(observe);
348
+ // Return first
349
+ await generator.return(undefined);
350
+ // Then throw
351
+ const error = new Error('Test throw after return');
352
+ await expect(generator.throw(error)).rejects.toThrow('Test throw after return');
353
+ });
354
+ it('should handle multiple rapid next() calls', async () => {
355
+ const observe = (notify) => {
356
+ notify(1);
357
+ notify(2);
358
+ notify(3);
359
+ notify(null); // Finish
360
+ return () => { };
361
+ };
362
+ const generator = toAsyncGenerator(observe);
363
+ // Rapid next() calls
364
+ const promises = [
365
+ generator.next(),
366
+ generator.next(),
367
+ generator.next(),
368
+ generator.next()
369
+ ];
370
+ const results = await Promise.all(promises);
371
+ expect(results).toEqual([
372
+ { done: false, value: 1 },
373
+ { done: false, value: 2 },
374
+ { done: false, value: 3 },
375
+ { done: true, value: undefined }
376
+ ]);
377
+ });
378
+ it('should handle finished function that throws on specific value', async () => {
379
+ const observe = (notify) => {
380
+ notify(1);
381
+ notify(2);
382
+ notify(3);
383
+ return () => { };
384
+ };
385
+ const generator = toAsyncGenerator(observe, (value) => {
386
+ if (value === 2)
387
+ throw new Error('Error on value 2');
388
+ return false;
389
+ });
390
+ await expect(collectValues(generator)).rejects.toThrow('Error on value 2');
391
+ });
392
+ it('should handle errors in finished function with async observable', async () => {
393
+ const observe = (notify) => {
394
+ // Emit values asynchronously
395
+ setTimeout(() => {
396
+ notify(1);
397
+ notify(2);
398
+ }, 0);
399
+ return () => { };
400
+ };
401
+ const generator = toAsyncGenerator(observe, (value) => {
402
+ if (value === 2)
403
+ throw new Error('Test error');
404
+ return false;
405
+ });
406
+ // Should get first value
407
+ const result1 = await generator.next();
408
+ expect(result1).toEqual({ done: false, value: 1 });
409
+ // Second value should trigger error
410
+ await expect(generator.next()).rejects.toThrow('Test error');
411
+ });
412
+ });
413
+ //# sourceMappingURL=to-async-generator.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"to-async-generator.test.js","sourceRoot":"","sources":["../../src/observe/to-async-generator.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;WAoBW;AACX,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAG3D,6CAA6C;AAC7C,SAAS,oBAAoB,CACzB,IAAmB,EACnB,KAAe;IAEf,MAAM,SAAS,GAAG,IAAI,GAAG,EAAsB,CAAC;IAChD,MAAM,OAAO,GAAe,CAAC,QAAQ,EAAE,EAAE;QACrC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;QACD,OAAO,GAAG,EAAE;YACR,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC,CAAC;IACN,CAAC,CAAC;IACF,OAAO;QACH,OAAO;QACP,KAAK,IAAI,EAAE;YACP,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;gBACxB,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;gBACxB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;oBAC/B,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACpB,CAAC;YACL,CAAC;YACD,2CAA2C;YAC3C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBAC/B,QAAQ,CAAC,IAAW,CAAC,CAAC;YAC1B,CAAC;QACL,CAAC;KACJ,CAAC;AACN,CAAC;AAED,gEAAgE;AAChE,KAAK,UAAU,aAAa,CAAI,SAA4B;IACxD,MAAM,MAAM,GAAQ,EAAE,CAAC;IACvB,IAAI,CAAC;QACD,OAAO,IAAI,EAAE,CAAC;YACV,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;YACtC,IAAI,MAAM,CAAC,IAAI;gBAAE,MAAM;YACvB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,KAAK,CAAC;IAChB,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC1E,uEAAuE;QACvE,MAAM,OAAO,GAAoB,CAAC,MAAM,EAAE,EAAE;YACxC,MAAM,CAAC,EAAE,CAAC,CAAC;YACX,MAAM,CAAC,IAAW,CAAC,CAAC,CAAC,kCAAkC;YACvD,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC;QAEF,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE5C,wBAAwB;QACxB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE9B,2CAA2C;QAC3C,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;QAC1C,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QAC/C,6BAA6B;QAC7B,MAAM,OAAO,GAAoB,CAAC,MAAM,EAAE,EAAE;YACxC,4BAA4B;YAC5B,UAAU,CAAC,GAAG,EAAE;gBACZ,MAAM,CAAC,EAAE,CAAC,CAAC;gBACX,MAAM,CAAC,IAAW,CAAC,CAAC,CAAC,SAAS;YAClC,CAAC,EAAE,CAAC,CAAC,CAAC;YACN,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC;QAEF,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE5C,wBAAwB;QACxB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE9B,2CAA2C;QAC3C,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;QAC1C,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACvD,0DAA0D;QAC1D,MAAM,OAAO,GAAoB,CAAC,MAAM,EAAE,EAAE;YACxC,MAAM,CAAC,EAAE,CAAC,CAAC;YACX,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,2BAA2B;YACxC,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC;QAEF,gDAAgD;QAChD,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC;QAEtE,wBAAwB;QACxB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE9B,2CAA2C;QAC3C,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;QAC1C,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,OAAO,GAAoB,CAAC,MAAM,EAAE,EAAE;YACxC,MAAM,CAAC,EAAE,CAAC,CAAC;YACX,MAAM,CAAC,IAAW,CAAC,CAAC,CAAC,qBAAqB;YAC1C,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC;QACF,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,OAAO,GAAoB,CAAC,MAAM,EAAE,EAAE;YACxC,6BAA6B;YAC7B,UAAU,CAAC,GAAG,EAAE;gBACZ,MAAM,CAAC,CAAC,CAAC,CAAC;gBACV,MAAM,CAAC,CAAC,CAAC,CAAC;gBACV,MAAM,CAAC,CAAC,CAAC,CAAC;gBACV,MAAM,CAAC,IAAW,CAAC,CAAC,CAAC,SAAS;YAClC,CAAC,EAAE,CAAC,CAAC,CAAC;YACN,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC;QACF,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,OAAO,GAAoB,CAAC,MAAM,EAAE,EAAE;YACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa;YACxB,6BAA6B;YAC7B,UAAU,CAAC,GAAG,EAAE;gBACZ,MAAM,CAAC,CAAC,CAAC,CAAC;gBACV,MAAM,CAAC,CAAC,CAAC,CAAC;gBACV,MAAM,CAAC,CAAC,CAAC,CAAC;gBACV,MAAM,CAAC,IAAW,CAAC,CAAC,CAAC,SAAS;YAClC,CAAC,EAAE,CAAC,CAAC,CAAC;YACN,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC;QACF,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,OAAO,GAAoB,CAAC,MAAM,EAAE,EAAE;YACxC,MAAM,CAAC,CAAC,CAAC,CAAC;YACV,MAAM,CAAC,IAAW,CAAC,CAAC,CAAC,mCAAmC;YACxD,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB;YACpC,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC;QACF,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,OAAO,GAAoB,CAAC,MAAM,EAAE,EAAE;YACxC,MAAM,CAAC,IAAW,CAAC,CAAC,CAAC,qBAAqB;YAC1C,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC;QACF,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,CAAC,OAAO,CAAC,GAAG,oBAAoB,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxD,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,OAAO,GAAoB,CAAC,MAAM,EAAE,EAAE;YACxC,sBAAsB;YACtB,UAAU,CAAC,GAAG,EAAE;gBACZ,MAAM,CAAC,CAAC,CAAC,CAAC;gBACV,MAAM,CAAC,CAAC,CAAC,CAAC;gBACV,MAAM,CAAC,CAAC,CAAC,CAAC;gBACV,MAAM,CAAC,CAAC,CAAC,CAAC;gBACV,MAAM,CAAC,CAAC,CAAC,CAAC;gBACV,MAAM,CAAC,IAAW,CAAC,CAAC,CAAC,SAAS;YAClC,CAAC,EAAE,CAAC,CAAC,CAAC;YACN,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC;QACF,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,OAAO,GAAoB,CAAC,MAAM,EAAE,EAAE;YACxC,MAAM,CAAC,CAAC,CAAC,CAAC;YACV,MAAM,CAAC,CAAC,CAAC,CAAC;YACV,MAAM,CAAC,IAAW,CAAC,CAAC,CAAC,mCAAmC;YACxD,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB;YACpC,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC;QAEF,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,OAAO,GAAoB,CAAC,MAAM,EAAE,EAAE;YACxC,MAAM,CAAC,CAAC,CAAC,CAAC;YACV,MAAM,CAAC,CAAC,CAAC,CAAC;YACV,MAAM,CAAC,CAAC,CAAC,CAAC;YACV,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC;QACF,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YAC7C,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,OAAO,GAAoB,CAAC,MAAM,EAAE,EAAE;YACxC,MAAM,CAAC,CAAC,CAAC,CAAC;YACV,MAAM,CAAC,CAAC,CAAC,CAAC;YACV,MAAM,CAAC,CAAC,CAAC,CAAC;YACV,MAAM,CAAC,IAAW,CAAC,CAAC,CAAC,SAAS;YAC9B,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC;QACF,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE5C,kBAAkB;QAClB,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;QAC3C,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAEvD,eAAe;QACf,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACvD,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAE/D,sCAAsC;QACtC,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;QAC1C,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,CAAC,OAAO,CAAC,GAAG,oBAAoB,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE5C,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC5C,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,OAAO,GAAoB,CAAC,MAAM,EAAE,EAAE;YACxC,MAAM,CAAC,CAAC,CAAC,CAAC;YACV,MAAM,CAAC,CAAC,CAAC,CAAC;YACV,MAAM,CAAC,CAAC,CAAC,CAAC;YACV,MAAM,CAAC,IAAW,CAAC,CAAC,CAAC,SAAS;YAC9B,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC;QAEF,wBAAwB;QACxB,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE7C,oBAAoB;QACpB,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,UAAU,CAAC,CAAC;QAEhD,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,OAAO,GAAoB,CAAC,MAAM,EAAE,EAAE;YACxC,mBAAmB;YACnB,UAAU,CAAC,GAAG,EAAE;gBACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC5B,MAAM,CAAC,CAAC,CAAC,CAAC;gBACd,CAAC;gBACD,MAAM,CAAC,IAAW,CAAC,CAAC,CAAC,SAAS;YAClC,CAAC,EAAE,CAAC,CAAC,CAAC;YACN,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC;QACF,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;QAC5E,MAAM,OAAO,GAAoB,CAAC,MAAM,EAAE,EAAE;YACxC,MAAM,CAAC,CAAC,CAAC,CAAC;YACV,MAAM,CAAC,CAAC,CAAC,CAAC;YACV,MAAM,CAAC,CAAC,CAAC,CAAC;YACV,MAAM,CAAC,IAAW,CAAC,CAAC,CAAC,mDAAmD;YACxE,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC;QACF,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QAEzD,4CAA4C;QAC5C,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;QACvC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAEnD,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;QACvC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAEnD,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;QACvC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAEnD,yEAAyE;QACzE,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;QACvC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;QAC9E,MAAM,OAAO,GAAoB,CAAC,MAAM,EAAE,EAAE;YACxC,MAAM,CAAC,CAAC,CAAC,CAAC;YACV,MAAM,CAAC,CAAC,CAAC,CAAC;YACV,MAAM,CAAC,CAAC,CAAC,CAAC;YACV,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC;QACF,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAExD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;QAClF,MAAM,OAAO,GAAoB,CAAC,MAAM,EAAE,EAAE;YACxC,MAAM,CAAC,IAAW,CAAC,CAAC,CAAC,qBAAqB;YAC1C,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC;QAEF,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACpE,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;QAEpE,0BAA0B;QAC1B,MAAM,aAAa,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;QAE/C,uBAAuB;QACvB,MAAM,OAAO,EAAE,CAAC;QAEhB,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,CAAC,OAAO,CAAC,GAAG,oBAAoB,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YAC7C,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,4BAA4B;QAC5B,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACvD,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,CAAC,OAAO,CAAC,GAAG,oBAAoB,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE5C,eAAe;QACf,MAAM,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAElC,aAAa;QACb,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACnD,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,OAAO,GAAoB,CAAC,MAAM,EAAE,EAAE;YACxC,MAAM,CAAC,CAAC,CAAC,CAAC;YACV,MAAM,CAAC,CAAC,CAAC,CAAC;YACV,MAAM,CAAC,CAAC,CAAC,CAAC;YACV,MAAM,CAAC,IAAW,CAAC,CAAC,CAAC,SAAS;YAC9B,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC;QACF,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE5C,qBAAqB;QACrB,MAAM,QAAQ,GAAG;YACb,SAAS,CAAC,IAAI,EAAE;YAChB,SAAS,CAAC,IAAI,EAAE;YAChB,SAAS,CAAC,IAAI,EAAE;YAChB,SAAS,CAAC,IAAI,EAAE;SACnB,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;YACpB,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE;YACzB,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE;YACzB,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE;YACzB,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE;SACnC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,OAAO,GAAoB,CAAC,MAAM,EAAE,EAAE;YACxC,MAAM,CAAC,CAAC,CAAC,CAAC;YACV,MAAM,CAAC,CAAC,CAAC,CAAC;YACV,MAAM,CAAC,CAAC,CAAC,CAAC;YACV,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC;QACF,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAClD,IAAI,KAAK,KAAK,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;YACrD,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QAC7E,MAAM,OAAO,GAAoB,CAAC,MAAM,EAAE,EAAE;YACxC,6BAA6B;YAC7B,UAAU,CAAC,GAAG,EAAE;gBACZ,MAAM,CAAC,CAAC,CAAC,CAAC;gBACV,MAAM,CAAC,CAAC,CAAC,CAAC;YACd,CAAC,EAAE,CAAC,CAAC,CAAC;YACN,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC;QAEF,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAClD,IAAI,KAAK,KAAK,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;YAC/C,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,yBAAyB;QACzB,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;QACvC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAEnD,oCAAoC;QACpC,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -2,4 +2,4 @@ import { Observe } from "./types.js";
2
2
  /**
3
3
  * Creates a new Observe function that converts the original observe functions notify values into a new value at each notification.
4
4
  */
5
- export declare function withMap<T, U>(observable: Observe<T>, map: (value: T) => U): Observe<U>;
5
+ export declare function withMap<T, U>(observable: Observe<T>, map: (value: T) => U | undefined): Observe<U>;
@@ -4,7 +4,10 @@
4
4
  export function withMap(observable, map) {
5
5
  return (observer) => {
6
6
  return observable((value) => {
7
- observer(map(value));
7
+ const mapped = map(value);
8
+ if (mapped !== undefined) {
9
+ observer(mapped);
10
+ }
8
11
  });
9
12
  };
10
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"with-map.js","sourceRoot":"","sources":["../../src/observe/with-map.ts"],"names":[],"mappings":"AAuBA;;GAEG;AACH,MAAM,UAAU,OAAO,CACrB,UAAsB,EACtB,GAAoB;IAEpB,OAAO,CAAC,QAAQ,EAAE,EAAE;QAClB,OAAO,UAAU,CAAC,CAAC,KAAK,EAAE,EAAE;YAC1B,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"with-map.js","sourceRoot":"","sources":["../../src/observe/with-map.ts"],"names":[],"mappings":"AAuBA;;GAEG;AACH,MAAM,UAAU,OAAO,CACrB,UAAsB,EACtB,GAAgC;IAEhC,OAAO,CAAC,QAAQ,EAAE,EAAE;QAClB,OAAO,UAAU,CAAC,CAAC,KAAK,EAAE,EAAE;YAC1B,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,QAAQ,CAAC,MAAM,CAAC,CAAC;YACnB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare const F32Schema: {
2
+ readonly type: "number";
3
+ readonly precision: 1;
4
+ readonly default: number;
5
+ };
6
+ export type F32 = number;
@@ -0,0 +1,6 @@
1
+ export const F32Schema = {
2
+ type: 'number',
3
+ precision: 1,
4
+ default: 0,
5
+ };
6
+ //# sourceMappingURL=f32%20copy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"f32 copy.js","sourceRoot":"","sources":["../../src/schema/f32 copy.ts"],"names":[],"mappings":"AAuBA,MAAM,CAAC,MAAM,SAAS,GAAG;IACrB,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,CAAC;IACZ,OAAO,EAAE,CAAW;CACG,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare const F64Schema: {
2
+ readonly type: "number";
3
+ readonly precision: 2;
4
+ readonly default: number;
5
+ };
6
+ export type F64 = number;
@@ -0,0 +1,6 @@
1
+ export const F64Schema = {
2
+ type: 'number',
3
+ precision: 2,
4
+ default: 0,
5
+ };
6
+ //# sourceMappingURL=f64.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"f64.js","sourceRoot":"","sources":["../../src/schema/f64.ts"],"names":[],"mappings":"AAuBA,MAAM,CAAC,MAAM,SAAS,GAAG;IACrB,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,CAAC;IACZ,OAAO,EAAE,CAAW;CACG,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { TypedBuffer } from "../typed-buffer/typed-buffer.js";
1
2
  import { DeepReadonly } from "../types/types.js";
2
3
  type JSONPath = string;
3
4
  type JSONMergePatch = unknown;
@@ -28,7 +29,7 @@ export interface UIProperties {
28
29
  };
29
30
  }
30
31
  export interface Schema {
31
- type?: 'number' | 'integer' | 'string' | 'boolean' | 'null' | 'array' | 'object';
32
+ type?: 'number' | 'integer' | 'string' | 'boolean' | 'null' | 'array' | 'object' | 'typed-buffer';
32
33
  conditionals?: readonly Conditional[];
33
34
  ui?: UIProperties;
34
35
  transient?: boolean;
@@ -76,6 +77,9 @@ export type FromSchema<T, Depth extends number = 5> = DeepReadonly<Depth extends
76
77
  } ? boolean : T extends {
77
78
  type: 'null';
78
79
  } ? null : T extends {
80
+ type: 'typed-buffer';
81
+ items: infer Items;
82
+ } ? TypedBuffer<FromSchema<Items>> : T extends {
79
83
  type: 'array';
80
84
  } | {
81
85
  items: any;
@@ -1,7 +1,7 @@
1
1
  import { FromSchema } from "./schema.js";
2
2
  export declare const TimeSchema: {
3
3
  readonly type: "number";
4
- readonly precision: 1;
4
+ readonly precision: 2;
5
5
  readonly default: number;
6
6
  };
7
7
  export type Time = FromSchema<typeof TimeSchema>;
@@ -19,6 +19,6 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
19
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
20
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
21
  SOFTWARE.*/
22
- import { F32Schema } from "./f32.js";
23
- export const TimeSchema = F32Schema;
22
+ import { F64Schema } from "./f64.js";
23
+ export const TimeSchema = F64Schema;
24
24
  //# sourceMappingURL=time.js.map
@@ -26,15 +26,16 @@ import { ensureCapacity } from "./ensure-capacity.js";
26
26
  * @param rowData
27
27
  */
28
28
  export const addRow = (table, rowData) => {
29
- ensureCapacity(table, table.rows + 1);
30
- const rowIndex = table.rows;
29
+ ensureCapacity(table, table.rowCount + 1);
30
+ const rowIndex = table.rowCount;
31
+ const newLength = rowIndex + 1;
31
32
  for (const name in rowData) {
32
33
  const column = table.columns[name];
33
34
  if (column) {
34
35
  column.set(rowIndex, rowData[name]);
35
36
  }
36
37
  }
37
- table.rows++;
38
+ table.rowCount++;
38
39
  return rowIndex;
39
40
  };
40
41
  //# sourceMappingURL=add-row.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"add-row.js","sourceRoot":"","sources":["../../src/table/add-row.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;WAoBW;AACX,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAItD;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAI,KAAe,EAAE,OAAU,EAAY,EAAE;IAC/D,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;IAC5B,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACxC,CAAC;IACL,CAAC;IACD,KAAK,CAAC,IAAI,EAAE,CAAC;IACb,OAAO,QAAQ,CAAC;AACpB,CAAC,CAAA"}
1
+ {"version":3,"file":"add-row.js","sourceRoot":"","sources":["../../src/table/add-row.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;WAoBW;AACX,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAItD;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAI,KAAe,EAAE,OAAU,EAAY,EAAE;IAC/D,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAChC,MAAM,SAAS,GAAG,QAAQ,GAAG,CAAC,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACxC,CAAC;IACL,CAAC;IACD,KAAK,CAAC,QAAQ,EAAE,CAAC;IACjB,OAAO,QAAQ,CAAC;AACpB,CAAC,CAAA"}
@@ -26,7 +26,7 @@ export const copyColumnToGPUBuffer = (tables, columnName, device, gpuBuffer) =>
26
26
  // get total byte length
27
27
  let totalByteLength = 0;
28
28
  for (const table of tables) {
29
- totalByteLength += table.rows * table.columns[columnName].typedArrayElementSizeInBytes;
29
+ totalByteLength += table.rowCount * table.columns[columnName].typedArrayElementSizeInBytes;
30
30
  }
31
31
  // ensure the gpu buffer is large enough
32
32
  if (gpuBuffer.size < totalByteLength) {
@@ -37,7 +37,7 @@ export const copyColumnToGPUBuffer = (tables, columnName, device, gpuBuffer) =>
37
37
  let offset = 0;
38
38
  for (const table of tables) {
39
39
  const column = table.columns[columnName];
40
- const writeByteLength = table.rows * column.typedArrayElementSizeInBytes;
40
+ const writeByteLength = table.rowCount * column.typedArrayElementSizeInBytes;
41
41
  const array = column.getTypedArray();
42
42
  device.queue.writeBuffer(gpuBuffer, offset, array.buffer, 0, writeByteLength);
43
43
  offset += writeByteLength;
@@ -1 +1 @@
1
- {"version":3,"file":"copy-column-to-gpu-buffer.js","sourceRoot":"","sources":["../../src/table/copy-column-to-gpu-buffer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;WAoBW;AAIX;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACjC,MAAoB,EACpB,UAAa,EACb,MAAiB,EACjB,SAAoB,EACX,EAAE;IACX,wBAAwB;IACxB,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,eAAe,IAAI,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,4BAA4B,CAAC;IAC3F,CAAC;IACD,wCAAwC;IACxC,IAAI,SAAS,CAAC,IAAI,GAAG,eAAe,EAAE,CAAC;QACnC,SAAS,CAAC,OAAO,EAAE,CAAC;QACpB,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;IACvF,CAAC;IACD,mEAAmE;IACnE,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,4BAA4B,CAAC;QACzE,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;QACrC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;QAC9E,MAAM,IAAI,eAAe,CAAC;IAC9B,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC,CAAA"}
1
+ {"version":3,"file":"copy-column-to-gpu-buffer.js","sourceRoot":"","sources":["../../src/table/copy-column-to-gpu-buffer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;WAoBW;AAIX;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACjC,MAAoB,EACpB,UAAa,EACb,MAAiB,EACjB,SAAoB,EACX,EAAE;IACX,wBAAwB;IACxB,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,eAAe,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,4BAA4B,CAAC;IAC/F,CAAC;IACD,wCAAwC;IACxC,IAAI,SAAS,CAAC,IAAI,GAAG,eAAe,EAAE,CAAC;QACnC,SAAS,CAAC,OAAO,EAAE,CAAC;QACpB,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;IACvF,CAAC;IACD,mEAAmE;IACnE,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,eAAe,GAAG,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,4BAA4B,CAAC;QAC7E,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;QACrC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;QAC9E,MAAM,IAAI,eAAe,CAAC;IAC9B,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC,CAAA"}
@@ -22,12 +22,14 @@ SOFTWARE.*/
22
22
  import { createTypedBuffer } from "../typed-buffer/index.js";
23
23
  export const createTable = (schemas) => {
24
24
  const columns = {};
25
+ const rowCapacity = 16;
25
26
  for (const name in schemas) {
26
- columns[name] = createTypedBuffer({ schema: schemas[name] });
27
+ columns[name] = createTypedBuffer(schemas[name], rowCapacity);
27
28
  }
28
29
  return {
29
30
  columns,
30
- rows: 0,
31
+ rowCount: 0,
32
+ rowCapacity,
31
33
  };
32
34
  };
33
35
  //# sourceMappingURL=create-table.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-table.js","sourceRoot":"","sources":["../../src/table/create-table.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;WAoBW;AACX,OAAO,EAAE,iBAAiB,EAAe,MAAM,0BAA0B,CAAC;AAI1E,MAAM,CAAC,MAAM,WAAW,GAAG,CAAmC,OAAU,EAAgD,EAAE;IACtH,MAAM,OAAO,GAAG,EAAuD,CAAC;IACxE,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,EAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO;QACH,OAAO;QACP,IAAI,EAAE,CAAC;KACV,CAAC;AACN,CAAC,CAAA"}
1
+ {"version":3,"file":"create-table.js","sourceRoot":"","sources":["../../src/table/create-table.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;WAoBW;AACX,OAAO,EAAE,iBAAiB,EAAe,MAAM,0BAA0B,CAAC;AAI1E,MAAM,CAAC,MAAM,WAAW,GAAG,CAAmC,OAAU,EAAgD,EAAE;IACtH,MAAM,OAAO,GAAG,EAAuD,CAAC;IACxE,MAAM,WAAW,GAAG,EAAE,CAAC;IACvB,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;IAClE,CAAC;IAED,OAAO;QACH,OAAO;QACP,QAAQ,EAAE,CAAC;QACX,WAAW;KACd,CAAC;AACN,CAAC,CAAA"}
@@ -35,7 +35,7 @@ describe("createTable", () => {
35
35
  it("should initialize with 0 rows", () => {
36
36
  const schemas = { a: { type: "number" } };
37
37
  const table = createTable(schemas);
38
- expect(table.rows).toBe(0);
38
+ expect(table.rowCount).toBe(0);
39
39
  });
40
40
  });
41
41
  //# sourceMappingURL=create-table.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-table.test.js","sourceRoot":"","sources":["../../src/table/create-table.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;WAoBW;AACX,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC7C,MAAM,OAAO,GAAG;YACZ,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACrB,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SACf,CAAC;QAEX,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QAEnC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACrC,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAW,CAAC;QACnD,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;AAEP,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"create-table.test.js","sourceRoot":"","sources":["../../src/table/create-table.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;WAoBW;AACX,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC7C,MAAM,OAAO,GAAG;YACZ,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACrB,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SACf,CAAC;QAEX,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QAEnC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACrC,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAW,CAAC;QACnD,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AAEP,CAAC,CAAC,CAAC"}