@signalium/query 1.0.10 → 1.0.11

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 (71) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/cjs/EntityMap.js +45 -7
  3. package/dist/cjs/EntityMap.js.map +1 -1
  4. package/dist/cjs/QueryClient.js +44 -3
  5. package/dist/cjs/QueryClient.js.map +1 -1
  6. package/dist/cjs/QueryResult.js +122 -79
  7. package/dist/cjs/QueryResult.js.map +1 -1
  8. package/dist/cjs/QueryStore.js +0 -573
  9. package/dist/cjs/QueryStore.js.map +1 -1
  10. package/dist/cjs/errors.js +17 -0
  11. package/dist/cjs/errors.js.map +1 -1
  12. package/dist/cjs/proxy.js +54 -14
  13. package/dist/cjs/proxy.js.map +1 -1
  14. package/dist/cjs/query.js +2 -1
  15. package/dist/cjs/query.js.map +1 -1
  16. package/dist/cjs/stores/async.js +38 -3
  17. package/dist/cjs/stores/async.js.map +1 -1
  18. package/dist/cjs/stores/shared.js +5 -1
  19. package/dist/cjs/stores/shared.js.map +1 -1
  20. package/dist/cjs/stores/sync.js +46 -10
  21. package/dist/cjs/stores/sync.js.map +1 -1
  22. package/dist/cjs/typeDefs.js +128 -5
  23. package/dist/cjs/typeDefs.js.map +1 -1
  24. package/dist/esm/EntityMap.d.ts +9 -3
  25. package/dist/esm/EntityMap.d.ts.map +1 -1
  26. package/dist/esm/EntityMap.js +46 -8
  27. package/dist/esm/EntityMap.js.map +1 -1
  28. package/dist/esm/QueryClient.d.ts +19 -1
  29. package/dist/esm/QueryClient.d.ts.map +1 -1
  30. package/dist/esm/QueryClient.js +43 -3
  31. package/dist/esm/QueryClient.js.map +1 -1
  32. package/dist/esm/QueryResult.d.ts +9 -3
  33. package/dist/esm/QueryResult.d.ts.map +1 -1
  34. package/dist/esm/QueryResult.js +122 -79
  35. package/dist/esm/QueryResult.js.map +1 -1
  36. package/dist/esm/QueryStore.d.ts +0 -104
  37. package/dist/esm/QueryStore.d.ts.map +1 -1
  38. package/dist/esm/QueryStore.js +1 -562
  39. package/dist/esm/QueryStore.js.map +1 -1
  40. package/dist/esm/errors.d.ts.map +1 -1
  41. package/dist/esm/errors.js +18 -1
  42. package/dist/esm/errors.js.map +1 -1
  43. package/dist/esm/proxy.d.ts +1 -1
  44. package/dist/esm/proxy.d.ts.map +1 -1
  45. package/dist/esm/proxy.js +54 -14
  46. package/dist/esm/proxy.js.map +1 -1
  47. package/dist/esm/query.d.ts +2 -0
  48. package/dist/esm/query.d.ts.map +1 -1
  49. package/dist/esm/query.js +2 -1
  50. package/dist/esm/query.js.map +1 -1
  51. package/dist/esm/stores/async.d.ts +3 -1
  52. package/dist/esm/stores/async.d.ts.map +1 -1
  53. package/dist/esm/stores/async.js +39 -4
  54. package/dist/esm/stores/async.js.map +1 -1
  55. package/dist/esm/stores/shared.d.ts +2 -0
  56. package/dist/esm/stores/shared.d.ts.map +1 -1
  57. package/dist/esm/stores/shared.js +2 -0
  58. package/dist/esm/stores/shared.js.map +1 -1
  59. package/dist/esm/stores/sync.d.ts +4 -2
  60. package/dist/esm/stores/sync.d.ts.map +1 -1
  61. package/dist/esm/stores/sync.js +40 -5
  62. package/dist/esm/stores/sync.js.map +1 -1
  63. package/dist/esm/type-utils.d.ts +4 -0
  64. package/dist/esm/type-utils.d.ts.map +1 -1
  65. package/dist/esm/typeDefs.d.ts +53 -5
  66. package/dist/esm/typeDefs.d.ts.map +1 -1
  67. package/dist/esm/typeDefs.js +126 -5
  68. package/dist/esm/typeDefs.js.map +1 -1
  69. package/dist/esm/types.d.ts +36 -10
  70. package/dist/esm/types.d.ts.map +1 -1
  71. package/package.json +3 -3
@@ -7,577 +7,4 @@
7
7
  * asynchronous (writer-backed) implementations.
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.AsyncQueryStore = exports.SyncQueryStore = exports.queueKeyFor = exports.optimisticInsertRefsKeyFor = exports.streamOrphanRefsKeyFor = exports.updatedAtKeyFor = exports.refIdsKeyFor = exports.refCountKeyFor = exports.valueKeyFor = exports.MemoryPersistentStore = void 0;
11
- const DEFAULT_MAX_COUNT = 50;
12
- const DEFAULT_GC_TIME = 1000 * 60 * 60 * 24; // 24 hours
13
- class MemoryPersistentStore {
14
- kv = Object.create(null);
15
- has(key) {
16
- return key in this.kv;
17
- }
18
- getString(key) {
19
- return this.kv[key];
20
- }
21
- setString(key, value) {
22
- this.kv[key] = value;
23
- }
24
- getNumber(key) {
25
- return this.kv[key];
26
- }
27
- setNumber(key, value) {
28
- this.kv[key] = value;
29
- }
30
- getBuffer(key) {
31
- return this.kv[key];
32
- }
33
- setBuffer(key, value) {
34
- this.kv[key] = value;
35
- }
36
- delete(key) {
37
- delete this.kv[key];
38
- }
39
- }
40
- exports.MemoryPersistentStore = MemoryPersistentStore;
41
- // Query Instance keys
42
- const valueKeyFor = (id) => `sq:doc:value:${id}`;
43
- exports.valueKeyFor = valueKeyFor;
44
- const refCountKeyFor = (id) => `sq:doc:refCount:${id}`;
45
- exports.refCountKeyFor = refCountKeyFor;
46
- const refIdsKeyFor = (id) => `sq:doc:refIds:${id}`;
47
- exports.refIdsKeyFor = refIdsKeyFor;
48
- const updatedAtKeyFor = (id) => `sq:doc:updatedAt:${id}`;
49
- exports.updatedAtKeyFor = updatedAtKeyFor;
50
- const streamOrphanRefsKeyFor = (id) => `sq:doc:streamOrphanRefs:${id}`;
51
- exports.streamOrphanRefsKeyFor = streamOrphanRefsKeyFor;
52
- const optimisticInsertRefsKeyFor = (id) => `sq:doc:optimisticInsertRefs:${id}`;
53
- exports.optimisticInsertRefsKeyFor = optimisticInsertRefsKeyFor;
54
- // Query Type keys
55
- const queueKeyFor = (queryDefId) => `sq:doc:queue:${queryDefId}`;
56
- exports.queueKeyFor = queueKeyFor;
57
- class SyncQueryStore {
58
- kv;
59
- queues = new Map();
60
- constructor(kv) {
61
- this.kv = kv;
62
- }
63
- loadQuery(queryDef, queryKey, entityMap) {
64
- const updatedAt = this.kv.getNumber((0, exports.updatedAtKeyFor)(queryKey));
65
- if (updatedAt === undefined || updatedAt < Date.now() - (queryDef.cache?.gcTime ?? DEFAULT_GC_TIME)) {
66
- return;
67
- }
68
- const valueStr = this.kv.getString((0, exports.valueKeyFor)(queryKey));
69
- if (valueStr === undefined) {
70
- return;
71
- }
72
- const entityIds = this.kv.getBuffer((0, exports.refIdsKeyFor)(queryKey));
73
- if (entityIds !== undefined) {
74
- this.preloadEntities(entityIds, entityMap);
75
- }
76
- // Load extra data (stream orphans and optimistic inserts)
77
- const streamOrphanRefs = this.kv.getBuffer((0, exports.streamOrphanRefsKeyFor)(queryKey));
78
- const optimisticInsertRefs = this.kv.getBuffer((0, exports.optimisticInsertRefsKeyFor)(queryKey));
79
- // Preload entities for extra data
80
- if (streamOrphanRefs !== undefined) {
81
- this.preloadEntities(streamOrphanRefs, entityMap);
82
- }
83
- if (optimisticInsertRefs !== undefined) {
84
- this.preloadEntities(optimisticInsertRefs, entityMap);
85
- }
86
- let extra;
87
- if (streamOrphanRefs !== undefined || optimisticInsertRefs !== undefined) {
88
- extra = {};
89
- if (streamOrphanRefs !== undefined) {
90
- extra.streamOrphanRefs = Array.from(streamOrphanRefs);
91
- }
92
- if (optimisticInsertRefs !== undefined) {
93
- extra.optimisticInsertRefs = Array.from(optimisticInsertRefs);
94
- }
95
- }
96
- this.activateQuery(queryDef, queryKey);
97
- return {
98
- value: JSON.parse(valueStr),
99
- refIds: entityIds === undefined ? undefined : new Set(entityIds ?? []),
100
- updatedAt,
101
- extra,
102
- };
103
- }
104
- preloadEntities(entityIds, entityMap) {
105
- for (const entityId of entityIds) {
106
- const entityValue = this.kv.getString((0, exports.valueKeyFor)(entityId));
107
- if (entityValue === undefined) {
108
- continue;
109
- }
110
- const entity = JSON.parse(entityValue);
111
- entityMap.setPreloadedEntity(entityId, entity);
112
- const childIds = this.kv.getBuffer((0, exports.refIdsKeyFor)(entityId));
113
- if (childIds === undefined) {
114
- continue;
115
- }
116
- this.preloadEntities(childIds, entityMap);
117
- }
118
- }
119
- saveQuery(queryDef, queryKey, value, updatedAt, refIds, extra) {
120
- this.setValue(queryKey, value, refIds);
121
- this.kv.setNumber((0, exports.updatedAtKeyFor)(queryKey), updatedAt);
122
- // Save extra data
123
- if (extra?.streamOrphanRefs !== undefined && extra.streamOrphanRefs.length > 0) {
124
- this.kv.setBuffer((0, exports.streamOrphanRefsKeyFor)(queryKey), new Uint32Array(extra.streamOrphanRefs));
125
- }
126
- else {
127
- this.kv.delete((0, exports.streamOrphanRefsKeyFor)(queryKey));
128
- }
129
- if (extra?.optimisticInsertRefs !== undefined && extra.optimisticInsertRefs.length > 0) {
130
- this.kv.setBuffer((0, exports.optimisticInsertRefsKeyFor)(queryKey), new Uint32Array(extra.optimisticInsertRefs));
131
- }
132
- else {
133
- this.kv.delete((0, exports.optimisticInsertRefsKeyFor)(queryKey));
134
- }
135
- this.activateQuery(queryDef, queryKey);
136
- }
137
- saveEntity(entityKey, value, refIds) {
138
- this.setValue(entityKey, value, refIds);
139
- }
140
- activateQuery(queryDef, queryKey) {
141
- if (!this.kv.has((0, exports.valueKeyFor)(queryKey))) {
142
- // Query not in store, nothing to do. This can happen if the query has
143
- // been evicted from the cache, but is still active in memory.
144
- return;
145
- }
146
- let queue = this.queues.get(queryDef.id);
147
- if (queue === undefined) {
148
- const maxCount = queryDef.cache?.maxCount ?? DEFAULT_MAX_COUNT;
149
- queue = this.kv.getBuffer((0, exports.queueKeyFor)(queryDef.id));
150
- if (queue === undefined) {
151
- queue = new Uint32Array(maxCount);
152
- this.kv.setBuffer((0, exports.queueKeyFor)(queryDef.id), queue);
153
- }
154
- else if (queue.length !== maxCount) {
155
- queue = new Uint32Array(queue.buffer, 0, maxCount);
156
- this.kv.setBuffer((0, exports.queueKeyFor)(queryDef.id), queue);
157
- }
158
- this.queues.set(queryDef.id, queue);
159
- }
160
- const indexOfKey = queue.indexOf(queryKey);
161
- // Item already in queue, move to front
162
- if (indexOfKey >= 0) {
163
- if (indexOfKey === 0) {
164
- // Already at front, nothing to do
165
- return;
166
- }
167
- // Shift items right to make space at front
168
- queue.copyWithin(1, 0, indexOfKey);
169
- queue[0] = queryKey;
170
- return;
171
- }
172
- // Item not in queue, add to front and evict tail
173
- const evicted = queue[queue.length - 1];
174
- queue.copyWithin(1, 0, queue.length - 1);
175
- queue[0] = queryKey;
176
- if (evicted !== 0) {
177
- this.deleteValue(evicted);
178
- this.kv.delete((0, exports.updatedAtKeyFor)(evicted));
179
- }
180
- }
181
- setValue(id, value, refIds) {
182
- const kv = this.kv;
183
- kv.setString((0, exports.valueKeyFor)(id), JSON.stringify(value));
184
- const refIdsKey = (0, exports.refIdsKeyFor)(id);
185
- const prevRefIds = kv.getBuffer(refIdsKey);
186
- if (refIds === undefined || refIds.size === 0) {
187
- kv.delete(refIdsKey);
188
- // Decrement all previous refs
189
- if (prevRefIds !== undefined) {
190
- for (let i = 0; i < prevRefIds.length; i++) {
191
- const refId = prevRefIds[i];
192
- this.decrementRefCount(refId);
193
- }
194
- }
195
- }
196
- else {
197
- // Convert the set to a Uint32Array and capture all the refIds before we
198
- // delete previous ones from the set
199
- const newRefIds = new Uint32Array(refIds);
200
- if (prevRefIds !== undefined) {
201
- // Process new refs: increment if not in old
202
- for (let i = 0; i < prevRefIds.length; i++) {
203
- const refId = prevRefIds[i];
204
- if (refIds.has(refId)) {
205
- refIds.delete(refId);
206
- }
207
- else {
208
- this.decrementRefCount(refId);
209
- }
210
- }
211
- }
212
- // No previous refs, increment all unique new refs
213
- for (const refId of refIds) {
214
- this.incrementRefCount(refId);
215
- }
216
- kv.setBuffer(refIdsKey, newRefIds);
217
- }
218
- }
219
- deleteValue(id) {
220
- const kv = this.kv;
221
- kv.delete((0, exports.valueKeyFor)(id));
222
- kv.delete((0, exports.refCountKeyFor)(id));
223
- const refIds = kv.getBuffer((0, exports.refIdsKeyFor)(id));
224
- kv.delete((0, exports.refIdsKeyFor)(id)); // Clean up the refIds key
225
- if (refIds === undefined) {
226
- return;
227
- }
228
- // Decrement ref counts for all referenced entities
229
- for (const refId of refIds) {
230
- if (refId !== 0) {
231
- this.decrementRefCount(refId);
232
- }
233
- }
234
- }
235
- incrementRefCount(refId) {
236
- const refCountKey = (0, exports.refCountKeyFor)(refId);
237
- const currentCount = this.kv.getNumber(refCountKey) ?? 0;
238
- const newCount = currentCount + 1;
239
- this.kv.setNumber(refCountKey, newCount);
240
- }
241
- decrementRefCount(refId) {
242
- const refCountKey = (0, exports.refCountKeyFor)(refId);
243
- const currentCount = this.kv.getNumber(refCountKey);
244
- if (currentCount === undefined) {
245
- // Already deleted or never existed
246
- return;
247
- }
248
- const newCount = currentCount - 1;
249
- if (newCount === 0) {
250
- // Entity exists, cascade delete it
251
- this.deleteValue(refId);
252
- }
253
- else {
254
- this.kv.setNumber(refCountKey, newCount);
255
- }
256
- }
257
- }
258
- exports.SyncQueryStore = SyncQueryStore;
259
- // -----------------------------------------------------------------------------
260
- // Async QueryStore Implementation
261
- // -----------------------------------------------------------------------------
262
- class AsyncQueryStore {
263
- isWriter;
264
- delegate;
265
- sendMessage;
266
- messageQueue = [];
267
- queues = new Map();
268
- queueProcessorPromise;
269
- resolveQueueWait;
270
- constructor(config) {
271
- this.isWriter = config.isWriter;
272
- this.delegate = config.delegate;
273
- // Connect and get sendMessage function
274
- const { sendMessage } = config.connect(this.handleMessage.bind(this));
275
- this.sendMessage = sendMessage;
276
- // Start queue processor if this is a writer
277
- if (this.isWriter) {
278
- if (!this.delegate) {
279
- throw new Error('Writer must have a delegate');
280
- }
281
- this.startQueueProcessor();
282
- }
283
- }
284
- handleMessage(msg) {
285
- if (this.isWriter) {
286
- // Enqueue the message for serial processing
287
- this.enqueueMessage(msg);
288
- }
289
- // Readers don't handle incoming messages
290
- }
291
- enqueueMessage(msg) {
292
- this.messageQueue.push(msg);
293
- // Wake up the queue processor if it's waiting
294
- if (this.resolveQueueWait) {
295
- this.resolveQueueWait();
296
- this.resolveQueueWait = undefined;
297
- }
298
- }
299
- startQueueProcessor() {
300
- this.queueProcessorPromise = this.processQueue();
301
- }
302
- async processQueue() {
303
- while (true) {
304
- // Wait for messages if queue is empty
305
- while (this.messageQueue.length === 0) {
306
- await new Promise(resolve => {
307
- this.resolveQueueWait = resolve;
308
- });
309
- }
310
- // Process one message at a time
311
- const msg = this.messageQueue.shift();
312
- try {
313
- await this.processMessage(msg);
314
- }
315
- catch (error) {
316
- console.error('Error processing message:', error);
317
- }
318
- }
319
- }
320
- async processMessage(msg) {
321
- switch (msg.type) {
322
- case 'saveQuery':
323
- await this.writerSaveQuery(msg.queryDefId, msg.queryKey, msg.value, msg.updatedAt, msg.refIds, msg.extra);
324
- break;
325
- case 'saveEntity':
326
- await this.writerSaveEntity(msg.entityKey, msg.value, msg.refIds);
327
- break;
328
- case 'activateQuery':
329
- await this.writerActivateQuery(msg.queryDefId, msg.queryKey);
330
- break;
331
- }
332
- }
333
- async loadQuery(queryDef, queryKey, entityMap) {
334
- if (!this.delegate) {
335
- return undefined;
336
- }
337
- const updatedAt = await this.delegate.getNumber((0, exports.updatedAtKeyFor)(queryKey));
338
- if (updatedAt === undefined || updatedAt < Date.now() - (queryDef.cache?.gcTime ?? DEFAULT_GC_TIME)) {
339
- return undefined;
340
- }
341
- const valueStr = await this.delegate.getString((0, exports.valueKeyFor)(queryKey));
342
- if (valueStr === undefined) {
343
- return undefined;
344
- }
345
- const entityIds = await this.delegate.getBuffer((0, exports.refIdsKeyFor)(queryKey));
346
- if (entityIds !== undefined) {
347
- await this.preloadEntities(entityIds, entityMap);
348
- }
349
- // Load extra data (stream orphans and optimistic inserts)
350
- const streamOrphanRefs = await this.delegate.getBuffer((0, exports.streamOrphanRefsKeyFor)(queryKey));
351
- const optimisticInsertRefs = await this.delegate.getBuffer((0, exports.optimisticInsertRefsKeyFor)(queryKey));
352
- // Preload entities for extra data
353
- if (streamOrphanRefs !== undefined) {
354
- await this.preloadEntities(streamOrphanRefs, entityMap);
355
- }
356
- if (optimisticInsertRefs !== undefined) {
357
- await this.preloadEntities(optimisticInsertRefs, entityMap);
358
- }
359
- let extra;
360
- if (streamOrphanRefs !== undefined || optimisticInsertRefs !== undefined) {
361
- extra = {};
362
- if (streamOrphanRefs !== undefined) {
363
- extra.streamOrphanRefs = Array.from(streamOrphanRefs);
364
- }
365
- if (optimisticInsertRefs !== undefined) {
366
- extra.optimisticInsertRefs = Array.from(optimisticInsertRefs);
367
- }
368
- }
369
- this.activateQuery(queryDef, queryKey);
370
- return {
371
- value: JSON.parse(valueStr),
372
- refIds: entityIds === undefined ? undefined : new Set(entityIds ?? []),
373
- updatedAt,
374
- extra,
375
- };
376
- }
377
- async preloadEntities(entityIds, entityMap) {
378
- if (!this.delegate) {
379
- return;
380
- }
381
- for (const entityId of entityIds) {
382
- const entityValue = await this.delegate.getString((0, exports.valueKeyFor)(entityId));
383
- if (entityValue === undefined) {
384
- continue;
385
- }
386
- const entity = JSON.parse(entityValue);
387
- entityMap.setPreloadedEntity(entityId, entity);
388
- const childIds = await this.delegate.getBuffer((0, exports.refIdsKeyFor)(entityId));
389
- if (childIds === undefined) {
390
- continue;
391
- }
392
- await this.preloadEntities(childIds, entityMap);
393
- }
394
- }
395
- saveQuery(queryDef, queryKey, value, updatedAt, refIds, extra) {
396
- const message = {
397
- type: 'saveQuery',
398
- queryDefId: queryDef.id,
399
- queryKey,
400
- value,
401
- updatedAt,
402
- refIds: refIds ? Array.from(refIds) : undefined,
403
- extra,
404
- };
405
- if (this.isWriter) {
406
- this.enqueueMessage(message);
407
- }
408
- else {
409
- this.sendMessage(message);
410
- }
411
- }
412
- saveEntity(entityKey, value, refIds) {
413
- const message = {
414
- type: 'saveEntity',
415
- entityKey,
416
- value,
417
- refIds: refIds ? Array.from(refIds) : undefined,
418
- };
419
- if (this.isWriter) {
420
- this.enqueueMessage(message);
421
- }
422
- else {
423
- this.sendMessage(message);
424
- }
425
- }
426
- activateQuery(queryDef, queryKey) {
427
- const message = {
428
- type: 'activateQuery',
429
- queryDefId: queryDef.id,
430
- queryKey,
431
- };
432
- if (this.isWriter) {
433
- this.enqueueMessage(message);
434
- }
435
- else {
436
- this.sendMessage(message);
437
- }
438
- }
439
- // Writer-specific methods below
440
- async writerSaveQuery(queryDefId, queryKey, value, updatedAt, refIds, extra) {
441
- await this.setValue(queryKey, value, refIds ? new Set(refIds) : undefined);
442
- await this.delegate.setNumber((0, exports.updatedAtKeyFor)(queryKey), updatedAt);
443
- // Save extra data
444
- if (extra?.streamOrphanRefs !== undefined && extra.streamOrphanRefs.length > 0) {
445
- await this.delegate.setBuffer((0, exports.streamOrphanRefsKeyFor)(queryKey), new Uint32Array(extra.streamOrphanRefs));
446
- }
447
- else {
448
- await this.delegate.delete((0, exports.streamOrphanRefsKeyFor)(queryKey));
449
- }
450
- if (extra?.optimisticInsertRefs !== undefined && extra.optimisticInsertRefs.length > 0) {
451
- await this.delegate.setBuffer((0, exports.optimisticInsertRefsKeyFor)(queryKey), new Uint32Array(extra.optimisticInsertRefs));
452
- }
453
- else {
454
- await this.delegate.delete((0, exports.optimisticInsertRefsKeyFor)(queryKey));
455
- }
456
- await this.writerActivateQuery(queryDefId, queryKey);
457
- }
458
- async writerSaveEntity(entityKey, value, refIds) {
459
- await this.setValue(entityKey, value, refIds ? new Set(refIds) : undefined);
460
- }
461
- async writerActivateQuery(queryDefId, queryKey) {
462
- if (!(await this.delegate.has((0, exports.valueKeyFor)(queryKey)))) {
463
- // Query not in store, nothing to do
464
- return;
465
- }
466
- let queue = this.queues.get(queryDefId);
467
- if (queue === undefined) {
468
- // For now, use default max count. In a real implementation,
469
- // we'd need to pass queryDef or maxCount through the message
470
- const maxCount = DEFAULT_MAX_COUNT;
471
- queue = await this.delegate.getBuffer((0, exports.queueKeyFor)(queryDefId));
472
- if (queue === undefined) {
473
- queue = new Uint32Array(maxCount);
474
- await this.delegate.setBuffer((0, exports.queueKeyFor)(queryDefId), queue);
475
- }
476
- else if (queue.length !== maxCount) {
477
- queue = new Uint32Array(queue.buffer, 0, maxCount);
478
- await this.delegate.setBuffer((0, exports.queueKeyFor)(queryDefId), queue);
479
- }
480
- this.queues.set(queryDefId, queue);
481
- }
482
- const indexOfKey = queue.indexOf(queryKey);
483
- // Item already in queue, move to front
484
- if (indexOfKey >= 0) {
485
- if (indexOfKey === 0) {
486
- // Already at front, nothing to do
487
- return;
488
- }
489
- // Shift items right to make space at front
490
- queue.copyWithin(1, 0, indexOfKey);
491
- queue[0] = queryKey;
492
- return;
493
- }
494
- // Item not in queue, add to front and evict tail
495
- const evicted = queue[queue.length - 1];
496
- queue.copyWithin(1, 0, queue.length - 1);
497
- queue[0] = queryKey;
498
- if (evicted !== 0) {
499
- await this.deleteValue(evicted);
500
- await this.delegate.delete((0, exports.updatedAtKeyFor)(evicted));
501
- }
502
- }
503
- async setValue(id, value, refIds) {
504
- const delegate = this.delegate;
505
- await delegate.setString((0, exports.valueKeyFor)(id), JSON.stringify(value));
506
- const refIdsKey = (0, exports.refIdsKeyFor)(id);
507
- const prevRefIds = await delegate.getBuffer(refIdsKey);
508
- if (refIds === undefined || refIds.size === 0) {
509
- await delegate.delete(refIdsKey);
510
- // Decrement all previous refs
511
- if (prevRefIds !== undefined) {
512
- for (let i = 0; i < prevRefIds.length; i++) {
513
- const refId = prevRefIds[i];
514
- await this.decrementRefCount(refId);
515
- }
516
- }
517
- }
518
- else {
519
- // Convert the set to a Uint32Array and capture all the refIds before we
520
- // delete previous ones from the set
521
- const newRefIds = new Uint32Array(refIds);
522
- if (prevRefIds !== undefined) {
523
- // Process new refs: increment if not in old
524
- for (let i = 0; i < prevRefIds.length; i++) {
525
- const refId = prevRefIds[i];
526
- if (refIds.has(refId)) {
527
- refIds.delete(refId);
528
- }
529
- else {
530
- await this.decrementRefCount(refId);
531
- }
532
- }
533
- }
534
- // No previous refs, increment all unique new refs
535
- for (const refId of refIds) {
536
- await this.incrementRefCount(refId);
537
- }
538
- await delegate.setBuffer(refIdsKey, newRefIds);
539
- }
540
- }
541
- async deleteValue(id) {
542
- const delegate = this.delegate;
543
- await delegate.delete((0, exports.valueKeyFor)(id));
544
- await delegate.delete((0, exports.refCountKeyFor)(id));
545
- const refIds = await delegate.getBuffer((0, exports.refIdsKeyFor)(id));
546
- await delegate.delete((0, exports.refIdsKeyFor)(id)); // Clean up the refIds key
547
- if (refIds === undefined) {
548
- return;
549
- }
550
- // Decrement ref counts for all referenced entities
551
- for (const refId of refIds) {
552
- if (refId !== 0) {
553
- await this.decrementRefCount(refId);
554
- }
555
- }
556
- }
557
- async incrementRefCount(refId) {
558
- const delegate = this.delegate;
559
- const refCountKey = (0, exports.refCountKeyFor)(refId);
560
- const currentCount = (await delegate.getNumber(refCountKey)) ?? 0;
561
- const newCount = currentCount + 1;
562
- await delegate.setNumber(refCountKey, newCount);
563
- }
564
- async decrementRefCount(refId) {
565
- const delegate = this.delegate;
566
- const refCountKey = (0, exports.refCountKeyFor)(refId);
567
- const currentCount = await delegate.getNumber(refCountKey);
568
- if (currentCount === undefined) {
569
- // Already deleted or never existed
570
- return;
571
- }
572
- const newCount = currentCount - 1;
573
- if (newCount === 0) {
574
- // Entity exists, cascade delete it
575
- await this.deleteValue(refId);
576
- }
577
- else {
578
- await delegate.setNumber(refCountKey, newCount);
579
- }
580
- }
581
- }
582
- exports.AsyncQueryStore = AsyncQueryStore;
583
10
  //# sourceMappingURL=QueryStore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"QueryStore.js","sourceRoot":"","sources":["../../src/QueryStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QueryStore.js","sourceRoot":"","sources":["../../src/QueryStore.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG"}
@@ -24,6 +24,15 @@ function typeToString(type) {
24
24
  }
25
25
  // Handle primitive masks
26
26
  if (typeof type === 'number') {
27
+ // Check for formatted types first
28
+ const hasFormat = (type & (8192 /* Mask.HAS_STRING_FORMAT */ | 4096 /* Mask.HAS_NUMBER_FORMAT */)) !== 0;
29
+ if (hasFormat) {
30
+ const formatName = (0, typeDefs_js_1.getFormatName)(type);
31
+ if (formatName) {
32
+ // Show format name instead of base type
33
+ return `"${formatName}"`;
34
+ }
35
+ }
27
36
  const types = [];
28
37
  if (type & 1 /* Mask.UNDEFINED */)
29
38
  types.push('undefined');
@@ -73,6 +82,14 @@ function typeToString(type) {
73
82
  }
74
83
  }
75
84
  mask = unionType.mask;
85
+ // Check for formatted types in union mask
86
+ const hasFormat = (mask & (8192 /* Mask.HAS_STRING_FORMAT */ | 4096 /* Mask.HAS_NUMBER_FORMAT */)) !== 0;
87
+ if (hasFormat) {
88
+ const formatName = (0, typeDefs_js_1.getFormatName)(mask);
89
+ if (formatName) {
90
+ parts.push(`"${formatName}"`);
91
+ }
92
+ }
76
93
  // Add primitive types from the mask
77
94
  if (mask & 1 /* Mask.UNDEFINED */)
78
95
  parts.push('undefined');
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}