@signalium/query 0.0.1 → 0.1.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/.turbo/turbo-build.log +3 -3
- package/CHANGELOG.md +14 -0
- package/dist/cjs/QueryClient.js +254 -66
- package/dist/cjs/QueryClient.js.map +1 -1
- package/dist/cjs/QueryStore.js +8 -5
- package/dist/cjs/QueryStore.js.map +1 -1
- package/dist/cjs/query.js +1 -1
- package/dist/cjs/query.js.map +1 -1
- package/dist/cjs/types.js +10 -1
- package/dist/cjs/types.js.map +1 -1
- package/dist/esm/QueryClient.d.ts +58 -17
- package/dist/esm/QueryClient.d.ts.map +1 -1
- package/dist/esm/QueryClient.js +255 -67
- package/dist/esm/QueryClient.js.map +1 -1
- package/dist/esm/QueryStore.d.ts +6 -2
- package/dist/esm/QueryStore.d.ts.map +1 -1
- package/dist/esm/QueryStore.js +8 -5
- package/dist/esm/QueryStore.js.map +1 -1
- package/dist/esm/query.d.ts +1 -0
- package/dist/esm/query.d.ts.map +1 -1
- package/dist/esm/query.js +1 -1
- package/dist/esm/query.js.map +1 -1
- package/dist/esm/types.d.ts +10 -0
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/types.js +9 -0
- package/dist/esm/types.js.map +1 -1
- package/package.json +3 -6
- package/src/QueryClient.ts +321 -105
- package/src/QueryStore.ts +15 -7
- package/src/__tests__/caching-persistence.test.ts +31 -2
- package/src/__tests__/entity-system.test.ts +5 -1
- package/src/__tests__/gc-time.test.ts +327 -0
- package/src/__tests__/mock-fetch.test.ts +8 -4
- package/src/__tests__/parse-entities.test.ts +5 -1
- package/src/__tests__/reactivity.test.ts +5 -1
- package/src/__tests__/refetch-interval.test.ts +262 -0
- package/src/__tests__/rest-query-api.test.ts +5 -1
- package/src/__tests__/stale-time.test.ts +357 -0
- package/src/__tests__/utils.ts +28 -12
- package/src/__tests__/validation-edge-cases.test.ts +1 -0
- package/src/query.ts +2 -1
- package/src/react/__tests__/basic.test.tsx +9 -4
- package/src/react/__tests__/component.test.tsx +10 -3
- package/src/types.ts +11 -0
|
@@ -10,38 +10,66 @@
|
|
|
10
10
|
* - Signalium-based reactivity for entity updates
|
|
11
11
|
* - Self-contained validator (no external dependencies except Signalium)
|
|
12
12
|
*/
|
|
13
|
-
import {
|
|
14
|
-
import { DiscriminatedQueryResult, EntityDef, QueryResult, ObjectFieldTypeDef } from './types.js';
|
|
13
|
+
import { type Context, Signal } from 'signalium';
|
|
14
|
+
import { DiscriminatedQueryResult, EntityDef, QueryResult, ObjectFieldTypeDef, RefetchInterval } from './types.js';
|
|
15
15
|
import { EntityRecord } from './EntityMap.js';
|
|
16
16
|
import { QueryStore } from './QueryStore.js';
|
|
17
17
|
export interface QueryContext {
|
|
18
18
|
fetch: typeof fetch;
|
|
19
|
+
evictionMultiplier?: number;
|
|
20
|
+
refetchMultiplier?: number;
|
|
19
21
|
}
|
|
20
22
|
export interface QueryCacheOptions {
|
|
21
23
|
maxCount?: number;
|
|
22
|
-
|
|
24
|
+
gcTime?: number;
|
|
25
|
+
staleTime?: number;
|
|
26
|
+
refetchInterval?: RefetchInterval;
|
|
23
27
|
}
|
|
24
28
|
export interface QueryDefinition<Params, Result> {
|
|
25
29
|
id: string;
|
|
26
30
|
shape: ObjectFieldTypeDef;
|
|
27
31
|
fetchFn: (context: QueryContext, params: Params) => Promise<Result>;
|
|
28
|
-
staleTime?: number;
|
|
29
|
-
refetchInterval?: number;
|
|
30
32
|
cache?: QueryCacheOptions;
|
|
31
33
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
declare class RefetchManager {
|
|
35
|
+
private multiplier;
|
|
36
|
+
private intervalId;
|
|
37
|
+
private clock;
|
|
38
|
+
private buckets;
|
|
39
|
+
constructor(multiplier?: number);
|
|
40
|
+
addQuery(instance: QueryResultImpl<any>): void;
|
|
41
|
+
removeQuery(query: QueryResultImpl<any>): void;
|
|
42
|
+
private tick;
|
|
43
|
+
destroy(): void;
|
|
44
|
+
}
|
|
45
|
+
declare class MemoryEvictionManager {
|
|
46
|
+
private queryClient;
|
|
47
|
+
private multiplier;
|
|
48
|
+
private intervalId;
|
|
49
|
+
private currentFlush;
|
|
50
|
+
private nextFlush;
|
|
51
|
+
constructor(queryClient: QueryClient, multiplier?: number);
|
|
52
|
+
scheduleEviction(queryKey: number): void;
|
|
53
|
+
cancelEviction(queryKey: number): void;
|
|
54
|
+
private tick;
|
|
55
|
+
destroy(): void;
|
|
36
56
|
}
|
|
37
57
|
/**
|
|
38
58
|
* QueryResult wraps a DiscriminatedReactivePromise and adds additional functionality
|
|
39
59
|
* like refetch, while forwarding all the base relay properties.
|
|
60
|
+
* This class combines the old QueryInstance and QueryResultImpl into a single entity.
|
|
40
61
|
*/
|
|
41
62
|
export declare class QueryResultImpl<T> implements QueryResult<T> {
|
|
63
|
+
def: QueryDefinition<any, any>;
|
|
64
|
+
initialized: boolean;
|
|
65
|
+
isRefetchingSignal: Signal<boolean>;
|
|
66
|
+
updatedAt: number | undefined;
|
|
67
|
+
private queryClient;
|
|
68
|
+
queryKey: number;
|
|
69
|
+
private params;
|
|
42
70
|
private relay;
|
|
43
|
-
private
|
|
44
|
-
constructor(
|
|
71
|
+
private relayState;
|
|
72
|
+
constructor(def: QueryDefinition<any, any>, queryClient: QueryClient, queryKey: number, params: any);
|
|
45
73
|
get value(): T | undefined;
|
|
46
74
|
get error(): unknown;
|
|
47
75
|
get isPending(): boolean;
|
|
@@ -49,6 +77,8 @@ export declare class QueryResultImpl<T> implements QueryResult<T> {
|
|
|
49
77
|
get isResolved(): boolean;
|
|
50
78
|
get isSettled(): boolean;
|
|
51
79
|
get isReady(): boolean;
|
|
80
|
+
get isRefetching(): boolean;
|
|
81
|
+
get isFetching(): boolean;
|
|
52
82
|
private get _version();
|
|
53
83
|
private get _signal();
|
|
54
84
|
private get _flags();
|
|
@@ -56,26 +86,37 @@ export declare class QueryResultImpl<T> implements QueryResult<T> {
|
|
|
56
86
|
catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<T | TResult>;
|
|
57
87
|
finally(onfinally?: (() => void) | null | undefined): Promise<T>;
|
|
58
88
|
refetch(): Promise<T>;
|
|
89
|
+
/**
|
|
90
|
+
* Fetches fresh data, updates the cache, and updates updatedAt timestamp
|
|
91
|
+
*/
|
|
92
|
+
runQuery(): Promise<T>;
|
|
93
|
+
isStale(): boolean;
|
|
94
|
+
/**
|
|
95
|
+
* Initialize the query by loading from cache and fetching if stale
|
|
96
|
+
*/
|
|
97
|
+
private initialize;
|
|
59
98
|
get [Symbol.toStringTag](): string;
|
|
60
99
|
}
|
|
61
100
|
export declare class QueryClient {
|
|
62
101
|
private store;
|
|
63
102
|
private context;
|
|
64
103
|
private entityMap;
|
|
65
|
-
|
|
104
|
+
queryInstances: Map<number, QueryResultImpl<unknown>>;
|
|
105
|
+
memoryEvictionManager: MemoryEvictionManager;
|
|
106
|
+
refetchManager: RefetchManager;
|
|
66
107
|
constructor(store: QueryStore, context?: QueryContext);
|
|
108
|
+
getContext(): QueryContext;
|
|
109
|
+
saveQueryData(queryDef: QueryDefinition<any, any>, queryKey: number, data: unknown, entityRefs: Set<number>): void;
|
|
110
|
+
activateQuery(queryInstance: QueryResultImpl<unknown>): void;
|
|
111
|
+
loadCachedQuery(queryDef: QueryDefinition<any, any>, queryKey: number): import("./QueryStore.js").MaybePromise<import("./QueryStore.js").CachedQuery | undefined>;
|
|
67
112
|
/**
|
|
68
113
|
* Loads a query from the document store and returns a QueryResult
|
|
69
114
|
* that triggers fetches and prepopulates with cached data
|
|
70
115
|
*/
|
|
71
116
|
getQuery<Params, Result>(queryDef: QueryDefinition<Params, Result>, params: Params): DiscriminatedQueryResult<Result>;
|
|
72
|
-
private initializeQuery;
|
|
73
|
-
/**
|
|
74
|
-
* Fetches fresh data and updates the cache
|
|
75
|
-
*/
|
|
76
|
-
private runQuery;
|
|
77
117
|
hydrateEntity(key: number, shape: EntityDef): EntityRecord;
|
|
78
118
|
saveEntity(key: number, obj: Record<string, unknown>, shape: EntityDef, entityRefs?: Set<number>): EntityRecord;
|
|
119
|
+
destroy(): void;
|
|
79
120
|
}
|
|
80
121
|
export declare const QueryClientContext: Context<QueryClient | undefined>;
|
|
81
122
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryClient.d.ts","sourceRoot":"","sources":["../../src/QueryClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"QueryClient.d.ts","sourceRoot":"","sources":["../../src/QueryClient.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/QueryClient.js
CHANGED
|
@@ -10,28 +10,173 @@
|
|
|
10
10
|
* - Signalium-based reactivity for entity updates
|
|
11
11
|
* - Self-contained validator (no external dependencies except Signalium)
|
|
12
12
|
*/
|
|
13
|
-
import { relay, context,
|
|
13
|
+
import { relay, context, signal } from 'signalium';
|
|
14
14
|
import { hashValue, setReactivePromise } from 'signalium/utils';
|
|
15
15
|
import { parseValue } from './proxy.js';
|
|
16
16
|
import { parseEntities } from './parseEntities.js';
|
|
17
17
|
import { EntityStore } from './EntityMap.js';
|
|
18
18
|
import { ValidatorDef } from './typeDefs.js';
|
|
19
|
+
// QueryInstance is now merged into QueryResultImpl below
|
|
19
20
|
const queryKeyFor = (queryDef, params) => {
|
|
20
21
|
return hashValue([queryDef.id, params]);
|
|
21
22
|
};
|
|
23
|
+
const BASE_TICK_INTERVAL = 1000; // 1 second
|
|
24
|
+
// Refetch interval manager - uses a fixed 1-second tick
|
|
25
|
+
class RefetchManager {
|
|
26
|
+
multiplier;
|
|
27
|
+
intervalId;
|
|
28
|
+
clock = 0; // Increments by 1000ms on each tick
|
|
29
|
+
// Buckets: Map of actual interval -> Set of query instances
|
|
30
|
+
buckets = new Map();
|
|
31
|
+
constructor(multiplier = 1) {
|
|
32
|
+
this.multiplier = multiplier;
|
|
33
|
+
// Start the timer immediately and keep it running
|
|
34
|
+
const tickInterval = BASE_TICK_INTERVAL * this.multiplier;
|
|
35
|
+
this.intervalId = setTimeout(() => this.tick(), tickInterval);
|
|
36
|
+
}
|
|
37
|
+
addQuery(instance) {
|
|
38
|
+
const interval = instance.def.cache?.refetchInterval;
|
|
39
|
+
if (!interval) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const actualInterval = interval * this.multiplier;
|
|
43
|
+
// Add to bucket by actual interval
|
|
44
|
+
let bucket = this.buckets.get(actualInterval);
|
|
45
|
+
if (!bucket) {
|
|
46
|
+
bucket = new Set();
|
|
47
|
+
this.buckets.set(actualInterval, bucket);
|
|
48
|
+
}
|
|
49
|
+
bucket.add(instance);
|
|
50
|
+
}
|
|
51
|
+
removeQuery(query) {
|
|
52
|
+
const interval = query.def.cache?.refetchInterval;
|
|
53
|
+
if (!interval) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const actualInterval = interval * this.multiplier;
|
|
57
|
+
// Remove from bucket
|
|
58
|
+
const bucket = this.buckets.get(actualInterval);
|
|
59
|
+
if (bucket) {
|
|
60
|
+
bucket.delete(query);
|
|
61
|
+
if (bucket.size === 0) {
|
|
62
|
+
this.buckets.delete(actualInterval);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
tick() {
|
|
67
|
+
this.clock += BASE_TICK_INTERVAL * this.multiplier;
|
|
68
|
+
// Only process buckets where clock is aligned with the interval
|
|
69
|
+
for (const [interval, bucket] of this.buckets.entries()) {
|
|
70
|
+
if (this.clock % interval === 0) {
|
|
71
|
+
// Process all queries in this bucket
|
|
72
|
+
for (const query of bucket) {
|
|
73
|
+
// Skip if already fetching - let the current fetch complete
|
|
74
|
+
if (query && !query.isFetching) {
|
|
75
|
+
query.refetch();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
const tickInterval = BASE_TICK_INTERVAL * this.multiplier;
|
|
81
|
+
this.intervalId = setTimeout(() => this.tick(), tickInterval);
|
|
82
|
+
}
|
|
83
|
+
destroy() {
|
|
84
|
+
clearTimeout(this.intervalId);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
const EVICTION_INTERVAL = 60 * 1000; // 1 minute
|
|
88
|
+
// Memory eviction manager - uses a single interval with rotating sets to avoid timeout overhead
|
|
89
|
+
class MemoryEvictionManager {
|
|
90
|
+
queryClient;
|
|
91
|
+
multiplier;
|
|
92
|
+
intervalId;
|
|
93
|
+
currentFlush = new Set(); // Queries to evict on next tick
|
|
94
|
+
nextFlush = new Set(); // Queries to evict on tick after next
|
|
95
|
+
constructor(queryClient, multiplier = 1) {
|
|
96
|
+
this.queryClient = queryClient;
|
|
97
|
+
this.multiplier = multiplier;
|
|
98
|
+
this.intervalId = setInterval(this.tick, EVICTION_INTERVAL * this.multiplier);
|
|
99
|
+
}
|
|
100
|
+
scheduleEviction(queryKey) {
|
|
101
|
+
// Add to nextFlush so it waits at least one full interval
|
|
102
|
+
// This prevents immediate eviction if scheduled right before a tick
|
|
103
|
+
this.nextFlush.add(queryKey);
|
|
104
|
+
}
|
|
105
|
+
cancelEviction(queryKey) {
|
|
106
|
+
// Remove from both sets to handle reactivation
|
|
107
|
+
this.currentFlush.delete(queryKey);
|
|
108
|
+
this.nextFlush.delete(queryKey);
|
|
109
|
+
}
|
|
110
|
+
tick = () => {
|
|
111
|
+
if (!this.queryClient)
|
|
112
|
+
return;
|
|
113
|
+
// Evict all queries in currentFlush
|
|
114
|
+
for (const queryKey of this.currentFlush) {
|
|
115
|
+
this.queryClient.queryInstances.delete(queryKey);
|
|
116
|
+
}
|
|
117
|
+
// Rotate: currentFlush becomes nextFlush, nextFlush becomes empty
|
|
118
|
+
this.currentFlush = this.nextFlush;
|
|
119
|
+
this.nextFlush = new Set();
|
|
120
|
+
};
|
|
121
|
+
destroy() {
|
|
122
|
+
clearInterval(this.intervalId);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
22
125
|
/**
|
|
23
126
|
* QueryResult wraps a DiscriminatedReactivePromise and adds additional functionality
|
|
24
127
|
* like refetch, while forwarding all the base relay properties.
|
|
128
|
+
* This class combines the old QueryInstance and QueryResultImpl into a single entity.
|
|
25
129
|
*/
|
|
26
130
|
export class QueryResultImpl {
|
|
131
|
+
// Fields from old QueryInstance
|
|
132
|
+
def;
|
|
133
|
+
initialized = false;
|
|
134
|
+
isRefetchingSignal;
|
|
135
|
+
updatedAt = undefined;
|
|
136
|
+
// References for refetch functionality
|
|
137
|
+
queryClient;
|
|
138
|
+
queryKey;
|
|
139
|
+
params;
|
|
27
140
|
relay;
|
|
28
|
-
|
|
29
|
-
constructor(
|
|
30
|
-
this.relay = relay;
|
|
31
|
-
this.instance = instance;
|
|
141
|
+
relayState = undefined;
|
|
142
|
+
constructor(def, queryClient, queryKey, params) {
|
|
32
143
|
setReactivePromise(this);
|
|
144
|
+
this.def = def;
|
|
145
|
+
this.queryClient = queryClient;
|
|
146
|
+
this.queryKey = queryKey;
|
|
147
|
+
this.params = params;
|
|
148
|
+
this.isRefetchingSignal = signal(false);
|
|
149
|
+
// Create the relay and handle activation/deactivation
|
|
150
|
+
this.relay = relay(state => {
|
|
151
|
+
this.relayState = state;
|
|
152
|
+
// Load from cache first, then fetch fresh data
|
|
153
|
+
this.queryClient.activateQuery(this);
|
|
154
|
+
if (this.initialized) {
|
|
155
|
+
if (this.isStale()) {
|
|
156
|
+
this.refetch();
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
this.initialize(state);
|
|
161
|
+
}
|
|
162
|
+
// Return deactivation callback
|
|
163
|
+
return {
|
|
164
|
+
update: () => {
|
|
165
|
+
state.setPromise(this.runQuery());
|
|
166
|
+
},
|
|
167
|
+
deactivate: () => {
|
|
168
|
+
// Last subscriber left, deactivate refetch and schedule memory eviction
|
|
169
|
+
if (this.def.cache?.refetchInterval) {
|
|
170
|
+
this.queryClient.refetchManager.removeQuery(this);
|
|
171
|
+
}
|
|
172
|
+
// Schedule removal from memory using the global eviction manager
|
|
173
|
+
// This allows quick reactivation from memory if needed again soon
|
|
174
|
+
// Disk cache (if configured) will still be available after eviction
|
|
175
|
+
this.queryClient.memoryEvictionManager.scheduleEviction(this.queryKey);
|
|
176
|
+
},
|
|
177
|
+
};
|
|
178
|
+
});
|
|
33
179
|
}
|
|
34
|
-
// Forward all ReactivePromise properties through getters
|
|
35
180
|
get value() {
|
|
36
181
|
return this.relay.value;
|
|
37
182
|
}
|
|
@@ -53,6 +198,12 @@ export class QueryResultImpl {
|
|
|
53
198
|
get isReady() {
|
|
54
199
|
return this.relay.isReady;
|
|
55
200
|
}
|
|
201
|
+
get isRefetching() {
|
|
202
|
+
return this.isRefetchingSignal.value;
|
|
203
|
+
}
|
|
204
|
+
get isFetching() {
|
|
205
|
+
return this.relay.isPending || this.isRefetching;
|
|
206
|
+
}
|
|
56
207
|
// TODO: Intimate APIs needed for `useReactive`, this is a code smell and
|
|
57
208
|
// we should find a better way to entangle these more generically
|
|
58
209
|
get _version() {
|
|
@@ -75,12 +226,77 @@ export class QueryResultImpl {
|
|
|
75
226
|
return this.relay.finally(onfinally);
|
|
76
227
|
}
|
|
77
228
|
// Additional methods
|
|
78
|
-
refetch() {
|
|
79
|
-
this.
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
229
|
+
async refetch() {
|
|
230
|
+
this.isRefetchingSignal.value = true;
|
|
231
|
+
try {
|
|
232
|
+
const result = await this.runQuery();
|
|
233
|
+
if (this.relayState) {
|
|
234
|
+
this.relayState.value = result;
|
|
235
|
+
// Update the version to trigger a re-render for direct React consumers
|
|
236
|
+
// e.g. `useReactive(query, params)`
|
|
237
|
+
this._version.update(v => v + 1);
|
|
238
|
+
}
|
|
239
|
+
return result;
|
|
240
|
+
}
|
|
241
|
+
finally {
|
|
242
|
+
this.isRefetchingSignal.value = false;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Fetches fresh data, updates the cache, and updates updatedAt timestamp
|
|
247
|
+
*/
|
|
248
|
+
async runQuery() {
|
|
249
|
+
const freshData = await this.def.fetchFn(this.queryClient.getContext(), this.params);
|
|
250
|
+
// Parse and cache the fresh data
|
|
251
|
+
const entityRefs = new Set();
|
|
252
|
+
const shape = this.def.shape;
|
|
253
|
+
const parsedData = shape instanceof ValidatorDef
|
|
254
|
+
? parseEntities(freshData, shape, this.queryClient, entityRefs)
|
|
255
|
+
: parseValue(freshData, shape, this.def.id);
|
|
256
|
+
// Cache the data (synchronous, fire-and-forget)
|
|
257
|
+
this.queryClient.saveQueryData(this.def, this.queryKey, freshData, entityRefs);
|
|
258
|
+
// Update the timestamp
|
|
259
|
+
this.updatedAt = Date.now();
|
|
260
|
+
return parsedData;
|
|
261
|
+
}
|
|
262
|
+
isStale() {
|
|
263
|
+
if (this.updatedAt === undefined) {
|
|
264
|
+
return true; // No data yet, needs fetch
|
|
265
|
+
}
|
|
266
|
+
const staleTime = this.def.cache?.staleTime ?? 0;
|
|
267
|
+
return Date.now() - this.updatedAt >= staleTime;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Initialize the query by loading from cache and fetching if stale
|
|
271
|
+
*/
|
|
272
|
+
async initialize(state) {
|
|
273
|
+
try {
|
|
274
|
+
this.initialized = true;
|
|
275
|
+
// Load from cache first
|
|
276
|
+
const cached = await this.queryClient.loadCachedQuery(this.def, this.queryKey);
|
|
277
|
+
if (cached !== undefined) {
|
|
278
|
+
const shape = this.def.shape;
|
|
279
|
+
state.value =
|
|
280
|
+
shape instanceof ValidatorDef
|
|
281
|
+
? parseEntities(cached.value, shape, this.queryClient, new Set())
|
|
282
|
+
: parseValue(cached.value, shape, this.def.id);
|
|
283
|
+
// Set the cached timestamp
|
|
284
|
+
this.updatedAt = cached.updatedAt;
|
|
285
|
+
// Check if data is stale
|
|
286
|
+
if (this.isStale()) {
|
|
287
|
+
// Data is stale, trigger background refetch
|
|
288
|
+
this.refetch();
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
// No cached data, fetch fresh
|
|
293
|
+
state.setPromise(this.runQuery());
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
catch (error) {
|
|
297
|
+
// Relay will handle the error state automatically
|
|
298
|
+
state.setError(error);
|
|
299
|
+
}
|
|
84
300
|
}
|
|
85
301
|
// Make it work with Symbol.toStringTag for Promise detection
|
|
86
302
|
get [Symbol.toStringTag]() {
|
|
@@ -92,9 +308,28 @@ export class QueryClient {
|
|
|
92
308
|
context;
|
|
93
309
|
entityMap = new EntityStore();
|
|
94
310
|
queryInstances = new Map();
|
|
311
|
+
memoryEvictionManager;
|
|
312
|
+
refetchManager;
|
|
95
313
|
constructor(store, context = { fetch }) {
|
|
96
314
|
this.store = store;
|
|
97
315
|
this.context = context;
|
|
316
|
+
this.memoryEvictionManager = new MemoryEvictionManager(this, this.context.evictionMultiplier);
|
|
317
|
+
this.refetchManager = new RefetchManager(this.context.refetchMultiplier);
|
|
318
|
+
}
|
|
319
|
+
getContext() {
|
|
320
|
+
return this.context;
|
|
321
|
+
}
|
|
322
|
+
saveQueryData(queryDef, queryKey, data, entityRefs) {
|
|
323
|
+
this.store.saveQuery(queryDef, queryKey, data, entityRefs);
|
|
324
|
+
}
|
|
325
|
+
activateQuery(queryInstance) {
|
|
326
|
+
const { def, queryKey } = queryInstance;
|
|
327
|
+
this.store.activateQuery(def, queryKey);
|
|
328
|
+
this.refetchManager.addQuery(queryInstance);
|
|
329
|
+
this.memoryEvictionManager.cancelEviction(queryKey);
|
|
330
|
+
}
|
|
331
|
+
loadCachedQuery(queryDef, queryKey) {
|
|
332
|
+
return this.store.loadQuery(queryDef, queryKey, this.entityMap);
|
|
98
333
|
}
|
|
99
334
|
/**
|
|
100
335
|
* Loads a query from the document store and returns a QueryResult
|
|
@@ -103,64 +338,13 @@ export class QueryClient {
|
|
|
103
338
|
getQuery(queryDef, params) {
|
|
104
339
|
const queryKey = queryKeyFor(queryDef, params);
|
|
105
340
|
let queryInstance = this.queryInstances.get(queryKey);
|
|
106
|
-
// Create a new
|
|
341
|
+
// Create a new instance if it doesn't exist
|
|
107
342
|
if (queryInstance === undefined) {
|
|
108
|
-
queryInstance =
|
|
109
|
-
|
|
110
|
-
initialized: false,
|
|
111
|
-
notifier: notifier(),
|
|
112
|
-
};
|
|
113
|
-
const queryRelay = relay(state => {
|
|
114
|
-
// Load from cache first, then fetch fresh data
|
|
115
|
-
queryInstance.notifier.consume();
|
|
116
|
-
this.store.activateQuery(queryDef, queryKey);
|
|
117
|
-
if (queryInstance.initialized) {
|
|
118
|
-
state.setPromise(this.runQuery(queryDef, queryKey, params));
|
|
119
|
-
}
|
|
120
|
-
else {
|
|
121
|
-
this.initializeQuery(queryDef, params, state, queryInstance);
|
|
122
|
-
}
|
|
123
|
-
});
|
|
124
|
-
queryInstance.relay = new QueryResultImpl(queryRelay, queryInstance);
|
|
125
|
-
// Store the relay for future use
|
|
343
|
+
queryInstance = new QueryResultImpl(queryDef, this, queryKey, params);
|
|
344
|
+
// Store for future use
|
|
126
345
|
this.queryInstances.set(queryKey, queryInstance);
|
|
127
346
|
}
|
|
128
|
-
return queryInstance
|
|
129
|
-
}
|
|
130
|
-
async initializeQuery(queryDef, params, state, instance) {
|
|
131
|
-
try {
|
|
132
|
-
instance.initialized = true;
|
|
133
|
-
const queryKey = queryKeyFor(queryDef, params);
|
|
134
|
-
// Load from cache first
|
|
135
|
-
const query = this.store.loadQuery(queryDef, queryKey, this.entityMap);
|
|
136
|
-
if (query !== undefined) {
|
|
137
|
-
const shape = queryDef.shape;
|
|
138
|
-
state.value =
|
|
139
|
-
shape instanceof ValidatorDef
|
|
140
|
-
? parseEntities(query, shape, this, new Set())
|
|
141
|
-
: parseValue(query, shape, queryDef.id);
|
|
142
|
-
}
|
|
143
|
-
state.setPromise(this.runQuery(queryDef, queryKey, params));
|
|
144
|
-
}
|
|
145
|
-
catch (error) {
|
|
146
|
-
// Relay will handle the error state automatically
|
|
147
|
-
state.setError(error);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* Fetches fresh data and updates the cache
|
|
152
|
-
*/
|
|
153
|
-
async runQuery(queryDef, queryKey, params) {
|
|
154
|
-
const freshData = await queryDef.fetchFn(this.context, params);
|
|
155
|
-
// Parse and cache the fresh data
|
|
156
|
-
const entityRefs = new Set();
|
|
157
|
-
const shape = queryDef.shape;
|
|
158
|
-
const parsedData = shape instanceof ValidatorDef
|
|
159
|
-
? parseEntities(freshData, shape, this, entityRefs)
|
|
160
|
-
: parseValue(freshData, shape, queryDef.id);
|
|
161
|
-
// Cache the data (synchronous, fire-and-forget)
|
|
162
|
-
this.store.saveQuery(queryDef, queryKey, freshData, entityRefs);
|
|
163
|
-
return parsedData;
|
|
347
|
+
return queryInstance;
|
|
164
348
|
}
|
|
165
349
|
hydrateEntity(key, shape) {
|
|
166
350
|
return this.entityMap.hydratePreloadedEntity(key, shape);
|
|
@@ -170,6 +354,10 @@ export class QueryClient {
|
|
|
170
354
|
this.store.saveEntity(key, obj, entityRefs);
|
|
171
355
|
return record;
|
|
172
356
|
}
|
|
357
|
+
destroy() {
|
|
358
|
+
this.refetchManager.destroy();
|
|
359
|
+
this.memoryEvictionManager.destroy();
|
|
360
|
+
}
|
|
173
361
|
}
|
|
174
362
|
export const QueryClientContext = context(undefined);
|
|
175
363
|
//# sourceMappingURL=QueryClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryClient.js","sourceRoot":"","sources":["../../src/QueryClient.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"QueryClient.js","sourceRoot":"","sources":["../../src/QueryClient.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/QueryStore.d.ts
CHANGED
|
@@ -7,12 +7,16 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { EntityStore } from './EntityMap.js';
|
|
9
9
|
import { QueryDefinition } from './QueryClient.js';
|
|
10
|
+
export interface CachedQuery {
|
|
11
|
+
value: unknown;
|
|
12
|
+
updatedAt: number;
|
|
13
|
+
}
|
|
10
14
|
export interface QueryStore {
|
|
11
15
|
/**
|
|
12
16
|
* Asynchronously retrieves a document by key.
|
|
13
17
|
* May return undefined if the document is not in the store.
|
|
14
18
|
*/
|
|
15
|
-
loadQuery(queryDef: QueryDefinition<any, any>, queryKey: number, entityMap: EntityStore): MaybePromise<
|
|
19
|
+
loadQuery(queryDef: QueryDefinition<any, any>, queryKey: number, entityMap: EntityStore): MaybePromise<CachedQuery | undefined>;
|
|
16
20
|
/**
|
|
17
21
|
* Synchronously stores a document with optional reference IDs.
|
|
18
22
|
* This is fire-and-forget for async implementations.
|
|
@@ -60,7 +64,7 @@ export declare class SyncQueryStore implements QueryStore {
|
|
|
60
64
|
private readonly kv;
|
|
61
65
|
queues: Map<string, Uint32Array>;
|
|
62
66
|
constructor(kv: SyncPersistentStore);
|
|
63
|
-
loadQuery(queryDef: QueryDefinition<any, any>, queryKey: number, entityMap: EntityStore):
|
|
67
|
+
loadQuery(queryDef: QueryDefinition<any, any>, queryKey: number, entityMap: EntityStore): CachedQuery | undefined;
|
|
64
68
|
private preloadEntities;
|
|
65
69
|
saveQuery(queryDef: QueryDefinition<any, any>, queryKey: number, value: unknown, refIds?: Set<number>): void;
|
|
66
70
|
saveEntity(entityKey: number, value: unknown, refIds?: Set<number>): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryStore.d.ts","sourceRoot":"","sources":["../../src/QueryStore.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAMnD,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,SAAS,CACP,QAAQ,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,EACnC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,WAAW,GACrB,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"QueryStore.d.ts","sourceRoot":"","sources":["../../src/QueryStore.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/QueryStore.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* asynchronous (writer-backed) implementations.
|
|
7
7
|
*/
|
|
8
8
|
const DEFAULT_MAX_COUNT = 50;
|
|
9
|
-
const
|
|
9
|
+
const DEFAULT_GC_TIME = 1000 * 60 * 60 * 24; // 24 hours
|
|
10
10
|
export class MemoryPersistentStore {
|
|
11
11
|
kv = Object.create(null);
|
|
12
12
|
has(key) {
|
|
@@ -49,11 +49,11 @@ export class SyncQueryStore {
|
|
|
49
49
|
}
|
|
50
50
|
loadQuery(queryDef, queryKey, entityMap) {
|
|
51
51
|
const updatedAt = this.kv.getNumber(updatedAtKeyFor(queryKey));
|
|
52
|
-
if (updatedAt === undefined || updatedAt < Date.now() - (queryDef.cache?.
|
|
52
|
+
if (updatedAt === undefined || updatedAt < Date.now() - (queryDef.cache?.gcTime ?? DEFAULT_GC_TIME)) {
|
|
53
53
|
return;
|
|
54
54
|
}
|
|
55
|
-
const
|
|
56
|
-
if (
|
|
55
|
+
const valueStr = this.kv.getString(valueKeyFor(queryKey));
|
|
56
|
+
if (valueStr === undefined) {
|
|
57
57
|
return;
|
|
58
58
|
}
|
|
59
59
|
const entityIds = this.kv.getBuffer(refIdsKeyFor(queryKey));
|
|
@@ -61,7 +61,10 @@ export class SyncQueryStore {
|
|
|
61
61
|
this.preloadEntities(entityIds, entityMap);
|
|
62
62
|
}
|
|
63
63
|
this.activateQuery(queryDef, queryKey);
|
|
64
|
-
return
|
|
64
|
+
return {
|
|
65
|
+
value: JSON.parse(valueStr),
|
|
66
|
+
updatedAt,
|
|
67
|
+
};
|
|
65
68
|
}
|
|
66
69
|
preloadEntities(entityIds, entityMap) {
|
|
67
70
|
for (const entityId of entityIds) {
|