@signalium/query 1.0.4 → 1.0.6
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/CHANGELOG.md +23 -0
- package/dist/cjs/MemoryEvictionManager.js +56 -0
- package/dist/cjs/MemoryEvictionManager.js.map +1 -0
- package/dist/cjs/NetworkManager.js +21 -1
- package/dist/cjs/NetworkManager.js.map +1 -1
- package/dist/cjs/QueryClient.js +12 -600
- package/dist/cjs/QueryClient.js.map +1 -1
- package/dist/cjs/QueryResult.js +491 -0
- package/dist/cjs/QueryResult.js.map +1 -0
- package/dist/cjs/QueryStore.js +2 -6
- package/dist/cjs/QueryStore.js.map +1 -1
- package/dist/cjs/RefetchManager.js +88 -0
- package/dist/cjs/RefetchManager.js.map +1 -0
- package/dist/cjs/errors.js +13 -12
- package/dist/cjs/errors.js.map +1 -1
- package/dist/cjs/index.js +8 -11
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/parseEntities.js +1 -1
- package/dist/cjs/parseEntities.js.map +1 -1
- package/dist/cjs/proxy.js +2 -2
- package/dist/cjs/proxy.js.map +1 -1
- package/dist/cjs/query.js +60 -19
- package/dist/cjs/query.js.map +1 -1
- package/dist/cjs/stores/async.js +290 -2
- package/dist/cjs/stores/async.js.map +1 -1
- package/dist/cjs/stores/shared.js +19 -0
- package/dist/cjs/stores/shared.js.map +1 -0
- package/dist/cjs/stores/sync.js +201 -4
- package/dist/cjs/stores/sync.js.map +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/cjs/typeDefs.js +221 -116
- package/dist/cjs/typeDefs.js.map +1 -1
- package/dist/cjs/utils.js +0 -42
- package/dist/cjs/utils.js.map +1 -1
- package/dist/esm/MemoryEvictionManager.d.ts +19 -0
- package/dist/esm/MemoryEvictionManager.d.ts.map +1 -0
- package/dist/esm/MemoryEvictionManager.js +51 -0
- package/dist/esm/MemoryEvictionManager.js.map +1 -0
- package/dist/esm/NetworkManager.d.ts +8 -0
- package/dist/esm/NetworkManager.d.ts.map +1 -1
- package/dist/esm/NetworkManager.js +19 -0
- package/dist/esm/NetworkManager.js.map +1 -1
- package/dist/esm/QueryClient.d.ts +33 -86
- package/dist/esm/QueryClient.d.ts.map +1 -1
- package/dist/esm/QueryClient.js +11 -599
- package/dist/esm/QueryClient.js.map +1 -1
- package/dist/esm/QueryResult.d.ts +66 -0
- package/dist/esm/QueryResult.d.ts.map +1 -0
- package/dist/esm/QueryResult.js +487 -0
- package/dist/esm/QueryResult.js.map +1 -0
- package/dist/esm/QueryStore.d.ts.map +1 -1
- package/dist/esm/QueryStore.js +2 -6
- package/dist/esm/QueryStore.js.map +1 -1
- package/dist/esm/RefetchManager.d.ts +18 -0
- package/dist/esm/RefetchManager.d.ts.map +1 -0
- package/dist/esm/RefetchManager.js +83 -0
- package/dist/esm/RefetchManager.js.map +1 -0
- package/dist/esm/errors.d.ts.map +1 -1
- package/dist/esm/errors.js +13 -12
- package/dist/esm/errors.js.map +1 -1
- package/dist/esm/index.d.ts +4 -5
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +4 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/parseEntities.js +2 -2
- package/dist/esm/parseEntities.js.map +1 -1
- package/dist/esm/proxy.js +3 -3
- package/dist/esm/proxy.js.map +1 -1
- package/dist/esm/query.d.ts +2 -0
- package/dist/esm/query.d.ts.map +1 -1
- package/dist/esm/query.js +59 -20
- package/dist/esm/query.js.map +1 -1
- package/dist/esm/stores/async.d.ts +63 -1
- package/dist/esm/stores/async.d.ts.map +1 -1
- package/dist/esm/stores/async.js +289 -1
- package/dist/esm/stores/async.js.map +1 -1
- package/dist/esm/stores/shared.d.ts +8 -0
- package/dist/esm/stores/shared.d.ts.map +1 -0
- package/dist/esm/stores/shared.js +11 -0
- package/dist/esm/stores/shared.js.map +1 -0
- package/dist/esm/stores/sync.d.ts +37 -1
- package/dist/esm/stores/sync.d.ts.map +1 -1
- package/dist/esm/stores/sync.js +198 -1
- package/dist/esm/stores/sync.js.map +1 -1
- package/dist/esm/typeDefs.d.ts +25 -8
- package/dist/esm/typeDefs.d.ts.map +1 -1
- package/dist/esm/typeDefs.js +220 -116
- package/dist/esm/typeDefs.js.map +1 -1
- package/dist/esm/types.d.ts +2 -1
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/utils.d.ts +1 -4
- package/dist/esm/utils.d.ts.map +1 -1
- package/dist/esm/utils.js +0 -40
- package/dist/esm/utils.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { BaseQueryResult } from './types.js';
|
|
2
|
+
import { type AnyQueryDefinition, type QueryClient, type QueryParams } from './QueryClient.js';
|
|
3
|
+
/**
|
|
4
|
+
* QueryResult wraps a DiscriminatedReactivePromise and adds additional functionality
|
|
5
|
+
* like refetch, while forwarding all the base relay properties.
|
|
6
|
+
* This class combines the old QueryInstance and QueryResultImpl into a single entity.
|
|
7
|
+
*/
|
|
8
|
+
export declare class QueryResultImpl<T> implements BaseQueryResult<T> {
|
|
9
|
+
def: AnyQueryDefinition<any, any>;
|
|
10
|
+
queryKey: number;
|
|
11
|
+
private queryClient;
|
|
12
|
+
private initialized;
|
|
13
|
+
private isRefetchingSignal;
|
|
14
|
+
private isFetchingMoreSignal;
|
|
15
|
+
private updatedAt;
|
|
16
|
+
private params;
|
|
17
|
+
private refIds;
|
|
18
|
+
private refetchPromise;
|
|
19
|
+
private fetchMorePromise;
|
|
20
|
+
private attemptCount;
|
|
21
|
+
private unsubscribe?;
|
|
22
|
+
private relay;
|
|
23
|
+
private _relayState;
|
|
24
|
+
private wasOffline;
|
|
25
|
+
private get relayState();
|
|
26
|
+
private _nextPageParams;
|
|
27
|
+
private get nextPageParams();
|
|
28
|
+
constructor(def: AnyQueryDefinition<any, any>, queryClient: QueryClient, queryKey: number, params: QueryParams | undefined);
|
|
29
|
+
get value(): T | undefined;
|
|
30
|
+
get error(): unknown;
|
|
31
|
+
get isPending(): boolean;
|
|
32
|
+
get isRejected(): boolean;
|
|
33
|
+
get isResolved(): boolean;
|
|
34
|
+
get isSettled(): boolean;
|
|
35
|
+
get isReady(): boolean;
|
|
36
|
+
private get _version();
|
|
37
|
+
private get _signal();
|
|
38
|
+
private get _flags();
|
|
39
|
+
then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null | undefined): Promise<TResult1 | TResult2>;
|
|
40
|
+
catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null | undefined): Promise<T | TResult>;
|
|
41
|
+
finally(onfinally?: (() => void) | null | undefined): Promise<T>;
|
|
42
|
+
get [Symbol.toStringTag](): string;
|
|
43
|
+
/**
|
|
44
|
+
* Initialize the query by loading from cache and fetching if stale
|
|
45
|
+
*/
|
|
46
|
+
private initialize;
|
|
47
|
+
/**
|
|
48
|
+
* Handle stream updates by merging with existing entity.
|
|
49
|
+
* Deep merging is handled automatically by parseEntities/setEntity.
|
|
50
|
+
*/
|
|
51
|
+
private setupSubscription;
|
|
52
|
+
/**
|
|
53
|
+
* Fetches fresh data, updates the cache, and updates updatedAt timestamp
|
|
54
|
+
*/
|
|
55
|
+
private runQuery;
|
|
56
|
+
refetch(): Promise<T>;
|
|
57
|
+
fetchNextPage(): Promise<T>;
|
|
58
|
+
get isRefetching(): boolean;
|
|
59
|
+
get isFetchingMore(): boolean;
|
|
60
|
+
get isFetching(): boolean;
|
|
61
|
+
get hasNextPage(): boolean;
|
|
62
|
+
get isStale(): boolean;
|
|
63
|
+
get isPaused(): boolean;
|
|
64
|
+
private getRetryConfig;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=QueryResult.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryResult.d.ts","sourceRoot":"","sources":["../../src/QueryResult.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,487 @@
|
|
|
1
|
+
import { relay, signal } from 'signalium';
|
|
2
|
+
import { setReactivePromise } from 'signalium/utils';
|
|
3
|
+
import { NetworkMode, } from './types.js';
|
|
4
|
+
import { parseValue } from './proxy.js';
|
|
5
|
+
import { parseEntities } from './parseEntities.js';
|
|
6
|
+
import { ValidatorDef } from './typeDefs.js';
|
|
7
|
+
/**
|
|
8
|
+
* QueryResult wraps a DiscriminatedReactivePromise and adds additional functionality
|
|
9
|
+
* like refetch, while forwarding all the base relay properties.
|
|
10
|
+
* This class combines the old QueryInstance and QueryResultImpl into a single entity.
|
|
11
|
+
*/
|
|
12
|
+
export class QueryResultImpl {
|
|
13
|
+
def;
|
|
14
|
+
queryKey;
|
|
15
|
+
queryClient;
|
|
16
|
+
initialized = false;
|
|
17
|
+
isRefetchingSignal = signal(false);
|
|
18
|
+
isFetchingMoreSignal = signal(false);
|
|
19
|
+
updatedAt = undefined;
|
|
20
|
+
params = undefined;
|
|
21
|
+
refIds = undefined;
|
|
22
|
+
refetchPromise = undefined;
|
|
23
|
+
fetchMorePromise = undefined;
|
|
24
|
+
attemptCount = 0;
|
|
25
|
+
unsubscribe = undefined;
|
|
26
|
+
relay;
|
|
27
|
+
_relayState = undefined;
|
|
28
|
+
wasOffline = false;
|
|
29
|
+
get relayState() {
|
|
30
|
+
const relayState = this._relayState;
|
|
31
|
+
if (!relayState) {
|
|
32
|
+
throw new Error('Relay state not initialized');
|
|
33
|
+
}
|
|
34
|
+
return relayState;
|
|
35
|
+
}
|
|
36
|
+
_nextPageParams = undefined;
|
|
37
|
+
get nextPageParams() {
|
|
38
|
+
// Streams don't have pagination
|
|
39
|
+
if (this.def.type === "stream" /* QueryType.Stream */) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
let params = this._nextPageParams;
|
|
43
|
+
const value = this.relayState.value;
|
|
44
|
+
if (params === undefined && value !== undefined) {
|
|
45
|
+
if (!Array.isArray(value)) {
|
|
46
|
+
throw new Error('Query result is not an array, this is a bug');
|
|
47
|
+
}
|
|
48
|
+
const infiniteDef = this.def;
|
|
49
|
+
const nextParams = infiniteDef.pagination?.getNextPageParams?.(value[value.length - 1]);
|
|
50
|
+
if (nextParams === undefined) {
|
|
51
|
+
// store null to indicate that there is no next page, but we've already calculated
|
|
52
|
+
params = null;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
// Clone current params
|
|
56
|
+
let hasDefinedParams = false;
|
|
57
|
+
const clonedParams = { ...this.params };
|
|
58
|
+
// iterate over the next page params and copy any defined values to the
|
|
59
|
+
for (const [key, value] of Object.entries(nextParams)) {
|
|
60
|
+
if (value !== undefined && value !== null) {
|
|
61
|
+
clonedParams[key] = value;
|
|
62
|
+
hasDefinedParams = true;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
this._nextPageParams = params = hasDefinedParams ? clonedParams : null;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return params ?? null;
|
|
69
|
+
}
|
|
70
|
+
constructor(def, queryClient, queryKey, params) {
|
|
71
|
+
setReactivePromise(this);
|
|
72
|
+
this.def = def;
|
|
73
|
+
this.queryClient = queryClient;
|
|
74
|
+
this.queryKey = queryKey;
|
|
75
|
+
this.params = params;
|
|
76
|
+
// Create the relay and handle activation/deactivation
|
|
77
|
+
this.relay = relay(state => {
|
|
78
|
+
this._relayState = state;
|
|
79
|
+
// Load from cache first, then fetch fresh data
|
|
80
|
+
this.queryClient.activateQuery(this);
|
|
81
|
+
// Track network status for reconnect handling
|
|
82
|
+
const networkManager = this.queryClient.networkManager;
|
|
83
|
+
const isOnline = networkManager.getOnlineSignal().value;
|
|
84
|
+
// Store initial offline state
|
|
85
|
+
this.wasOffline = !isOnline;
|
|
86
|
+
if (this.initialized) {
|
|
87
|
+
if (this.def.type === "stream" /* QueryType.Stream */) {
|
|
88
|
+
this.setupSubscription();
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
// Check if we just came back online
|
|
92
|
+
if (!this.wasOffline && isOnline) {
|
|
93
|
+
// We're back online - check if we should refresh
|
|
94
|
+
const refreshStaleOnReconnect = this.def.cache?.refreshStaleOnReconnect ?? true;
|
|
95
|
+
if (refreshStaleOnReconnect && this.isStale) {
|
|
96
|
+
this.refetch();
|
|
97
|
+
}
|
|
98
|
+
// Reset attempt count on reconnect
|
|
99
|
+
this.attemptCount = 0;
|
|
100
|
+
}
|
|
101
|
+
else if (this.isStale && !this.isPaused) {
|
|
102
|
+
this.refetch();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Update wasOffline for next check
|
|
106
|
+
this.wasOffline = !isOnline;
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
this.initialize();
|
|
110
|
+
}
|
|
111
|
+
// Return deactivation callback
|
|
112
|
+
return {
|
|
113
|
+
update: () => {
|
|
114
|
+
// For streams, unsubscribe and resubscribe to re-establish connection
|
|
115
|
+
if (this.def.type === "stream" /* QueryType.Stream */) {
|
|
116
|
+
this.setupSubscription();
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
// Network status changed - check if we should react
|
|
120
|
+
const currentlyOnline = networkManager.getOnlineSignal().value;
|
|
121
|
+
// If we just came back online
|
|
122
|
+
if (this.wasOffline && currentlyOnline) {
|
|
123
|
+
const refreshStaleOnReconnect = this.def.cache?.refreshStaleOnReconnect ?? true;
|
|
124
|
+
if (refreshStaleOnReconnect && this.isStale) {
|
|
125
|
+
state.setPromise(this.runQuery(this.params, true));
|
|
126
|
+
}
|
|
127
|
+
// Reset attempt count on reconnect
|
|
128
|
+
this.attemptCount = 0;
|
|
129
|
+
}
|
|
130
|
+
// Update wasOffline for next check
|
|
131
|
+
this.wasOffline = !currentlyOnline;
|
|
132
|
+
},
|
|
133
|
+
deactivate: () => {
|
|
134
|
+
// Last subscriber left, deactivate refetch and schedule memory eviction
|
|
135
|
+
if (this.def.type === "stream" /* QueryType.Stream */) {
|
|
136
|
+
// Unsubscribe from stream
|
|
137
|
+
if (this.unsubscribe) {
|
|
138
|
+
this.unsubscribe();
|
|
139
|
+
this.unsubscribe = undefined;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
else if (this.def.cache?.refetchInterval) {
|
|
143
|
+
this.queryClient.refetchManager.removeQuery(this);
|
|
144
|
+
}
|
|
145
|
+
// Schedule removal from memory using the global eviction manager
|
|
146
|
+
// This allows quick reactivation from memory if needed again soon
|
|
147
|
+
// Disk cache (if configured) will still be available after eviction
|
|
148
|
+
this.queryClient.memoryEvictionManager.scheduleEviction(this.queryKey);
|
|
149
|
+
},
|
|
150
|
+
};
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
// ======================================================
|
|
154
|
+
// ReactivePromise properties
|
|
155
|
+
// =====================================================
|
|
156
|
+
get value() {
|
|
157
|
+
return this.relay.value;
|
|
158
|
+
}
|
|
159
|
+
get error() {
|
|
160
|
+
return this.relay.error;
|
|
161
|
+
}
|
|
162
|
+
get isPending() {
|
|
163
|
+
return this.relay.isPending;
|
|
164
|
+
}
|
|
165
|
+
get isRejected() {
|
|
166
|
+
return this.relay.isRejected;
|
|
167
|
+
}
|
|
168
|
+
get isResolved() {
|
|
169
|
+
return this.relay.isResolved;
|
|
170
|
+
}
|
|
171
|
+
get isSettled() {
|
|
172
|
+
return this.relay.isSettled;
|
|
173
|
+
}
|
|
174
|
+
get isReady() {
|
|
175
|
+
return this.relay.isReady;
|
|
176
|
+
}
|
|
177
|
+
// TODO: Intimate APIs needed for `useReactive`, this is a code smell and
|
|
178
|
+
// we should find a better way to entangle these more generically
|
|
179
|
+
get _version() {
|
|
180
|
+
return this.relay._version;
|
|
181
|
+
}
|
|
182
|
+
get _signal() {
|
|
183
|
+
return this.relay._signal;
|
|
184
|
+
}
|
|
185
|
+
get _flags() {
|
|
186
|
+
return this.relay._flags;
|
|
187
|
+
}
|
|
188
|
+
// Forward Promise methods
|
|
189
|
+
then(onfulfilled, onrejected) {
|
|
190
|
+
return this.relay.then(onfulfilled, onrejected);
|
|
191
|
+
}
|
|
192
|
+
catch(onrejected) {
|
|
193
|
+
return this.relay.catch(onrejected);
|
|
194
|
+
}
|
|
195
|
+
finally(onfinally) {
|
|
196
|
+
return this.relay.finally(onfinally);
|
|
197
|
+
}
|
|
198
|
+
get [Symbol.toStringTag]() {
|
|
199
|
+
return 'QueryResult';
|
|
200
|
+
}
|
|
201
|
+
// ======================================================
|
|
202
|
+
// Internal fetch methods
|
|
203
|
+
// ======================================================
|
|
204
|
+
/**
|
|
205
|
+
* Initialize the query by loading from cache and fetching if stale
|
|
206
|
+
*/
|
|
207
|
+
async initialize() {
|
|
208
|
+
const state = this.relayState;
|
|
209
|
+
try {
|
|
210
|
+
this.initialized = true;
|
|
211
|
+
// Load from cache first
|
|
212
|
+
const cached = await this.queryClient.loadCachedQuery(this.def, this.queryKey);
|
|
213
|
+
if (cached !== undefined) {
|
|
214
|
+
const shape = this.def.shape;
|
|
215
|
+
state.value =
|
|
216
|
+
shape instanceof ValidatorDef
|
|
217
|
+
? parseEntities(cached.value, shape, this.queryClient, new Set())
|
|
218
|
+
: parseValue(cached.value, shape, this.def.id);
|
|
219
|
+
// Set the cached timestamp
|
|
220
|
+
this.updatedAt = cached.updatedAt;
|
|
221
|
+
// Set the cached reference IDs
|
|
222
|
+
this.refIds = cached.refIds;
|
|
223
|
+
}
|
|
224
|
+
if (this.def.type === "stream" /* QueryType.Stream */) {
|
|
225
|
+
this.setupSubscription();
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
if (cached !== undefined) {
|
|
229
|
+
// Check if data is stale
|
|
230
|
+
if (this.isStale) {
|
|
231
|
+
// Data is stale, trigger background refetch
|
|
232
|
+
this.refetch();
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
// No cached data, fetch fresh
|
|
237
|
+
state.setPromise(this.runQuery(this.params, true));
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
catch (error) {
|
|
242
|
+
// Relay will handle the error state automatically
|
|
243
|
+
state.setError(error);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Handle stream updates by merging with existing entity.
|
|
248
|
+
* Deep merging is handled automatically by parseEntities/setEntity.
|
|
249
|
+
*/
|
|
250
|
+
setupSubscription() {
|
|
251
|
+
this.unsubscribe?.();
|
|
252
|
+
const streamDef = this.def;
|
|
253
|
+
this.unsubscribe = streamDef.subscribeFn(this.queryClient.getContext(), this.params, update => {
|
|
254
|
+
const shapeDef = this.def.shape;
|
|
255
|
+
const entityRefs = this.refIds ?? new Set();
|
|
256
|
+
const parsedData = parseEntities(update, shapeDef, this.queryClient, entityRefs);
|
|
257
|
+
// Update the relay state
|
|
258
|
+
this.relayState.value = parsedData;
|
|
259
|
+
this.updatedAt = Date.now();
|
|
260
|
+
this.refIds = entityRefs;
|
|
261
|
+
// Cache the data
|
|
262
|
+
this.queryClient.saveQueryData(this.def, this.queryKey, parsedData, this.updatedAt, entityRefs);
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Fetches fresh data, updates the cache, and updates updatedAt timestamp
|
|
267
|
+
*/
|
|
268
|
+
async runQuery(params, reset = false) {
|
|
269
|
+
// Check if paused before attempting fetch
|
|
270
|
+
if (this.isPaused) {
|
|
271
|
+
throw new Error('Query is paused due to network status');
|
|
272
|
+
}
|
|
273
|
+
const { retries, retryDelay } = this.getRetryConfig();
|
|
274
|
+
let lastError;
|
|
275
|
+
// Attempt fetch with retries
|
|
276
|
+
for (let attempt = 0; attempt <= retries; attempt++) {
|
|
277
|
+
try {
|
|
278
|
+
const queryDef = this.def;
|
|
279
|
+
const freshData = await queryDef.fetchFn(this.queryClient.getContext(), params);
|
|
280
|
+
// Success! Reset attempt count
|
|
281
|
+
this.attemptCount = 0;
|
|
282
|
+
// Parse and cache the fresh data
|
|
283
|
+
let entityRefs;
|
|
284
|
+
const isInfinite = this.def.type === "infiniteQuery" /* QueryType.InfiniteQuery */;
|
|
285
|
+
if (isInfinite && !reset && this.refIds !== undefined) {
|
|
286
|
+
entityRefs = this.refIds;
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
entityRefs = new Set();
|
|
290
|
+
}
|
|
291
|
+
const shape = this.def.shape;
|
|
292
|
+
const parsedData = shape instanceof ValidatorDef
|
|
293
|
+
? parseEntities(freshData, shape, this.queryClient, entityRefs)
|
|
294
|
+
: parseValue(freshData, shape, this.def.id);
|
|
295
|
+
let queryData;
|
|
296
|
+
if (isInfinite) {
|
|
297
|
+
const prevQueryData = this.relayState.value;
|
|
298
|
+
queryData = reset || prevQueryData === undefined ? [parsedData] : [...prevQueryData, parsedData];
|
|
299
|
+
}
|
|
300
|
+
else {
|
|
301
|
+
queryData = parsedData;
|
|
302
|
+
}
|
|
303
|
+
let updatedAt;
|
|
304
|
+
if (reset) {
|
|
305
|
+
updatedAt = this.updatedAt = Date.now();
|
|
306
|
+
}
|
|
307
|
+
else {
|
|
308
|
+
updatedAt = this.updatedAt ??= Date.now();
|
|
309
|
+
}
|
|
310
|
+
this._nextPageParams = undefined;
|
|
311
|
+
// Cache the data (synchronous, fire-and-forget)
|
|
312
|
+
this.queryClient.saveQueryData(this.def, this.queryKey, queryData, updatedAt, entityRefs);
|
|
313
|
+
// Update the timestamp
|
|
314
|
+
this.updatedAt = Date.now();
|
|
315
|
+
return queryData;
|
|
316
|
+
}
|
|
317
|
+
catch (error) {
|
|
318
|
+
lastError = error;
|
|
319
|
+
this.attemptCount = attempt + 1;
|
|
320
|
+
// If we've exhausted retries, throw the error
|
|
321
|
+
if (attempt >= retries) {
|
|
322
|
+
throw error;
|
|
323
|
+
}
|
|
324
|
+
// Wait before retrying (unless paused)
|
|
325
|
+
const delay = retryDelay(attempt);
|
|
326
|
+
await new Promise(resolve => setTimeout(resolve, delay));
|
|
327
|
+
// Check if paused during retry delay
|
|
328
|
+
if (this.isPaused) {
|
|
329
|
+
throw new Error('Query is paused due to network status');
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
// Should never reach here, but TypeScript needs it
|
|
334
|
+
throw lastError;
|
|
335
|
+
}
|
|
336
|
+
// ======================================================
|
|
337
|
+
// Public methods
|
|
338
|
+
// ======================================================
|
|
339
|
+
refetch() {
|
|
340
|
+
if (this.def.type === "stream" /* QueryType.Stream */) {
|
|
341
|
+
throw new Error('Cannot refetch a stream query');
|
|
342
|
+
}
|
|
343
|
+
if (this.fetchMorePromise) {
|
|
344
|
+
throw new Error('Query is fetching more, cannot refetch');
|
|
345
|
+
}
|
|
346
|
+
if (this.refetchPromise) {
|
|
347
|
+
return this.refetchPromise;
|
|
348
|
+
}
|
|
349
|
+
// Clear memoized nextPageParams so it's recalculated after refetch
|
|
350
|
+
this._nextPageParams = undefined;
|
|
351
|
+
// Set the signal before any async operations so it's immediately visible
|
|
352
|
+
// Use untrack to avoid reactive violations when called from reactive context
|
|
353
|
+
this.isRefetchingSignal.value = true;
|
|
354
|
+
this._version.update(v => v + 1);
|
|
355
|
+
const promise = this.runQuery(this.params, true)
|
|
356
|
+
.then(result => {
|
|
357
|
+
this.relayState.value = result;
|
|
358
|
+
return result;
|
|
359
|
+
})
|
|
360
|
+
.catch((error) => {
|
|
361
|
+
this.relayState.setError(error);
|
|
362
|
+
return Promise.reject(error);
|
|
363
|
+
})
|
|
364
|
+
.finally(() => {
|
|
365
|
+
this._version.update(v => v + 1);
|
|
366
|
+
this.isRefetchingSignal.value = false;
|
|
367
|
+
this.refetchPromise = undefined;
|
|
368
|
+
});
|
|
369
|
+
this.refetchPromise = promise;
|
|
370
|
+
return promise;
|
|
371
|
+
}
|
|
372
|
+
fetchNextPage() {
|
|
373
|
+
if (this.def.type === "stream" /* QueryType.Stream */) {
|
|
374
|
+
throw new Error('Cannot fetch next page on a stream query');
|
|
375
|
+
}
|
|
376
|
+
if (this.refetchPromise) {
|
|
377
|
+
return Promise.reject(new Error('Query is refetching, cannot fetch next page'));
|
|
378
|
+
}
|
|
379
|
+
if (this.fetchMorePromise) {
|
|
380
|
+
return this.fetchMorePromise;
|
|
381
|
+
}
|
|
382
|
+
// Read nextPageParams in untracked context to avoid reactive violations
|
|
383
|
+
const nextPageParams = this.nextPageParams;
|
|
384
|
+
if (!nextPageParams) {
|
|
385
|
+
return Promise.reject(new Error('No next page params'));
|
|
386
|
+
}
|
|
387
|
+
// Set the signal before any async operations so it's immediately visible
|
|
388
|
+
// Use untrack to avoid reactive violations when called from reactive context
|
|
389
|
+
this.isFetchingMoreSignal.value = true;
|
|
390
|
+
this._version.update(v => v + 1);
|
|
391
|
+
const promise = this.runQuery(nextPageParams, false)
|
|
392
|
+
.then(result => {
|
|
393
|
+
this.relayState.value = result;
|
|
394
|
+
return result;
|
|
395
|
+
})
|
|
396
|
+
.catch((error) => {
|
|
397
|
+
this.relayState.setError(error);
|
|
398
|
+
return Promise.reject(error);
|
|
399
|
+
})
|
|
400
|
+
.finally(() => {
|
|
401
|
+
this._version.update(v => v + 1);
|
|
402
|
+
this.isFetchingMoreSignal.value = false;
|
|
403
|
+
this.fetchMorePromise = undefined;
|
|
404
|
+
});
|
|
405
|
+
this.fetchMorePromise = promise;
|
|
406
|
+
return promise;
|
|
407
|
+
}
|
|
408
|
+
// ======================================================
|
|
409
|
+
// Public properties
|
|
410
|
+
// ======================================================
|
|
411
|
+
get isRefetching() {
|
|
412
|
+
return this.isRefetchingSignal.value;
|
|
413
|
+
}
|
|
414
|
+
get isFetchingMore() {
|
|
415
|
+
return this.isFetchingMoreSignal.value;
|
|
416
|
+
}
|
|
417
|
+
get isFetching() {
|
|
418
|
+
return this.relay.isPending || this.isRefetching || this.isFetchingMore;
|
|
419
|
+
}
|
|
420
|
+
get hasNextPage() {
|
|
421
|
+
return this.nextPageParams !== null;
|
|
422
|
+
}
|
|
423
|
+
get isStale() {
|
|
424
|
+
// Streams are never stale - they're always receiving updates
|
|
425
|
+
if (this.def.type === "stream" /* QueryType.Stream */) {
|
|
426
|
+
return false;
|
|
427
|
+
}
|
|
428
|
+
if (this.updatedAt === undefined) {
|
|
429
|
+
return true; // No data yet, needs fetch
|
|
430
|
+
}
|
|
431
|
+
const staleTime = this.def.cache?.staleTime ?? 0;
|
|
432
|
+
return Date.now() - this.updatedAt >= staleTime;
|
|
433
|
+
}
|
|
434
|
+
get isPaused() {
|
|
435
|
+
// Streams handle their own connection state
|
|
436
|
+
if (this.def.type === "stream" /* QueryType.Stream */) {
|
|
437
|
+
return false;
|
|
438
|
+
}
|
|
439
|
+
const networkMode = this.def.cache?.networkMode ?? NetworkMode.Online;
|
|
440
|
+
const networkManager = this.queryClient.networkManager;
|
|
441
|
+
// Read the online signal to make this reactive
|
|
442
|
+
const isOnline = networkManager.getOnlineSignal().value;
|
|
443
|
+
switch (networkMode) {
|
|
444
|
+
case NetworkMode.Always:
|
|
445
|
+
return false;
|
|
446
|
+
case NetworkMode.Online:
|
|
447
|
+
return !isOnline;
|
|
448
|
+
case NetworkMode.OfflineFirst:
|
|
449
|
+
// Only paused if we have no cached data AND we're offline
|
|
450
|
+
return !isOnline && this.updatedAt === undefined;
|
|
451
|
+
default:
|
|
452
|
+
return false;
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
getRetryConfig() {
|
|
456
|
+
// Streams don't have retry config
|
|
457
|
+
if (this.def.type === "stream" /* QueryType.Stream */) {
|
|
458
|
+
return { retries: 0, retryDelay: () => 0 };
|
|
459
|
+
}
|
|
460
|
+
const retryOption = this.def.cache?.retry;
|
|
461
|
+
const isServer = this.queryClient.isServer;
|
|
462
|
+
// Default retry count: 3 on client, 0 on server
|
|
463
|
+
let retries;
|
|
464
|
+
let retryDelay;
|
|
465
|
+
if (retryOption === false) {
|
|
466
|
+
retries = 0;
|
|
467
|
+
}
|
|
468
|
+
else if (retryOption === undefined) {
|
|
469
|
+
retries = isServer ? 0 : 3;
|
|
470
|
+
}
|
|
471
|
+
else if (typeof retryOption === 'number') {
|
|
472
|
+
retries = retryOption;
|
|
473
|
+
}
|
|
474
|
+
else {
|
|
475
|
+
retries = retryOption.retries;
|
|
476
|
+
}
|
|
477
|
+
// Default exponential backoff: 1000ms * 2^attempt
|
|
478
|
+
if (typeof retryOption === 'object' && retryOption.retryDelay) {
|
|
479
|
+
retryDelay = retryOption.retryDelay;
|
|
480
|
+
}
|
|
481
|
+
else {
|
|
482
|
+
retryDelay = (attempt) => 1000 * Math.pow(2, attempt);
|
|
483
|
+
}
|
|
484
|
+
return { retries, retryDelay };
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
//# sourceMappingURL=QueryResult.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryResult.js","sourceRoot":"","sources":["../../src/QueryResult.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryStore.d.ts","sourceRoot":"","sources":["../../src/QueryStore.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"QueryStore.d.ts","sourceRoot":"","sources":["../../src/QueryStore.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/QueryStore.js
CHANGED
|
@@ -105,9 +105,7 @@ export class SyncQueryStore {
|
|
|
105
105
|
this.kv.setBuffer(queueKeyFor(queryDef.id), queue);
|
|
106
106
|
}
|
|
107
107
|
else if (queue.length !== maxCount) {
|
|
108
|
-
|
|
109
|
-
newQueue.set(queue);
|
|
110
|
-
queue = newQueue;
|
|
108
|
+
queue = new Uint32Array(queue.buffer, 0, maxCount);
|
|
111
109
|
this.kv.setBuffer(queueKeyFor(queryDef.id), queue);
|
|
112
110
|
}
|
|
113
111
|
this.queues.set(queryDef.id, queue);
|
|
@@ -393,9 +391,7 @@ export class AsyncQueryStore {
|
|
|
393
391
|
await this.delegate.setBuffer(queueKeyFor(queryDefId), queue);
|
|
394
392
|
}
|
|
395
393
|
else if (queue.length !== maxCount) {
|
|
396
|
-
|
|
397
|
-
newQueue.set(queue);
|
|
398
|
-
queue = newQueue;
|
|
394
|
+
queue = new Uint32Array(queue.buffer, 0, maxCount);
|
|
399
395
|
await this.delegate.setBuffer(queueKeyFor(queryDefId), queue);
|
|
400
396
|
}
|
|
401
397
|
this.queues.set(queryDefId, queue);
|