katanakit-js 4.0.2 → 4.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +54 -55
- package/dist/adapters/angular/index.d.ts +1 -0
- package/dist/adapters/angular/index.d.ts.map +1 -1
- package/dist/adapters/angular/index.js +1 -0
- package/dist/adapters/angular/index.js.map +1 -1
- package/dist/adapters/angular/query.d.ts +56 -73
- package/dist/adapters/angular/query.d.ts.map +1 -1
- package/dist/adapters/angular/query.js +66 -129
- package/dist/adapters/angular/query.js.map +1 -1
- package/dist/adapters/react/index.d.ts +1 -0
- package/dist/adapters/react/index.d.ts.map +1 -1
- package/dist/adapters/react/index.js +1 -0
- package/dist/adapters/react/index.js.map +1 -1
- package/dist/adapters/react/query.d.ts +27 -72
- package/dist/adapters/react/query.d.ts.map +1 -1
- package/dist/adapters/react/query.js +51 -165
- package/dist/adapters/react/query.js.map +1 -1
- package/dist/adapters/solid/index.d.ts +1 -0
- package/dist/adapters/solid/index.d.ts.map +1 -1
- package/dist/adapters/solid/index.js +1 -0
- package/dist/adapters/solid/index.js.map +1 -1
- package/dist/adapters/solid/query.d.ts +32 -74
- package/dist/adapters/solid/query.d.ts.map +1 -1
- package/dist/adapters/solid/query.js +56 -131
- package/dist/adapters/solid/query.js.map +1 -1
- package/dist/adapters/svelte/index.d.ts +1 -0
- package/dist/adapters/svelte/index.d.ts.map +1 -1
- package/dist/adapters/svelte/index.js +1 -0
- package/dist/adapters/svelte/index.js.map +1 -1
- package/dist/adapters/svelte/query.d.ts +24 -72
- package/dist/adapters/svelte/query.d.ts.map +1 -1
- package/dist/adapters/svelte/query.js +41 -135
- package/dist/adapters/svelte/query.js.map +1 -1
- package/dist/adapters/vanilla/index.d.ts +3 -0
- package/dist/adapters/vanilla/index.d.ts.map +1 -0
- package/dist/adapters/vanilla/index.js +3 -0
- package/dist/adapters/vanilla/index.js.map +1 -0
- package/dist/adapters/vanilla/query.d.ts +69 -0
- package/dist/adapters/vanilla/query.d.ts.map +1 -0
- package/dist/adapters/vanilla/query.js +76 -0
- package/dist/adapters/vanilla/query.js.map +1 -0
- package/dist/adapters/vue/index.d.ts +1 -0
- package/dist/adapters/vue/index.d.ts.map +1 -1
- package/dist/adapters/vue/index.js +1 -0
- package/dist/adapters/vue/index.js.map +1 -1
- package/dist/adapters/vue/query.d.ts +35 -86
- package/dist/adapters/vue/query.d.ts.map +1 -1
- package/dist/adapters/vue/query.js +57 -168
- package/dist/adapters/vue/query.js.map +1 -1
- package/dist/core/services/query.service.d.ts +87 -134
- package/dist/core/services/query.service.d.ts.map +1 -1
- package/dist/core/services/query.service.js +99 -378
- package/dist/core/services/query.service.js.map +1 -1
- package/package.json +10 -3
|
@@ -1,389 +1,110 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}, {})
|
|
13
|
-
: v);
|
|
14
|
-
}
|
|
15
|
-
function delayMs(base, attempt) {
|
|
16
|
-
return Math.min(base * 2 ** attempt, 30_000);
|
|
17
|
-
}
|
|
18
|
-
function isKeyPrefix(prefix, key) {
|
|
19
|
-
if (prefix.length > key.length)
|
|
20
|
-
return false;
|
|
21
|
-
return prefix.every((part, index) => part === key[index]);
|
|
22
|
-
}
|
|
23
|
-
// ============================================================
|
|
24
|
-
// QueryCache — manages individual query entries
|
|
25
|
-
// ============================================================
|
|
26
|
-
class QueryCache {
|
|
27
|
-
entries = new Map();
|
|
28
|
-
get(hash) {
|
|
29
|
-
return this.entries.get(hash);
|
|
30
|
-
}
|
|
31
|
-
set(hash, entry) {
|
|
32
|
-
this.entries.set(hash, entry);
|
|
33
|
-
}
|
|
34
|
-
delete(hash) {
|
|
35
|
-
const entry = this.entries.get(hash);
|
|
36
|
-
if (entry?.gcTimeout)
|
|
37
|
-
clearTimeout(entry.gcTimeout);
|
|
38
|
-
this.entries.delete(hash);
|
|
39
|
-
}
|
|
40
|
-
entries_() {
|
|
41
|
-
return this.entries;
|
|
42
|
-
}
|
|
43
|
-
scheduleGC(hash, cacheTime) {
|
|
44
|
-
const entry = this.get(hash);
|
|
45
|
-
if (!entry || entry.subscriberCount > 0)
|
|
46
|
-
return;
|
|
47
|
-
entry.gcTimeout = setTimeout(() => {
|
|
48
|
-
this.delete(hash);
|
|
49
|
-
}, cacheTime);
|
|
50
|
-
}
|
|
51
|
-
cancelGC(hash) {
|
|
52
|
-
const entry = this.get(hash);
|
|
53
|
-
if (entry?.gcTimeout) {
|
|
54
|
-
clearTimeout(entry.gcTimeout);
|
|
55
|
-
entry.gcTimeout = null;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
// ============================================================
|
|
60
|
-
// QueryClient — the main public API
|
|
61
|
-
// ============================================================
|
|
62
|
-
export class QueryClient {
|
|
63
|
-
cache;
|
|
64
|
-
defaults;
|
|
65
|
-
constructor(config = {}) {
|
|
66
|
-
this.cache = new QueryCache();
|
|
67
|
-
this.defaults = config.defaultOptions ?? {};
|
|
68
|
-
}
|
|
69
|
-
// ----------------------------------------------------------
|
|
70
|
-
// Core: fetchQuery
|
|
71
|
-
// ----------------------------------------------------------
|
|
72
|
-
/**
|
|
73
|
-
* Fetches data for a query key, using the cache when possible.
|
|
74
|
-
* Returns the cached data immediately if fresh, then optionally
|
|
75
|
-
* refetches in the background (stale-while-revalidate).
|
|
76
|
-
*/
|
|
77
|
-
async fetchQuery(config) {
|
|
78
|
-
const mergedConfig = this.mergeDefaults(config);
|
|
79
|
-
const hash = hashQueryKey(mergedConfig.queryKey);
|
|
80
|
-
let entry = this.cache.get(hash);
|
|
81
|
-
if (!entry) {
|
|
82
|
-
entry = this.createEntry(mergedConfig);
|
|
83
|
-
this.cache.set(hash, entry);
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
// `subscribe()` may have created a placeholder entry whose `queryFn`
|
|
87
|
-
// returns an empty result. Always refresh the config with the real one.
|
|
88
|
-
entry.config = mergedConfig;
|
|
89
|
-
}
|
|
90
|
-
// Cancel GC if the entry was scheduled for removal.
|
|
91
|
-
this.cache.cancelGC(hash);
|
|
92
|
-
// A new fetch supersedes any prior cancellation.
|
|
93
|
-
entry.cancelled = false;
|
|
94
|
-
// If data is fresh, return it immediately.
|
|
95
|
-
if (entry.state.status === "success" && !this.isStale(entry)) {
|
|
96
|
-
return entry.state.data;
|
|
97
|
-
}
|
|
98
|
-
// If a fetch is already in flight, deduplicate.
|
|
99
|
-
if (entry.fetchPromise) {
|
|
100
|
-
const result = await entry.fetchPromise;
|
|
101
|
-
if (result.ok)
|
|
102
|
-
return result.data;
|
|
103
|
-
throw result.error;
|
|
104
|
-
}
|
|
105
|
-
// Execute fetch.
|
|
106
|
-
return this.executeFetch(entry, hash);
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Prefetches data into the cache without returning it.
|
|
110
|
-
* Useful for anticipatory fetching.
|
|
111
|
-
*/
|
|
112
|
-
async prefetchQuery(config) {
|
|
113
|
-
try {
|
|
114
|
-
await this.fetchQuery(config);
|
|
115
|
-
}
|
|
116
|
-
catch {
|
|
117
|
-
// Prefetch errors are silently ignored.
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Returns the cached data for a query key, or undefined if not cached.
|
|
122
|
-
*/
|
|
123
|
-
getQueryData(queryKey) {
|
|
124
|
-
const hash = hashQueryKey(queryKey);
|
|
125
|
-
const entry = this.cache.get(hash);
|
|
126
|
-
return entry?.state.data ?? undefined;
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Sets query data directly in the cache (optimistic updates).
|
|
130
|
-
*/
|
|
131
|
-
setQueryData(queryKey, updater) {
|
|
132
|
-
const hash = hashQueryKey(queryKey);
|
|
133
|
-
const entry = this.cache.get(hash);
|
|
134
|
-
if (!entry)
|
|
135
|
-
return;
|
|
136
|
-
const oldData = entry.state.data;
|
|
137
|
-
const newData = typeof updater === "function" ? updater(oldData) : updater;
|
|
138
|
-
entry.state = {
|
|
139
|
-
...entry.state,
|
|
140
|
-
data: newData,
|
|
141
|
-
status: "success",
|
|
142
|
-
dataUpdatedAt: Date.now(),
|
|
143
|
-
isLoading: false,
|
|
144
|
-
isSuccess: true,
|
|
145
|
-
isError: false,
|
|
146
|
-
};
|
|
147
|
-
this.notifyObservers(entry);
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Marks queries matching the filter as stale and optionally refetches
|
|
151
|
-
* active queries.
|
|
152
|
-
*/
|
|
153
|
-
async invalidateQueries(filters) {
|
|
154
|
-
const prefixKey = filters?.queryKey;
|
|
155
|
-
for (const entry of this.cache.entries_().values()) {
|
|
156
|
-
const entryKey = entry.config.queryKey;
|
|
157
|
-
if (prefixKey && !isKeyPrefix(prefixKey, entryKey))
|
|
158
|
-
continue;
|
|
159
|
-
entry.state.isStale = true;
|
|
160
|
-
this.notifyObservers(entry);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* Removes a query from the cache.
|
|
165
|
-
*/
|
|
166
|
-
removeQueries(queryKey) {
|
|
167
|
-
const hash = hashQueryKey(queryKey);
|
|
168
|
-
this.cache.delete(hash);
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Clears the entire cache.
|
|
172
|
-
*/
|
|
173
|
-
clear() {
|
|
174
|
-
for (const [hash] of this.cache.entries_()) {
|
|
175
|
-
this.cache.delete(hash);
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
/**
|
|
179
|
-
* Returns the current state of a cached query (reactive signal).
|
|
180
|
-
* Subscribes to future updates.
|
|
181
|
-
*/
|
|
182
|
-
getQueryState(queryKey) {
|
|
183
|
-
const hash = hashQueryKey(queryKey);
|
|
184
|
-
const entry = this.cache.get(hash);
|
|
185
|
-
return entry?.state;
|
|
186
|
-
}
|
|
187
|
-
/**
|
|
188
|
-
* Subscribes to state changes for a specific query.
|
|
189
|
-
* Returns an unsubscribe function.
|
|
190
|
-
*/
|
|
191
|
-
subscribe(queryKey, observer) {
|
|
192
|
-
const hash = hashQueryKey(queryKey);
|
|
193
|
-
let entry = this.cache.get(hash);
|
|
194
|
-
if (!entry) {
|
|
195
|
-
entry = this.createEntry({
|
|
196
|
-
queryKey,
|
|
197
|
-
queryFn: () => Promise.resolve({ data: null, error: null, url: "", status: 0, ok: true }),
|
|
198
|
-
});
|
|
199
|
-
this.cache.set(hash, entry);
|
|
200
|
-
}
|
|
201
|
-
entry.observers.add(observer);
|
|
202
|
-
entry.subscriberCount++;
|
|
203
|
-
this.cache.cancelGC(hash);
|
|
204
|
-
const captured = entry;
|
|
205
|
-
return () => {
|
|
206
|
-
captured.observers.delete(observer);
|
|
207
|
-
captured.subscriberCount--;
|
|
208
|
-
if (captured.subscriberCount === 0) {
|
|
209
|
-
this.cache.scheduleGC(hash, captured.config.cacheTime ?? FIVE_MINUTES);
|
|
210
|
-
}
|
|
211
|
-
};
|
|
212
|
-
}
|
|
213
|
-
/**
|
|
214
|
-
* Cancels an in-flight request for a query.
|
|
215
|
-
*
|
|
216
|
-
* Marks the entry as cancelled; the next time its fetch resolves, the
|
|
217
|
-
* result is discarded without updating state or notifying observers.
|
|
218
|
-
*/
|
|
219
|
-
cancelQueries(queryKey) {
|
|
220
|
-
const hash = hashQueryKey(queryKey);
|
|
221
|
-
const entry = this.cache.get(hash);
|
|
222
|
-
if (!entry)
|
|
223
|
-
return;
|
|
224
|
-
entry.cancelled = true;
|
|
225
|
-
entry.fetchPromise = null;
|
|
226
|
-
}
|
|
227
|
-
// ----------------------------------------------------------
|
|
228
|
-
// Internal
|
|
229
|
-
// ----------------------------------------------------------
|
|
230
|
-
mergeDefaults(config) {
|
|
231
|
-
const qDefaults = this.defaults?.queries ?? {};
|
|
232
|
-
return {
|
|
233
|
-
staleTime: 0,
|
|
234
|
-
cacheTime: FIVE_MINUTES,
|
|
235
|
-
retry: 3,
|
|
236
|
-
retryDelay: 1000,
|
|
237
|
-
refetchOnWindowFocus: true,
|
|
238
|
-
refetchOnReconnect: true,
|
|
239
|
-
enabled: true,
|
|
240
|
-
...qDefaults,
|
|
241
|
-
...config,
|
|
242
|
-
};
|
|
243
|
-
}
|
|
244
|
-
createEntry(config) {
|
|
245
|
-
return {
|
|
246
|
-
state: {
|
|
247
|
-
status: "idle",
|
|
248
|
-
data: null,
|
|
249
|
-
error: null,
|
|
250
|
-
isLoading: false,
|
|
251
|
-
isSuccess: false,
|
|
252
|
-
isError: false,
|
|
253
|
-
isStale: true,
|
|
254
|
-
dataUpdatedAt: 0,
|
|
255
|
-
errorUpdatedAt: 0,
|
|
256
|
-
fetchCount: 0,
|
|
257
|
-
},
|
|
258
|
-
config,
|
|
259
|
-
observers: new Set(),
|
|
260
|
-
gcTimeout: null,
|
|
261
|
-
retryCount: 0,
|
|
262
|
-
fetchPromise: null,
|
|
263
|
-
subscriberCount: 0,
|
|
264
|
-
cancelled: false,
|
|
265
|
-
};
|
|
266
|
-
}
|
|
267
|
-
isStale(entry) {
|
|
268
|
-
if (entry.state.isStale)
|
|
269
|
-
return true;
|
|
270
|
-
const staleTime = entry.config.staleTime ?? 0;
|
|
271
|
-
if (staleTime === Infinity)
|
|
272
|
-
return false;
|
|
273
|
-
return Date.now() - entry.state.dataUpdatedAt > staleTime;
|
|
274
|
-
}
|
|
275
|
-
async executeFetch(entry, hash) {
|
|
276
|
-
const maxRetries = entry.config.retry ?? 3;
|
|
277
|
-
const baseDelay = entry.config.retryDelay ?? 1000;
|
|
278
|
-
entry.state = {
|
|
279
|
-
...entry.state,
|
|
280
|
-
status: "loading",
|
|
281
|
-
isLoading: true,
|
|
282
|
-
fetchCount: entry.state.fetchCount + 1,
|
|
283
|
-
};
|
|
284
|
-
this.notifyObservers(entry);
|
|
285
|
-
const fetchWithRetry = async (attempt) => {
|
|
286
|
-
const result = await entry.config.queryFn();
|
|
287
|
-
if (!result.ok && attempt < maxRetries) {
|
|
288
|
-
await new Promise((r) => setTimeout(r, delayMs(baseDelay, attempt)));
|
|
289
|
-
entry.retryCount = attempt + 1;
|
|
290
|
-
return fetchWithRetry(attempt + 1);
|
|
291
|
-
}
|
|
292
|
-
return result;
|
|
293
|
-
};
|
|
294
|
-
const fetchPromise = fetchWithRetry(0);
|
|
295
|
-
entry.fetchPromise = fetchPromise;
|
|
296
|
-
let result;
|
|
297
|
-
try {
|
|
298
|
-
result = await fetchPromise;
|
|
299
|
-
}
|
|
300
|
-
catch (err) {
|
|
301
|
-
entry.fetchPromise = null;
|
|
302
|
-
const error = err instanceof Error
|
|
303
|
-
? { message: err.message, status: 0 }
|
|
304
|
-
: { message: String(err), status: 0 };
|
|
305
|
-
this.applyError(entry, hash, error);
|
|
306
|
-
throw error;
|
|
307
|
-
}
|
|
308
|
-
entry.fetchPromise = null;
|
|
309
|
-
// Cancellation wins over result application.
|
|
310
|
-
if (entry.cancelled) {
|
|
311
|
-
return Promise.reject({
|
|
312
|
-
message: "Query cancelled",
|
|
313
|
-
status: 0,
|
|
314
|
-
});
|
|
315
|
-
}
|
|
316
|
-
// If the entry was removed or superseded, discard.
|
|
317
|
-
if (this.cache.get(hash) !== entry) {
|
|
318
|
-
return result.ok ? result.data : Promise.reject(result.error);
|
|
319
|
-
}
|
|
320
|
-
if (result.ok) {
|
|
321
|
-
entry.state = {
|
|
322
|
-
status: "success",
|
|
323
|
-
data: result.data,
|
|
324
|
-
error: null,
|
|
325
|
-
isLoading: false,
|
|
326
|
-
isSuccess: true,
|
|
327
|
-
isError: false,
|
|
328
|
-
isStale: false,
|
|
329
|
-
dataUpdatedAt: Date.now(),
|
|
330
|
-
errorUpdatedAt: entry.state.errorUpdatedAt,
|
|
331
|
-
fetchCount: entry.state.fetchCount,
|
|
332
|
-
};
|
|
333
|
-
entry.retryCount = 0;
|
|
334
|
-
entry.config.onSuccess?.(result.data);
|
|
335
|
-
this.notifyObservers(entry);
|
|
336
|
-
return result.data;
|
|
337
|
-
}
|
|
338
|
-
this.applyError(entry, hash, result.error);
|
|
339
|
-
entry.config.onError?.(result.error);
|
|
340
|
-
throw result.error;
|
|
341
|
-
}
|
|
342
|
-
applyError(entry, hash, error) {
|
|
343
|
-
if (this.cache.get(hash) !== entry)
|
|
344
|
-
return;
|
|
345
|
-
entry.state = {
|
|
346
|
-
...entry.state,
|
|
347
|
-
status: "error",
|
|
348
|
-
error,
|
|
349
|
-
isLoading: false,
|
|
350
|
-
isSuccess: false,
|
|
351
|
-
isError: true,
|
|
352
|
-
errorUpdatedAt: Date.now(),
|
|
353
|
-
};
|
|
354
|
-
this.notifyObservers(entry);
|
|
355
|
-
}
|
|
356
|
-
notifyObservers(entry) {
|
|
357
|
-
for (const observer of entry.observers) {
|
|
358
|
-
try {
|
|
359
|
-
observer(entry.state);
|
|
360
|
-
}
|
|
361
|
-
catch {
|
|
362
|
-
// Observer errors are swallowed.
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
}
|
|
367
|
-
// ============================================================
|
|
368
|
-
// Singleton facade
|
|
369
|
-
// ============================================================
|
|
1
|
+
import { QueryClient, } from "@tanstack/query-core";
|
|
2
|
+
/**
|
|
3
|
+
* Query engine — a thin facade over {@link https://tanstack.com/query | TanStack Query Core}.
|
|
4
|
+
*
|
|
5
|
+
* The full `@tanstack/query-core` API is re-exported from here (and therefore
|
|
6
|
+
* from `katanakit-js`), so consumers get TanStack's cache, retries, stale-while-
|
|
7
|
+
* revalidate, focus/reconnect refetch, garbage collection and infinite queries
|
|
8
|
+
* without installing TanStack separately.
|
|
9
|
+
*/
|
|
10
|
+
export * from "@tanstack/query-core";
|
|
11
|
+
/** Module-level {@link QueryClient} singleton shared by every adapter (browser). */
|
|
370
12
|
let instance = null;
|
|
371
13
|
/**
|
|
372
|
-
*
|
|
373
|
-
*
|
|
14
|
+
* Creates a **new** {@link QueryClient}. Use this on the server (SSR) to get one
|
|
15
|
+
* client per request and avoid sharing a process-global cache across users.
|
|
16
|
+
*
|
|
17
|
+
* @param config - TanStack {@link QueryClientConfig} (caches, default options).
|
|
18
|
+
* @returns A fresh {@link QueryClient}.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```ts
|
|
22
|
+
* // Server: one client per request, then dehydrate/hydrate.
|
|
23
|
+
* const client = useCreateQueryClient();
|
|
24
|
+
* await client.prefetchQuery({ queryKey, queryFn });
|
|
25
|
+
* const state = dehydrate(client);
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export function useCreateQueryClient(config = {}) {
|
|
29
|
+
return new QueryClient(config);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Returns the shared {@link QueryClient} singleton, creating one on first call.
|
|
33
|
+
*
|
|
34
|
+
* This is a **process-global** instance: it is the right default in the browser,
|
|
35
|
+
* but on the server it would leak cached data across requests. Use
|
|
36
|
+
* {@link useCreateQueryClient} per request when running under SSR.
|
|
37
|
+
*
|
|
38
|
+
* @returns The shared {@link QueryClient}.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```ts
|
|
42
|
+
* import { useQueryClient } from "katanakit-js";
|
|
43
|
+
*
|
|
44
|
+
* const client = useQueryClient();
|
|
45
|
+
* await client.invalidateQueries({ queryKey: ["users"] });
|
|
46
|
+
* ```
|
|
374
47
|
*/
|
|
375
48
|
export function useQueryClient() {
|
|
376
|
-
|
|
377
|
-
instance = new QueryClient();
|
|
378
|
-
}
|
|
379
|
-
return instance;
|
|
49
|
+
return (instance ??= new QueryClient());
|
|
380
50
|
}
|
|
381
51
|
/**
|
|
382
|
-
*
|
|
383
|
-
*
|
|
52
|
+
* Replaces the shared {@link QueryClient} singleton with a configured instance.
|
|
53
|
+
* The previous client's caches are cleared before swapping.
|
|
54
|
+
*
|
|
55
|
+
* @param config - TanStack {@link QueryClientConfig} (caches, default options).
|
|
56
|
+
* @returns The newly created {@link QueryClient}.
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```ts
|
|
60
|
+
* import { useInitQueryClient } from "katanakit-js";
|
|
61
|
+
*
|
|
62
|
+
* useInitQueryClient({
|
|
63
|
+
* defaultOptions: { queries: { staleTime: 60_000, retry: 2 } },
|
|
64
|
+
* });
|
|
65
|
+
* ```
|
|
384
66
|
*/
|
|
385
|
-
export function useInitQueryClient(config) {
|
|
67
|
+
export function useInitQueryClient(config = {}) {
|
|
68
|
+
instance?.clear();
|
|
386
69
|
instance = new QueryClient(config);
|
|
387
70
|
return instance;
|
|
388
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* Bridges a KatanaKit Safe Result fetcher into a TanStack `queryFn`.
|
|
74
|
+
*
|
|
75
|
+
* TanStack expects `queryFn` to resolve with data and **throw** on failure;
|
|
76
|
+
* KatanaKit returns `{ data, error, ok }`. This adapter unwraps the Safe Result
|
|
77
|
+
* so the two fit together. Throws a real `Error` (with `status`) so `instanceof`
|
|
78
|
+
* checks and error boundaries work; the upstream response body is **not** placed
|
|
79
|
+
* on the thrown error.
|
|
80
|
+
*
|
|
81
|
+
* Receives TanStack's {@link QueryFunctionContext}, so you can forward
|
|
82
|
+
* `signal` for real request cancellation.
|
|
83
|
+
*
|
|
84
|
+
* @typeParam T - The resolved data type.
|
|
85
|
+
* @param fn - A function returning a Safe Result (e.g. `() => useGetApi(...)`).
|
|
86
|
+
* @returns A `queryFn` that throws on error.
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```ts
|
|
90
|
+
* import { useSafeQueryFn, useGetApi, useFetch } from "katanakit-js";
|
|
91
|
+
*
|
|
92
|
+
* // Simple: the Safe Result gate.
|
|
93
|
+
* queryFn: useSafeQueryFn(() => useGetApi("pokeapi", "pokemonById", { params: { id } }))
|
|
94
|
+
*
|
|
95
|
+
* // With cancellation: forward TanStack's AbortSignal into the request.
|
|
96
|
+
* queryFn: useSafeQueryFn(({ signal }) =>
|
|
97
|
+
* useFetch("pokeapi", "pokemonById", { method: "GET", urlOptions: { params: { id } }, signal }),
|
|
98
|
+
* )
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
export function useSafeQueryFn(fn) {
|
|
102
|
+
return async (context) => {
|
|
103
|
+
const result = await fn(context);
|
|
104
|
+
if (!result.ok) {
|
|
105
|
+
throw Object.assign(new Error(result.error.message), { status: result.error.status });
|
|
106
|
+
}
|
|
107
|
+
return result.data;
|
|
108
|
+
};
|
|
109
|
+
}
|
|
389
110
|
//# sourceMappingURL=query.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.service.js","sourceRoot":"","sources":["../../../src/core/services/query.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"query.service.js","sourceRoot":"","sources":["../../../src/core/services/query.service.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,WAAW,GAGX,MAAM,sBAAsB,CAAC;AAI9B;;;;;;;GAOG;AACH,cAAc,sBAAsB,CAAC;AAErC,oFAAoF;AACpF,IAAI,QAAQ,GAAuB,IAAI,CAAC;AAExC;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAA4B,EAAE;IAClE,OAAO,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,cAAc;IAC7B,OAAO,CAAC,QAAQ,KAAK,IAAI,WAAW,EAAE,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAA4B,EAAE;IAChE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAClB,QAAQ,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,cAAc,CAC7B,EAA8D;IAE9D,OAAO,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YAChB,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACvF,CAAC;QACD,OAAO,MAAM,CAAC,IAAS,CAAC;IACzB,CAAC,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "katanakit-js",
|
|
3
|
-
|
|
3
|
+
"version": "4.0.3",
|
|
4
4
|
"description": "KatanaKit — a sharp, framework-agnostic TypeScript service toolkit organized with hexagonal architecture.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -82,6 +82,11 @@
|
|
|
82
82
|
"import": "./dist/adapters/angular/index.js",
|
|
83
83
|
"default": "./dist/adapters/angular/index.js"
|
|
84
84
|
},
|
|
85
|
+
"./adapters/vanilla": {
|
|
86
|
+
"types": "./dist/adapters/vanilla/index.d.ts",
|
|
87
|
+
"import": "./dist/adapters/vanilla/index.js",
|
|
88
|
+
"default": "./dist/adapters/vanilla/index.js"
|
|
89
|
+
},
|
|
85
90
|
"./prisma": {
|
|
86
91
|
"types": "./dist/prisma/index.d.ts",
|
|
87
92
|
"import": "./dist/prisma/index.js",
|
|
@@ -113,6 +118,7 @@
|
|
|
113
118
|
"whatsapp:dev": "tsx src/adapters/whatsapp/main.ts",
|
|
114
119
|
"clean": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"",
|
|
115
120
|
"check": "eslint ./src && tsc6 --noEmit && vitest run",
|
|
121
|
+
"examples:check": "tsc6 -p tsconfig.examples.json && tsc6 -p tsconfig.examples.solid.json",
|
|
116
122
|
"fix": "eslint --fix ./src && tsc6 --noEmit && vitest run",
|
|
117
123
|
"build": "bun run clean && bun run check && tsc6 -p tsconfig.json",
|
|
118
124
|
"release": "bun run build && bun run bump:patch && npm publish --access public && git push && git push --tags && node scripts/generate-release-notes.mjs \"v$(node -p \"require('./package.json').version\")\" | gh release create \"v$(node -p \"require('./package.json').version\")\" --notes-file -",
|
|
@@ -132,7 +138,7 @@
|
|
|
132
138
|
},
|
|
133
139
|
"repository": {
|
|
134
140
|
"type": "git",
|
|
135
|
-
"url": "git
|
|
141
|
+
"url": "git+https://github.com/senseikatana/katanakit-js.git"
|
|
136
142
|
},
|
|
137
143
|
"keywords": [
|
|
138
144
|
"api",
|
|
@@ -158,13 +164,14 @@
|
|
|
158
164
|
"author": "senseikatana - Sergio Jurado",
|
|
159
165
|
"license": "MIT",
|
|
160
166
|
"bugs": {
|
|
161
|
-
"url": "https://github.com/senseikatana/katanakit/issues"
|
|
167
|
+
"url": "https://github.com/senseikatana/katanakit-js/issues"
|
|
162
168
|
},
|
|
163
169
|
"unpkg": "./dist/index.js",
|
|
164
170
|
"jsdelivr": "./dist/index.js",
|
|
165
171
|
"dependencies": {
|
|
166
172
|
"@js-temporal/polyfill": "0.5.1",
|
|
167
173
|
"@prisma/orm-postgres": "8.0.0-rc.8",
|
|
174
|
+
"@tanstack/query-core": "5.103.2",
|
|
168
175
|
"express-rate-limit": "8.7.0"
|
|
169
176
|
},
|
|
170
177
|
"peerDependencies": {
|