@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.
- package/README.md +1 -1
- package/dist/cache/functions/hashing/array-buffer-to-hex.d.ts +1 -0
- package/dist/cache/functions/hashing/array-buffer-to-hex.js +27 -0
- package/dist/cache/functions/hashing/array-buffer-to-hex.js.map +1 -0
- package/dist/cache/functions/hashing/arrayBufferToHex.d.ts +1 -0
- package/dist/cache/functions/hashing/arrayBufferToHex.js +27 -0
- package/dist/cache/functions/hashing/arrayBufferToHex.js.map +1 -0
- package/dist/cache/functions/hashing/blob-to-hash.d.ts +5 -0
- package/dist/cache/functions/hashing/blob-to-hash.js +34 -8
- package/dist/cache/functions/hashing/blob-to-hash.js.map +1 -1
- package/dist/cache/functions/hashing/buffer-to-hash.js +1 -5
- package/dist/cache/functions/hashing/buffer-to-hash.js.map +1 -1
- package/dist/cache/functions/hashing/hashing.test.js +322 -65
- package/dist/cache/functions/hashing/hashing.test.js.map +1 -1
- package/dist/ecs/archetype/archetype.d.ts +8 -3
- package/dist/ecs/archetype/create-archetype.js +2 -1
- package/dist/ecs/archetype/create-archetype.js.map +1 -1
- package/dist/ecs/archetype/create-archetype.test.js +4 -4
- package/dist/ecs/archetype/create-archetype.test.js.map +1 -1
- package/dist/ecs/archetype/delete-row.test.js +3 -3
- package/dist/ecs/archetype/delete-row.test.js.map +1 -1
- package/dist/ecs/database/create-database.js +17 -2
- package/dist/ecs/database/create-database.js.map +1 -1
- package/dist/ecs/database/create-database.test.js +234 -0
- package/dist/ecs/database/create-database.test.js.map +1 -1
- package/dist/ecs/database/database.d.ts +7 -4
- package/dist/ecs/database/observe-select-entities.d.ts +1 -1
- package/dist/ecs/database/observe-select-entities.js.map +1 -1
- package/dist/ecs/database/transactional-store/create-transactional-store.js +3 -0
- package/dist/ecs/database/transactional-store/create-transactional-store.js.map +1 -1
- package/dist/ecs/database/transactional-store/create-transactional-store.test.js +29 -2
- package/dist/ecs/database/transactional-store/create-transactional-store.test.js.map +1 -1
- package/dist/ecs/database/transactional-store/patch-entity-values.d.ts +2 -2
- package/dist/ecs/database/transactional-store/patch-entity-values.js.map +1 -1
- package/dist/ecs/entity-location-table/create-entity-location-table.d.ts +7 -0
- package/dist/ecs/entity-location-table/create-entity-location-table.js +14 -3
- package/dist/ecs/entity-location-table/create-entity-location-table.js.map +1 -1
- package/dist/ecs/store/core/core.d.ts +13 -5
- package/dist/ecs/store/core/create-core.js +8 -3
- package/dist/ecs/store/core/create-core.js.map +1 -1
- package/dist/ecs/store/core/create-core.test.js +118 -0
- package/dist/ecs/store/core/create-core.test.js.map +1 -1
- package/dist/ecs/store/core/select-entities.d.ts +1 -1
- package/dist/ecs/store/core/select-entities.js +2 -2
- package/dist/ecs/store/core/select-entities.js.map +1 -1
- package/dist/ecs/store/create-store.js.map +1 -1
- package/dist/ecs/store/create-store.test.js +21 -0
- package/dist/ecs/store/create-store.test.js.map +1 -1
- package/dist/ecs/store/store.d.ts +1 -1
- package/dist/equals.js +17 -11
- package/dist/equals.js.map +1 -1
- package/dist/equals.test.js +47 -0
- package/dist/equals.test.js.map +1 -1
- package/dist/functions/blit.d.ts +9 -0
- package/dist/functions/blit.js +42 -0
- package/dist/functions/blit.js.map +1 -0
- package/dist/functions/copy-view-bytes.d.ts +2 -0
- package/dist/functions/copy-view-bytes.js +29 -0
- package/dist/functions/copy-view-bytes.js.map +1 -0
- package/dist/functions/index.d.ts +3 -0
- package/dist/functions/index.js +3 -0
- package/dist/functions/index.js.map +1 -1
- package/dist/functions/serialization/codec.d.ts +24 -0
- package/dist/functions/serialization/codec.js +48 -0
- package/dist/functions/serialization/codec.js.map +1 -0
- package/dist/functions/serialization/deserialize.d.ts +4 -0
- package/dist/functions/serialization/deserialize.js +15 -0
- package/dist/functions/serialization/deserialize.js.map +1 -0
- package/dist/functions/serialization/index.d.ts +2 -0
- package/dist/functions/serialization/index.js +3 -0
- package/dist/functions/serialization/index.js.map +1 -0
- package/dist/functions/serialization/register-typed-array-codecs.d.ts +1 -0
- package/dist/functions/serialization/register-typed-array-codecs.js +13 -0
- package/dist/functions/serialization/register-typed-array-codecs.js.map +1 -0
- package/dist/functions/serialization/serialization.test.d.ts +1 -0
- package/dist/functions/serialization/serialization.test.js +79 -0
- package/dist/functions/serialization/serialization.test.js.map +1 -0
- package/dist/functions/serialization/serialize.d.ts +4 -0
- package/dist/functions/serialization/serialize.js +19 -0
- package/dist/functions/serialization/serialize.js.map +1 -0
- package/dist/observe/index.d.ts +1 -0
- package/dist/observe/index.js +1 -0
- package/dist/observe/index.js.map +1 -1
- package/dist/observe/observe.test.js +24 -0
- package/dist/observe/observe.test.js.map +1 -1
- package/dist/observe/to-async-generator.d.ts +9 -0
- package/dist/observe/to-async-generator.js +129 -0
- package/dist/observe/to-async-generator.js.map +1 -0
- package/dist/observe/to-async-generator.test.d.ts +1 -0
- package/dist/observe/to-async-generator.test.js +413 -0
- package/dist/observe/to-async-generator.test.js.map +1 -0
- package/dist/observe/with-map.d.ts +1 -1
- package/dist/observe/with-map.js +4 -1
- package/dist/observe/with-map.js.map +1 -1
- package/dist/schema/f32 copy.d.ts +6 -0
- package/dist/schema/f32 copy.js +6 -0
- package/dist/schema/f32 copy.js.map +1 -0
- package/dist/schema/f64.d.ts +6 -0
- package/dist/schema/f64.js +6 -0
- package/dist/schema/f64.js.map +1 -0
- package/dist/schema/schema.d.ts +5 -1
- package/dist/schema/time.d.ts +1 -1
- package/dist/schema/time.js +2 -2
- package/dist/table/add-row.js +4 -3
- package/dist/table/add-row.js.map +1 -1
- package/dist/table/copy-column-to-gpu-buffer.js +2 -2
- package/dist/table/copy-column-to-gpu-buffer.js.map +1 -1
- package/dist/table/create-table.js +4 -2
- package/dist/table/create-table.js.map +1 -1
- package/dist/table/create-table.test.js +1 -1
- package/dist/table/create-table.test.js.map +1 -1
- package/dist/table/delete-row.js +1 -1
- package/dist/table/delete-row.js.map +1 -1
- package/dist/table/ensure-capacity.d.ts +1 -1
- package/dist/table/ensure-capacity.js +10 -10
- package/dist/table/ensure-capacity.js.map +1 -1
- package/dist/table/select-rows.js +2 -2
- package/dist/table/select-rows.js.map +1 -1
- package/dist/table/table.d.ts +4 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/typed-buffer/create-array-buffer.d.ts +3 -3
- package/dist/typed-buffer/create-array-buffer.js +36 -32
- package/dist/typed-buffer/create-array-buffer.js.map +1 -1
- package/dist/typed-buffer/create-const-buffer.d.ts +3 -1
- package/dist/typed-buffer/create-const-buffer.js +30 -28
- package/dist/typed-buffer/create-const-buffer.js.map +1 -1
- package/dist/typed-buffer/create-const-buffer.test.js +18 -46
- package/dist/typed-buffer/create-const-buffer.test.js.map +1 -1
- package/dist/typed-buffer/create-number-buffer.d.ts +2 -6
- package/dist/typed-buffer/create-number-buffer.js +40 -33
- package/dist/typed-buffer/create-number-buffer.js.map +1 -1
- package/dist/typed-buffer/create-struct-buffer.d.ts +3 -7
- package/dist/typed-buffer/create-struct-buffer.js +58 -41
- package/dist/typed-buffer/create-struct-buffer.js.map +1 -1
- package/dist/typed-buffer/create-typed-buffer.d.ts +2 -5
- package/dist/typed-buffer/create-typed-buffer.js +16 -8
- package/dist/typed-buffer/create-typed-buffer.js.map +1 -1
- package/dist/typed-buffer/is-typed-buffer.d.ts +2 -0
- package/dist/typed-buffer/is-typed-buffer.js +5 -0
- package/dist/typed-buffer/is-typed-buffer.js.map +1 -0
- package/dist/typed-buffer/is-typed-buffer.test.d.ts +1 -0
- package/dist/typed-buffer/is-typed-buffer.test.js +26 -0
- package/dist/typed-buffer/is-typed-buffer.test.js.map +1 -0
- package/dist/typed-buffer/register-typed-buffer-codecs.d.ts +1 -0
- package/dist/typed-buffer/register-typed-buffer-codecs.js +80 -0
- package/dist/typed-buffer/register-typed-buffer-codecs.js.map +1 -0
- package/dist/typed-buffer/typed-buffer-equals.d.ts +2 -0
- package/dist/typed-buffer/typed-buffer-equals.js +20 -0
- package/dist/typed-buffer/typed-buffer-equals.js.map +1 -0
- package/dist/typed-buffer/typed-buffer-equals.test.d.ts +1 -0
- package/dist/typed-buffer/typed-buffer-equals.test.js +234 -0
- package/dist/typed-buffer/typed-buffer-equals.test.js.map +1 -0
- package/dist/typed-buffer/typed-buffer.d.ts +18 -8
- package/dist/typed-buffer/typed-buffer.js +6 -1
- package/dist/typed-buffer/typed-buffer.js.map +1 -1
- package/dist/typed-buffer/typed-buffer.test.js +30 -66
- package/dist/typed-buffer/typed-buffer.test.js.map +1 -1
- 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":"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"}
|
|
@@ -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>;
|
package/dist/observe/with-map.js
CHANGED
|
@@ -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,
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|
package/dist/schema/schema.d.ts
CHANGED
|
@@ -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;
|
package/dist/schema/time.d.ts
CHANGED
package/dist/schema/time.js
CHANGED
|
@@ -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 {
|
|
23
|
-
export const TimeSchema =
|
|
22
|
+
import { F64Schema } from "./f64.js";
|
|
23
|
+
export const TimeSchema = F64Schema;
|
|
24
24
|
//# sourceMappingURL=time.js.map
|
package/dist/table/add-row.js
CHANGED
|
@@ -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.
|
|
30
|
-
const rowIndex = table.
|
|
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.
|
|
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,
|
|
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.
|
|
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.
|
|
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,
|
|
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(
|
|
27
|
+
columns[name] = createTypedBuffer(schemas[name], rowCapacity);
|
|
27
28
|
}
|
|
28
29
|
return {
|
|
29
30
|
columns,
|
|
30
|
-
|
|
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,
|
|
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.
|
|
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,
|
|
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"}
|