@tanstack/db 0.3.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{change-events.cjs → collection/change-events.cjs} +13 -42
- package/dist/cjs/collection/change-events.cjs.map +1 -0
- package/dist/{esm/change-events.d.ts → cjs/collection/change-events.d.cts} +6 -6
- package/dist/cjs/collection/changes.cjs +108 -0
- package/dist/cjs/collection/changes.cjs.map +1 -0
- package/dist/cjs/collection/changes.d.cts +53 -0
- package/dist/cjs/{collection-events.cjs → collection/events.cjs} +7 -5
- package/dist/cjs/collection/events.cjs.map +1 -0
- package/dist/cjs/{collection-events.d.cts → collection/events.d.cts} +7 -4
- package/dist/cjs/collection/index.cjs +417 -0
- package/dist/cjs/collection/index.cjs.map +1 -0
- package/dist/{esm/collection.d.ts → cjs/collection/index.d.cts} +46 -184
- package/dist/cjs/collection/indexes.cjs +124 -0
- package/dist/cjs/collection/indexes.cjs.map +1 -0
- package/dist/cjs/collection/indexes.d.cts +47 -0
- package/dist/cjs/collection/lifecycle.cjs +150 -0
- package/dist/cjs/collection/lifecycle.cjs.map +1 -0
- package/dist/cjs/collection/lifecycle.d.cts +70 -0
- package/dist/cjs/collection/mutations.cjs +315 -0
- package/dist/cjs/collection/mutations.cjs.map +1 -0
- package/dist/cjs/collection/mutations.d.cts +33 -0
- package/dist/cjs/collection/state.cjs +597 -0
- package/dist/cjs/collection/state.cjs.map +1 -0
- package/dist/cjs/collection/state.d.cts +122 -0
- package/dist/cjs/collection/subscription.cjs +160 -0
- package/dist/cjs/collection/subscription.cjs.map +1 -0
- package/dist/cjs/collection/subscription.d.cts +57 -0
- package/dist/cjs/collection/sync.cjs +154 -0
- package/dist/cjs/collection/sync.cjs.map +1 -0
- package/dist/cjs/collection/sync.d.cts +34 -0
- package/dist/cjs/index.cjs +8 -8
- package/dist/cjs/index.d.cts +2 -2
- package/dist/cjs/indexes/auto-index.cjs.map +1 -1
- package/dist/cjs/indexes/auto-index.d.cts +1 -1
- package/dist/cjs/indexes/base-index.cjs.map +1 -1
- package/dist/cjs/indexes/base-index.d.cts +2 -2
- package/dist/cjs/indexes/btree-index.cjs +2 -2
- package/dist/cjs/indexes/btree-index.cjs.map +1 -1
- package/dist/cjs/indexes/btree-index.d.cts +1 -1
- package/dist/cjs/query/builder/index.cjs +2 -2
- package/dist/cjs/query/builder/index.cjs.map +1 -1
- package/dist/cjs/query/builder/types.d.cts +1 -1
- package/dist/cjs/query/compiler/index.cjs +5 -2
- package/dist/cjs/query/compiler/index.cjs.map +1 -1
- package/dist/cjs/query/compiler/index.d.cts +3 -2
- package/dist/cjs/query/compiler/joins.cjs +22 -24
- package/dist/cjs/query/compiler/joins.cjs.map +1 -1
- package/dist/cjs/query/compiler/joins.d.cts +3 -2
- package/dist/cjs/query/compiler/order-by.cjs.map +1 -1
- package/dist/cjs/query/compiler/order-by.d.cts +1 -1
- package/dist/cjs/query/ir.cjs.map +1 -1
- package/dist/cjs/query/ir.d.cts +1 -1
- package/dist/cjs/query/live/collection-config-builder.cjs +29 -12
- package/dist/cjs/query/live/collection-config-builder.cjs.map +1 -1
- package/dist/cjs/query/live/collection-config-builder.d.cts +3 -0
- package/dist/cjs/query/live/collection-subscriber.cjs +43 -104
- package/dist/cjs/query/live/collection-subscriber.cjs.map +1 -1
- package/dist/cjs/query/live/collection-subscriber.d.cts +4 -7
- package/dist/cjs/query/live-query-collection.cjs +2 -2
- package/dist/cjs/query/live-query-collection.cjs.map +1 -1
- package/dist/cjs/query/live-query-collection.d.cts +1 -1
- package/dist/cjs/transactions.cjs +3 -3
- package/dist/cjs/transactions.cjs.map +1 -1
- package/dist/cjs/types.d.cts +12 -10
- package/dist/{cjs/change-events.d.cts → esm/collection/change-events.d.ts} +6 -6
- package/dist/esm/{change-events.js → collection/change-events.js} +13 -42
- package/dist/esm/collection/change-events.js.map +1 -0
- package/dist/esm/collection/changes.d.ts +53 -0
- package/dist/esm/collection/changes.js +108 -0
- package/dist/esm/collection/changes.js.map +1 -0
- package/dist/esm/{collection-events.d.ts → collection/events.d.ts} +7 -4
- package/dist/esm/{collection-events.js → collection/events.js} +7 -5
- package/dist/esm/collection/events.js.map +1 -0
- package/dist/{cjs/collection.d.cts → esm/collection/index.d.ts} +46 -184
- package/dist/esm/collection/index.js +417 -0
- package/dist/esm/collection/index.js.map +1 -0
- package/dist/esm/collection/indexes.d.ts +47 -0
- package/dist/esm/collection/indexes.js +124 -0
- package/dist/esm/collection/indexes.js.map +1 -0
- package/dist/esm/collection/lifecycle.d.ts +70 -0
- package/dist/esm/collection/lifecycle.js +150 -0
- package/dist/esm/collection/lifecycle.js.map +1 -0
- package/dist/esm/collection/mutations.d.ts +33 -0
- package/dist/esm/collection/mutations.js +315 -0
- package/dist/esm/collection/mutations.js.map +1 -0
- package/dist/esm/collection/state.d.ts +122 -0
- package/dist/esm/collection/state.js +597 -0
- package/dist/esm/collection/state.js.map +1 -0
- package/dist/esm/collection/subscription.d.ts +57 -0
- package/dist/esm/collection/subscription.js +160 -0
- package/dist/esm/collection/subscription.js.map +1 -0
- package/dist/esm/collection/sync.d.ts +34 -0
- package/dist/esm/collection/sync.js +154 -0
- package/dist/esm/collection/sync.js.map +1 -0
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +1 -1
- package/dist/esm/indexes/auto-index.d.ts +1 -1
- package/dist/esm/indexes/auto-index.js.map +1 -1
- package/dist/esm/indexes/base-index.d.ts +2 -2
- package/dist/esm/indexes/base-index.js.map +1 -1
- package/dist/esm/indexes/btree-index.d.ts +1 -1
- package/dist/esm/indexes/btree-index.js +2 -2
- package/dist/esm/indexes/btree-index.js.map +1 -1
- package/dist/esm/proxy.js +1 -1
- package/dist/esm/query/builder/index.js +1 -1
- package/dist/esm/query/builder/index.js.map +1 -1
- package/dist/esm/query/builder/types.d.ts +1 -1
- package/dist/esm/query/compiler/index.d.ts +3 -2
- package/dist/esm/query/compiler/index.js +5 -2
- package/dist/esm/query/compiler/index.js.map +1 -1
- package/dist/esm/query/compiler/joins.d.ts +3 -2
- package/dist/esm/query/compiler/joins.js +22 -24
- package/dist/esm/query/compiler/joins.js.map +1 -1
- package/dist/esm/query/compiler/order-by.d.ts +1 -1
- package/dist/esm/query/compiler/order-by.js.map +1 -1
- package/dist/esm/query/ir.d.ts +1 -1
- package/dist/esm/query/ir.js.map +1 -1
- package/dist/esm/query/live/collection-config-builder.d.ts +3 -0
- package/dist/esm/query/live/collection-config-builder.js +29 -12
- package/dist/esm/query/live/collection-config-builder.js.map +1 -1
- package/dist/esm/query/live/collection-subscriber.d.ts +4 -7
- package/dist/esm/query/live/collection-subscriber.js +43 -104
- package/dist/esm/query/live/collection-subscriber.js.map +1 -1
- package/dist/esm/query/live-query-collection.d.ts +1 -1
- package/dist/esm/query/live-query-collection.js +1 -1
- package/dist/esm/query/live-query-collection.js.map +1 -1
- package/dist/esm/transactions.js +3 -3
- package/dist/esm/transactions.js.map +1 -1
- package/dist/esm/types.d.ts +12 -10
- package/package.json +2 -2
- package/src/{change-events.ts → collection/change-events.ts} +25 -39
- package/src/collection/changes.ts +163 -0
- package/src/{collection-events.ts → collection/events.ts} +8 -6
- package/src/collection/index.ts +808 -0
- package/src/collection/indexes.ts +172 -0
- package/src/collection/lifecycle.ts +221 -0
- package/src/collection/mutations.ts +535 -0
- package/src/collection/state.ts +866 -0
- package/src/collection/subscription.ts +239 -0
- package/src/collection/sync.ts +235 -0
- package/src/index.ts +2 -2
- package/src/indexes/auto-index.ts +1 -1
- package/src/indexes/base-index.ts +3 -3
- package/src/indexes/btree-index.ts +2 -2
- package/src/query/builder/index.ts +1 -1
- package/src/query/builder/types.ts +1 -1
- package/src/query/compiler/index.ts +7 -1
- package/src/query/compiler/joins.ts +28 -41
- package/src/query/compiler/order-by.ts +1 -1
- package/src/query/ir.ts +1 -1
- package/src/query/live/collection-config-builder.ts +48 -22
- package/src/query/live/collection-subscriber.ts +63 -168
- package/src/query/live-query-collection.ts +2 -2
- package/src/transactions.ts +3 -3
- package/src/types.ts +14 -15
- package/dist/cjs/change-events.cjs.map +0 -1
- package/dist/cjs/collection-events.cjs.map +0 -1
- package/dist/cjs/collection.cjs +0 -1625
- package/dist/cjs/collection.cjs.map +0 -1
- package/dist/esm/change-events.js.map +0 -1
- package/dist/esm/collection-events.js.map +0 -1
- package/dist/esm/collection.js +0 -1625
- package/dist/esm/collection.js.map +0 -1
- package/src/collection.ts +0 -2564
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { SortedMap } from '../SortedMap.js';
|
|
2
|
+
import { Transaction } from '../transactions.js';
|
|
3
|
+
import { StandardSchemaV1 } from '@standard-schema/spec';
|
|
4
|
+
import { CollectionConfig, OptimisticChangeMessage } from '../types.js';
|
|
5
|
+
import { CollectionImpl } from './index.js';
|
|
6
|
+
import { CollectionLifecycleManager } from './lifecycle.js';
|
|
7
|
+
import { CollectionChangesManager } from './changes.js';
|
|
8
|
+
import { CollectionIndexesManager } from './indexes.js';
|
|
9
|
+
interface PendingSyncedTransaction<T extends object = Record<string, unknown>> {
|
|
10
|
+
committed: boolean;
|
|
11
|
+
operations: Array<OptimisticChangeMessage<T>>;
|
|
12
|
+
truncate?: boolean;
|
|
13
|
+
deletedKeys: Set<string | number>;
|
|
14
|
+
}
|
|
15
|
+
export declare class CollectionStateManager<TOutput extends object = Record<string, unknown>, TKey extends string | number = string | number, TSchema extends StandardSchemaV1 = StandardSchemaV1, TInput extends object = TOutput> {
|
|
16
|
+
config: CollectionConfig<TOutput, TKey, TSchema>;
|
|
17
|
+
collection: CollectionImpl<TOutput, TKey, any, TSchema, TInput>;
|
|
18
|
+
lifecycle: CollectionLifecycleManager<TOutput, TKey, TSchema, TInput>;
|
|
19
|
+
changes: CollectionChangesManager<TOutput, TKey, TSchema, TInput>;
|
|
20
|
+
indexes: CollectionIndexesManager<TOutput, TKey, TSchema, TInput>;
|
|
21
|
+
transactions: SortedMap<string, Transaction<any>>;
|
|
22
|
+
pendingSyncedTransactions: Array<PendingSyncedTransaction<TOutput>>;
|
|
23
|
+
syncedData: Map<TKey, TOutput> | SortedMap<TKey, TOutput>;
|
|
24
|
+
syncedMetadata: Map<TKey, unknown>;
|
|
25
|
+
optimisticUpserts: Map<TKey, TOutput>;
|
|
26
|
+
optimisticDeletes: Set<TKey>;
|
|
27
|
+
size: number;
|
|
28
|
+
syncedKeys: Set<TKey>;
|
|
29
|
+
preSyncVisibleState: Map<TKey, TOutput>;
|
|
30
|
+
recentlySyncedKeys: Set<TKey>;
|
|
31
|
+
hasReceivedFirstCommit: boolean;
|
|
32
|
+
isCommittingSyncTransactions: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Creates a new CollectionState manager
|
|
35
|
+
*/
|
|
36
|
+
constructor(config: CollectionConfig<TOutput, TKey, TSchema>);
|
|
37
|
+
setDeps(deps: {
|
|
38
|
+
collection: CollectionImpl<TOutput, TKey, any, TSchema, TInput>;
|
|
39
|
+
lifecycle: CollectionLifecycleManager<TOutput, TKey, TSchema, TInput>;
|
|
40
|
+
changes: CollectionChangesManager<TOutput, TKey, TSchema, TInput>;
|
|
41
|
+
indexes: CollectionIndexesManager<TOutput, TKey, TSchema, TInput>;
|
|
42
|
+
}): void;
|
|
43
|
+
/**
|
|
44
|
+
* Get the current value for a key (virtual derived state)
|
|
45
|
+
*/
|
|
46
|
+
get(key: TKey): TOutput | undefined;
|
|
47
|
+
/**
|
|
48
|
+
* Check if a key exists in the collection (virtual derived state)
|
|
49
|
+
*/
|
|
50
|
+
has(key: TKey): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Get all keys (virtual derived state)
|
|
53
|
+
*/
|
|
54
|
+
keys(): IterableIterator<TKey>;
|
|
55
|
+
/**
|
|
56
|
+
* Get all values (virtual derived state)
|
|
57
|
+
*/
|
|
58
|
+
values(): IterableIterator<TOutput>;
|
|
59
|
+
/**
|
|
60
|
+
* Get all entries (virtual derived state)
|
|
61
|
+
*/
|
|
62
|
+
entries(): IterableIterator<[TKey, TOutput]>;
|
|
63
|
+
/**
|
|
64
|
+
* Get all entries (virtual derived state)
|
|
65
|
+
*/
|
|
66
|
+
[Symbol.iterator](): IterableIterator<[TKey, TOutput]>;
|
|
67
|
+
/**
|
|
68
|
+
* Execute a callback for each entry in the collection
|
|
69
|
+
*/
|
|
70
|
+
forEach(callbackfn: (value: TOutput, key: TKey, index: number) => void): void;
|
|
71
|
+
/**
|
|
72
|
+
* Create a new array with the results of calling a function for each entry in the collection
|
|
73
|
+
*/
|
|
74
|
+
map<U>(callbackfn: (value: TOutput, key: TKey, index: number) => U): Array<U>;
|
|
75
|
+
/**
|
|
76
|
+
* Check if the given collection is this collection
|
|
77
|
+
* @param collection The collection to check
|
|
78
|
+
* @returns True if the given collection is this collection, false otherwise
|
|
79
|
+
*/
|
|
80
|
+
private isThisCollection;
|
|
81
|
+
/**
|
|
82
|
+
* Recompute optimistic state from active transactions
|
|
83
|
+
*/
|
|
84
|
+
recomputeOptimisticState(triggeredByUserAction?: boolean): void;
|
|
85
|
+
/**
|
|
86
|
+
* Calculate the current size based on synced data and optimistic changes
|
|
87
|
+
*/
|
|
88
|
+
private calculateSize;
|
|
89
|
+
/**
|
|
90
|
+
* Collect events for optimistic changes
|
|
91
|
+
*/
|
|
92
|
+
private collectOptimisticChanges;
|
|
93
|
+
/**
|
|
94
|
+
* Get the previous value for a key given previous optimistic state
|
|
95
|
+
*/
|
|
96
|
+
private getPreviousValue;
|
|
97
|
+
/**
|
|
98
|
+
* Attempts to commit pending synced transactions if there are no active transactions
|
|
99
|
+
* This method processes operations from pending transactions and applies them to the synced data
|
|
100
|
+
*/
|
|
101
|
+
commitPendingTransactions: () => void;
|
|
102
|
+
/**
|
|
103
|
+
* Schedule cleanup of a transaction when it completes
|
|
104
|
+
*/
|
|
105
|
+
scheduleTransactionCleanup(transaction: Transaction<any>): void;
|
|
106
|
+
/**
|
|
107
|
+
* Capture visible state for keys that will be affected by pending sync operations
|
|
108
|
+
* This must be called BEFORE onTransactionStateChange clears optimistic state
|
|
109
|
+
*/
|
|
110
|
+
capturePreSyncVisibleState(): void;
|
|
111
|
+
/**
|
|
112
|
+
* Trigger a recomputation when transactions change
|
|
113
|
+
* This method should be called by the Transaction class when state changes
|
|
114
|
+
*/
|
|
115
|
+
onTransactionStateChange(): void;
|
|
116
|
+
/**
|
|
117
|
+
* Clean up the collection by stopping sync and clearing data
|
|
118
|
+
* This can be called manually or automatically by garbage collection
|
|
119
|
+
*/
|
|
120
|
+
cleanup(): void;
|
|
121
|
+
}
|
|
122
|
+
export {};
|