@nano_kit/query 1.0.0-alpha.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/LICENSE +21 -0
- package/README.md +95 -0
- package/dist/CacheStorage.d.ts +39 -0
- package/dist/CacheStorage.d.ts.map +1 -0
- package/dist/CacheStorage.types.d.ts +19 -0
- package/dist/CacheStorage.types.d.ts.map +1 -0
- package/dist/ClientContext.d.ts +80 -0
- package/dist/ClientContext.d.ts.map +1 -0
- package/dist/RequestContext.d.ts +44 -0
- package/dist/RequestContext.d.ts.map +1 -0
- package/dist/cache.d.ts +36 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.types.d.ts +13 -0
- package/dist/cache.types.d.ts.map +1 -0
- package/dist/client.d.ts +41 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.mock.d.ts +24 -0
- package/dist/client.mock.d.ts.map +1 -0
- package/dist/client.types.d.ts +12 -0
- package/dist/client.types.d.ts.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +951 -0
- package/dist/index.js.map +1 -0
- package/dist/map.d.ts +42 -0
- package/dist/map.d.ts.map +1 -0
- package/dist/queries/base.d.ts +17 -0
- package/dist/queries/base.d.ts.map +1 -0
- package/dist/queries/index.d.ts +5 -0
- package/dist/queries/index.d.ts.map +1 -0
- package/dist/queries/infinite.d.ts +44 -0
- package/dist/queries/infinite.d.ts.map +1 -0
- package/dist/queries/mutation.d.ts +29 -0
- package/dist/queries/mutation.d.ts.map +1 -0
- package/dist/queries/operation.d.ts +67 -0
- package/dist/queries/operation.d.ts.map +1 -0
- package/dist/queries/query.d.ts +35 -0
- package/dist/queries/query.d.ts.map +1 -0
- package/dist/settings/abortable.d.ts +24 -0
- package/dist/settings/abortable.d.ts.map +1 -0
- package/dist/settings/entities.d.ts +42 -0
- package/dist/settings/entities.d.ts.map +1 -0
- package/dist/settings/index.d.ts +8 -0
- package/dist/settings/index.d.ts.map +1 -0
- package/dist/settings/indexedDbStorage.d.ts +17 -0
- package/dist/settings/indexedDbStorage.d.ts.map +1 -0
- package/dist/settings/retryOnError.d.ts +11 -0
- package/dist/settings/retryOnError.d.ts.map +1 -0
- package/dist/settings/revalidateOnFocus.d.ts +12 -0
- package/dist/settings/revalidateOnFocus.d.ts.map +1 -0
- package/dist/settings/revalidateOnInterval.d.ts +9 -0
- package/dist/settings/revalidateOnInterval.d.ts.map +1 -0
- package/dist/settings/revalidateOnReconnect.d.ts +12 -0
- package/dist/settings/revalidateOnReconnect.d.ts.map +1 -0
- package/dist/utils.d.ts +3 -0
- package/dist/utils.d.ts.map +1 -0
- package/package.json +45 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2016 - present, TrigenSoftware
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# @nano_kit/query
|
|
2
|
+
|
|
3
|
+
[![ESM-only package][package]][package-url]
|
|
4
|
+
[![NPM version][npm]][npm-url]
|
|
5
|
+
[![Dependencies status][deps]][deps-url]
|
|
6
|
+
[![Install size][size]][size-url]
|
|
7
|
+
[![Build status][build]][build-url]
|
|
8
|
+
[![Coverage status][coverage]][coverage-url]
|
|
9
|
+
|
|
10
|
+
[package]: https://img.shields.io/badge/package-ESM--only-ffe536.svg
|
|
11
|
+
[package-url]: https://nodejs.org/api/esm.html
|
|
12
|
+
|
|
13
|
+
[npm]: https://img.shields.io/npm/v/@nano_kit/query.svg
|
|
14
|
+
[npm-url]: https://npmjs.com/package/@nano_kit/query
|
|
15
|
+
|
|
16
|
+
[deps]: https://img.shields.io/librariesio/release/npm/@nano_kit/query
|
|
17
|
+
[deps-url]: https://libraries.io/npm/@nano_kit/query/tree
|
|
18
|
+
|
|
19
|
+
[size]: https://deno.bundlejs.com/badge?q=@nano_kit/query
|
|
20
|
+
[size-url]: https://bundlejs.com/?q=@nano_kit/query
|
|
21
|
+
|
|
22
|
+
[build]: https://img.shields.io/github/actions/workflow/status/TrigenSoftware/nano_kit/tests.yml?branch=main
|
|
23
|
+
[build-url]: https://github.com/TrigenSoftware/nano_kit/actions
|
|
24
|
+
|
|
25
|
+
[coverage]: https://img.shields.io/codecov/c/github/TrigenSoftware/nano_kit.svg
|
|
26
|
+
[coverage-url]: https://app.codecov.io/gh/TrigenSoftware/nano_kit
|
|
27
|
+
|
|
28
|
+
<picture>
|
|
29
|
+
<source media="(prefers-color-scheme: dark)" srcset="../../website/src/assets/pulsar_white.svg">
|
|
30
|
+
<img alt="Four-pointed pulsar star logo" src="../../website/src/assets/pulsar_black.svg" width="100" height="100" align="right">
|
|
31
|
+
</picture>
|
|
32
|
+
|
|
33
|
+
A small and powerful remote data manager for [@nano_kit/store](../store) state manager.
|
|
34
|
+
|
|
35
|
+
- **Small**. Minimal footprint with tree-shakable architecture.
|
|
36
|
+
- **Type-safe**. Full TypeScript support with type inference for queries and mutations.
|
|
37
|
+
- **Signal-based**. Built on top of [@nano_kit/store](../store)'s reactive signals for automatic UI updates.
|
|
38
|
+
- **Flexible**. Supports queries, infinite queries, mutations, and operations with cache management.
|
|
39
|
+
- **Extensible**. Customizable with settings and extensions.
|
|
40
|
+
|
|
41
|
+
## Installation
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
pnpm add @nano_kit/store @nano_kit/query
|
|
45
|
+
# or
|
|
46
|
+
npm install @nano_kit/store @nano_kit/query
|
|
47
|
+
# or
|
|
48
|
+
yarn add @nano_kit/store @nano_kit/query
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Quick Start
|
|
52
|
+
|
|
53
|
+
Here is a minimal example demonstrating reactive data fetching with automatic cache management:
|
|
54
|
+
|
|
55
|
+
```ts
|
|
56
|
+
import { signal, effect } from '@nano_kit/store'
|
|
57
|
+
import { queryKey, client } from '@nano_kit/query'
|
|
58
|
+
|
|
59
|
+
/* Define a cache key for your data */
|
|
60
|
+
const PostKey = queryKey<[postId: number], Post | null>('post')
|
|
61
|
+
|
|
62
|
+
/* Create a signal with the post ID to fetch */
|
|
63
|
+
const $postId = signal(1)
|
|
64
|
+
|
|
65
|
+
/* Create a query client */
|
|
66
|
+
const { query } = client()
|
|
67
|
+
|
|
68
|
+
/* Create a reactive query */
|
|
69
|
+
const [$post, $postError, $postLoading] = query(PostKey, [$postId], postId => fetch(`/api/posts/${postId}`).then(r => r.json()))
|
|
70
|
+
|
|
71
|
+
/* React to data changes (mounting $post triggers data fetching) */
|
|
72
|
+
const unsub = effect(() => {
|
|
73
|
+
if ($postLoading()) {
|
|
74
|
+
console.log('Loading...')
|
|
75
|
+
} else if ($postError()) {
|
|
76
|
+
console.log('Error:', $postError())
|
|
77
|
+
} else {
|
|
78
|
+
console.log('Post:', $post())
|
|
79
|
+
}
|
|
80
|
+
})
|
|
81
|
+
// Output: Loading...
|
|
82
|
+
// Output: Post: { id: 1, title: 'First Post', ... }
|
|
83
|
+
|
|
84
|
+
/* Update triggers automatic refetch */
|
|
85
|
+
$postId(2)
|
|
86
|
+
// Output: Loading...
|
|
87
|
+
// Output: Post: { id: 2, title: 'Second Post', ... }
|
|
88
|
+
|
|
89
|
+
/* Cleanup: removes listener and stops data fetching */
|
|
90
|
+
unsub()
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## Documentation
|
|
94
|
+
|
|
95
|
+
For comprehensive guides, advanced patterns, and API reference, visit the [documentation website](https://nano_kit.js.org/query).
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { NewValue } from '@nano_kit/store';
|
|
2
|
+
import type { CacheMap, CacheShardKey, CacheKey, CacheEntry } from './CacheStorage.types.js';
|
|
3
|
+
export * from './CacheStorage.types.js';
|
|
4
|
+
export declare const DEFAULT_DEDUPE_TIME = 4000;
|
|
5
|
+
export declare const DEFAULT_CACHE_TIME: number;
|
|
6
|
+
export declare const UNSET_REV: number;
|
|
7
|
+
export declare function revLock(rev: number): number;
|
|
8
|
+
export declare function revLocked(rev: number): boolean;
|
|
9
|
+
export declare class CacheStorage {
|
|
10
|
+
dedupeTime: number;
|
|
11
|
+
cacheTime: number;
|
|
12
|
+
cache: CacheMap;
|
|
13
|
+
initial(): {
|
|
14
|
+
rev: number;
|
|
15
|
+
dedupes: number;
|
|
16
|
+
expires: number;
|
|
17
|
+
data: null;
|
|
18
|
+
error: null;
|
|
19
|
+
loading: boolean;
|
|
20
|
+
};
|
|
21
|
+
$get(key: CacheKey): CacheEntry<unknown>;
|
|
22
|
+
set(key: CacheShardKey | CacheKey, entry: NewValue<CacheEntry | undefined>): void;
|
|
23
|
+
/**
|
|
24
|
+
* Invalidate cache entry for the given key.
|
|
25
|
+
* If shard key is used, invalidate all entries in the shard.
|
|
26
|
+
* @param key - The cache key to invalidate.
|
|
27
|
+
*/
|
|
28
|
+
invalidate(key: CacheShardKey | CacheKey): void;
|
|
29
|
+
/**
|
|
30
|
+
* Revalidate cache entry for the given key.
|
|
31
|
+
* If shard key is used, revalidate all entries in the shard.
|
|
32
|
+
* @param key - The cache key to revalidate.
|
|
33
|
+
*/
|
|
34
|
+
revalidate(key: CacheShardKey | CacheKey): void;
|
|
35
|
+
mute(entry: CacheEntry, loadingDedupe?: boolean, timeDedupe?: boolean): boolean;
|
|
36
|
+
loading(key: CacheKey): number;
|
|
37
|
+
settled(key: CacheKey, data: unknown, error: string | null, rev?: number): void;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=CacheStorage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CacheStorage.d.ts","sourceRoot":"","sources":["../src/CacheStorage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,UAAU,EACX,MAAM,yBAAyB,CAAA;AAQhC,cAAc,yBAAyB,CAAA;AAEvC,eAAO,MAAM,mBAAmB,OAAQ,CAAA;AACxC,eAAO,MAAM,kBAAkB,QAAW,CAAA;AAC1C,eAAO,MAAM,SAAS,QAAW,CAAA;AAUjC,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,UAElC;AAGD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,WAEpC;AAID,qBAAa,YAAY;IACvB,UAAU,SAAsB;IAChC,SAAS,SAAqB;IAC9B,KAAK,EAAE,QAAQ,CAAY;IAE3B,OAAO;;;;;;;;IAWP,IAAI,CAAC,GAAG,EAAE,QAAQ;IAYlB,GAAG,CACD,GAAG,EAAE,aAAa,GAAG,QAAQ,EAC7B,KAAK,EAAE,QAAQ,CAAC,UAAU,GAAG,SAAS,CAAC;IAKzC;;;;OAIG;IACH,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,QAAQ;IAIxC;;;;OAIG;IACH,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,QAAQ;IAUxC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,aAAa,UAAO,EAAE,UAAU,UAAO;IAQ/D,OAAO,CAAC,GAAG,EAAE,QAAQ;IAcrB,OAAO,CACL,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,GAAG,CAAC,EAAE,MAAM;CAiBf"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ShardedSignalsMap, ShardKey, ShardedKey } from './map.js';
|
|
2
|
+
export interface CacheEntry<T = unknown> {
|
|
3
|
+
rev: number;
|
|
4
|
+
dedupes: number;
|
|
5
|
+
expires: number;
|
|
6
|
+
data: T | null;
|
|
7
|
+
error: string | null;
|
|
8
|
+
loading: boolean;
|
|
9
|
+
}
|
|
10
|
+
export type CacheMap = ShardedSignalsMap<string, string, CacheEntry>;
|
|
11
|
+
export interface CacheShardKey<P extends unknown[] = unknown[], R = unknown> extends ShardKey<string> {
|
|
12
|
+
P: P;
|
|
13
|
+
R: R;
|
|
14
|
+
}
|
|
15
|
+
export interface CacheKey<P extends unknown[] = unknown[], R = unknown> extends ShardedKey<string, string> {
|
|
16
|
+
P: P;
|
|
17
|
+
R: R;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=CacheStorage.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CacheStorage.types.d.ts","sourceRoot":"","sources":["../src/CacheStorage.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACX,MAAM,UAAU,CAAA;AAEjB,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,OAAO;IACrC,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,CAAC,GAAG,IAAI,CAAA;IACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAA;AAEpE,MAAM,WAAW,aAAa,CAC5B,CAAC,SAAS,OAAO,EAAE,GAAG,OAAO,EAAE,EAC/B,CAAC,GAAG,OAAO,CACX,SAAQ,QAAQ,CAAC,MAAM,CAAC;IAExB,CAAC,EAAE,CAAC,CAAA;IACJ,CAAC,EAAE,CAAC,CAAA;CACL;AAED,MAAM,WAAW,QAAQ,CACvB,CAAC,SAAS,OAAO,EAAE,GAAG,OAAO,EAAE,EAC/B,CAAC,GAAG,OAAO,CACX,SAAQ,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC;IAElC,CAAC,EAAE,CAAC,CAAA;IACJ,CAAC,EAAE,CAAC,CAAA;CACL"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { type ReadableSignal, type TasksRunner, type Task } from '@nano_kit/store';
|
|
2
|
+
import type { ClientSetting } from './client.types.js';
|
|
3
|
+
import type { RequestContext } from './RequestContext.js';
|
|
4
|
+
import { type CacheKey, type CacheEntry, CacheStorage } from './CacheStorage.js';
|
|
5
|
+
export type OnEveryError = (error: unknown, stopped: boolean) => void;
|
|
6
|
+
export declare class ClientContext<T = unknown> extends CacheStorage {
|
|
7
|
+
$key?: ReadableSignal<CacheKey>;
|
|
8
|
+
$disabled?: ReadableSignal<boolean>;
|
|
9
|
+
loadingDedupe: boolean;
|
|
10
|
+
timeDedupe: boolean;
|
|
11
|
+
onEveryError: OnEveryError | undefined;
|
|
12
|
+
task<T>(task: Task<T>): Promise<T>;
|
|
13
|
+
mapData(data: T): T;
|
|
14
|
+
mapComputedData(data: T | null): T | null;
|
|
15
|
+
mapError(error: unknown): string;
|
|
16
|
+
mounted(): void;
|
|
17
|
+
mute(entry: CacheEntry): boolean;
|
|
18
|
+
run(requestCtx: RequestContext<T>, start: () => Promise<T>, onSettled: (data: T | null, error: string | null) => void, interrupt?: (error: unknown) => boolean): Promise<readonly [T | undefined, unknown] | undefined>;
|
|
19
|
+
handleError(error: unknown, stopped: boolean): void;
|
|
20
|
+
}
|
|
21
|
+
export interface QueryClientContext<T = unknown> extends ClientContext<T> {
|
|
22
|
+
$key: ReadableSignal<CacheKey>;
|
|
23
|
+
Q: true;
|
|
24
|
+
}
|
|
25
|
+
export interface MutationClientContext<T = unknown> extends ClientContext<T> {
|
|
26
|
+
$key: never;
|
|
27
|
+
M: true;
|
|
28
|
+
}
|
|
29
|
+
export declare function forkMutationClient<T>(ctx: ClientContext, settings?: ClientSetting<MutationClientContext<T>>[]): MutationClientContext<T>;
|
|
30
|
+
export declare function forkQueryClient<T>(ctx: ClientContext, $key: ReadableSignal<CacheKey>, settings?: ClientSetting<QueryClientContext<T>>[]): QueryClientContext<T>;
|
|
31
|
+
/**
|
|
32
|
+
* Set dedupe time in which identical requests are deduped.
|
|
33
|
+
* @param time - Dedupe time in milliseconds.
|
|
34
|
+
* @returns The client setting function.
|
|
35
|
+
*/
|
|
36
|
+
export declare function dedupeTime(time: number): ClientSetting<QueryClientContext>;
|
|
37
|
+
/**
|
|
38
|
+
* Set cache time for cached query results.
|
|
39
|
+
* @param time - Cache time in milliseconds.
|
|
40
|
+
* @returns The client setting function.
|
|
41
|
+
*/
|
|
42
|
+
export declare function cacheTime(time: number): ClientSetting<QueryClientContext>;
|
|
43
|
+
/**
|
|
44
|
+
* Map error object to string.
|
|
45
|
+
* @param fn - Function to map error to string.
|
|
46
|
+
* @returns The client setting function.
|
|
47
|
+
*/
|
|
48
|
+
export declare function mapError(fn: (error: unknown) => string): ClientSetting;
|
|
49
|
+
/**
|
|
50
|
+
* Register a callback to be called on every error.
|
|
51
|
+
* @param fn - The error callback.
|
|
52
|
+
* @returns The client setting function.
|
|
53
|
+
*/
|
|
54
|
+
export declare function onEveryError(fn: OnEveryError): ClientSetting;
|
|
55
|
+
/**
|
|
56
|
+
* Disable requests when the signal is true.
|
|
57
|
+
* @param $disabled - Readable signal indicating whether requests are disabled.
|
|
58
|
+
* @returns The client setting function.
|
|
59
|
+
*/
|
|
60
|
+
export declare function disabled($disabled: ReadableSignal<boolean>): ClientSetting;
|
|
61
|
+
/**
|
|
62
|
+
* Enable or disable deduplication of requests (by loading state and dedupe time).
|
|
63
|
+
* @param enabled - Whether deduplication is enabled.
|
|
64
|
+
* @returns The client setting function.
|
|
65
|
+
*/
|
|
66
|
+
export declare function dedupe(dedupe: boolean): ClientSetting;
|
|
67
|
+
/**
|
|
68
|
+
* Enable or disable deduplication of requests (by loading state and dedupe time).
|
|
69
|
+
* @param loading - Whether loading state deduplication is enabled.
|
|
70
|
+
* @param time - Whether time-based deduplication is enabled.
|
|
71
|
+
* @returns The client setting function.
|
|
72
|
+
*/
|
|
73
|
+
export declare function dedupe(loading: boolean, time: boolean): ClientSetting<QueryClientContext>;
|
|
74
|
+
/**
|
|
75
|
+
* Set task runner for handling tasks.
|
|
76
|
+
* @param runner - The tasks runner function.
|
|
77
|
+
* @returns The client setting function.
|
|
78
|
+
*/
|
|
79
|
+
export declare function tasks(runner: TasksRunner): ClientSetting;
|
|
80
|
+
//# sourceMappingURL=ClientContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClientContext.d.ts","sourceRoot":"","sources":["../src/ClientContext.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { CacheKey } from './CacheStorage.types.js';
|
|
2
|
+
export type OnSuccess<T> = (data: T) => void;
|
|
3
|
+
export type OnError = (error: unknown) => void;
|
|
4
|
+
export type OnSettled<T> = (data: T | undefined, error: unknown) => void;
|
|
5
|
+
export declare class RequestContext<T> {
|
|
6
|
+
onSuccess: OnSuccess<T> | undefined;
|
|
7
|
+
onError: OnError | undefined;
|
|
8
|
+
onSettled: OnSettled<T> | undefined;
|
|
9
|
+
stopErrorPropagation: boolean;
|
|
10
|
+
prevCtx: RequestContext<T> | undefined;
|
|
11
|
+
constructor(prevCtx?: RequestContext<T>);
|
|
12
|
+
settled(data: T | undefined, error: unknown): void;
|
|
13
|
+
}
|
|
14
|
+
export declare class QueryContext<P extends unknown[], R> extends RequestContext<R> implements CacheKey<P, R> {
|
|
15
|
+
shard: string;
|
|
16
|
+
key: string;
|
|
17
|
+
P: P;
|
|
18
|
+
R: R;
|
|
19
|
+
constructor(key: CacheKey<P, R>, prevCtx?: QueryContext<P, R>);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Add a success callback to the query context.
|
|
23
|
+
* @param ctx - The query context.
|
|
24
|
+
* @param fn - The success callback.
|
|
25
|
+
*/
|
|
26
|
+
export declare function onSuccess<T>(ctx: RequestContext<T>, fn: OnSuccess<T>): void;
|
|
27
|
+
/**
|
|
28
|
+
* Add an error callback to the query context.
|
|
29
|
+
* @param ctx - The query context.
|
|
30
|
+
* @param fn - The error callback.
|
|
31
|
+
*/
|
|
32
|
+
export declare function onError<T>(ctx: RequestContext<T>, fn: OnError): void;
|
|
33
|
+
/**
|
|
34
|
+
* Add a settled callback to the query context.
|
|
35
|
+
* @param ctx - The query context.
|
|
36
|
+
* @param fn - The settled callback.
|
|
37
|
+
*/
|
|
38
|
+
export declare function onSettled<T>(ctx: RequestContext<T>, fn: OnSettled<T>): void;
|
|
39
|
+
/**
|
|
40
|
+
* Mark error as "stopped", so error will be passed to onEveryError with stopped=true.
|
|
41
|
+
* @param ctx - The query context.
|
|
42
|
+
*/
|
|
43
|
+
export declare function stopErrorPropagation<T>(ctx: RequestContext<T>): void;
|
|
44
|
+
//# sourceMappingURL=RequestContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RequestContext.d.ts","sourceRoot":"","sources":["../src/RequestContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAGvD,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAA;AAE5C,MAAM,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;AAE9C,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,SAAS,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;AAExE,qBAAa,cAAc,CAAC,CAAC;IAC3B,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAY;IAC/C,OAAO,EAAE,OAAO,GAAG,SAAS,CAAY;IACxC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAY;IAC/C,oBAAoB,UAAQ;IAC5B,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAY;gBAEtC,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;IAMvC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,SAAS,EAAE,KAAK,EAAE,OAAO;CAS5C;AAED,qBAAa,YAAY,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC,CAC9C,SAAQ,cAAc,CAAC,CAAC,CACxB,YAAW,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,CAAC,EAAG,CAAC,CAAA;IACL,CAAC,EAAG,CAAC,CAAA;gBAGH,GAAG,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EACnB,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;CAO/B;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,QAEpE;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,QAE7D;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,QAEpE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,QAE7D"}
|
package/dist/cache.d.ts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { CacheKeyBuilder, CacheDataFacade, CacheKey, ExtrasCacheKeyBuilder } from './cache.types.js';
|
|
2
|
+
import type { CacheStorage } from './CacheStorage.js';
|
|
3
|
+
export * from './cache.types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Create a query cache key builder.
|
|
6
|
+
* @param name - The cache shard name.
|
|
7
|
+
* @param filter - Optional filter to process parameters before building the key.
|
|
8
|
+
* @returns The cache key builder.
|
|
9
|
+
*/
|
|
10
|
+
export declare function queryKey<P extends unknown[], R>(name: string, filter?: (params: Partial<P>) => unknown[]): CacheKeyBuilder<P, R>;
|
|
11
|
+
/**
|
|
12
|
+
* Create an operation cache key builder with extra parameters.
|
|
13
|
+
* @param name - The cache shard name.
|
|
14
|
+
* @param filter - Optional filter to process parameters before building the key.
|
|
15
|
+
* @returns The extras cache key builder.
|
|
16
|
+
*/
|
|
17
|
+
export declare function operationKey<P extends unknown[], E extends unknown[], R>(name: string, filter?: (params: Partial<P>) => unknown[]): ExtrasCacheKeyBuilder<P, E, R>;
|
|
18
|
+
/**
|
|
19
|
+
* Create cache getter/setter for data.
|
|
20
|
+
* @param cache - The cache map.
|
|
21
|
+
* @returns The data getter/setter.
|
|
22
|
+
*/
|
|
23
|
+
export declare function dataCacheFacade(cache: CacheStorage): CacheDataFacade;
|
|
24
|
+
/**
|
|
25
|
+
* Create cache getter for loading state.
|
|
26
|
+
* @param cache - The cache map.
|
|
27
|
+
* @returns The loading state getter.
|
|
28
|
+
*/
|
|
29
|
+
export declare function loadingCacheFacade(cache: CacheStorage): (key: CacheKey) => boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Create cache getter for error state.
|
|
32
|
+
* @param cache - The cache map.
|
|
33
|
+
* @returns The error state getter.
|
|
34
|
+
*/
|
|
35
|
+
export declare function errorCacheFacade(cache: CacheStorage): (key: CacheKey) => string | null;
|
|
36
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,QAAQ,EACR,qBAAqB,EACtB,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,cAAc,kBAAkB,CAAA;AAEhC;;;;;GAKG;AAEH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC,EAC7C,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,EAAqB,yBAW7D;AAED;;;;;GAKG;AAEH,wBAAgB,YAAY,CAC1B,CAAC,SAAS,OAAO,EAAE,EACnB,CAAC,SAAS,OAAO,EAAE,EACnB,CAAC,EAED,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,GAEH,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACtE;AAED;;;;GAIG;AAEH,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GACL,eAAe,CAC5D;AAqBD;;;;GAIG;AAEH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,IAC5C,KAAK,QAAQ,aACtB;AAED;;;;GAIG;AAEH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,IAC1C,KAAK,QAAQ,mBACtB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { NewValue } from '@nano_kit/store';
|
|
2
|
+
import type { CacheKey, CacheShardKey } from './CacheStorage.types.js';
|
|
3
|
+
export type { CacheKey, CacheShardKey };
|
|
4
|
+
export interface ExtrasCacheKey<P extends unknown[] = unknown[], E extends unknown[] = unknown[], R = unknown> extends CacheKey<P, R> {
|
|
5
|
+
E: E;
|
|
6
|
+
}
|
|
7
|
+
export type CacheKeyBuilder<P extends unknown[], R> = ((...params: Partial<P>) => CacheKey<P, R>) & CacheShardKey<P, R>;
|
|
8
|
+
export type ExtrasCacheKeyBuilder<P extends unknown[], E extends unknown[], R> = ((...params: Partial<P>) => ExtrasCacheKey<P, E, R>) & CacheShardKey<P, R>;
|
|
9
|
+
export interface CacheDataFacade {
|
|
10
|
+
<P extends unknown[], R>(key: CacheKey<P, R>): R | null;
|
|
11
|
+
<P extends unknown[], R>(key: CacheShardKey<P, R> | CacheKey<P, R>, value: NewValue<R | null>): void;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=cache.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.types.d.ts","sourceRoot":"","sources":["../src/cache.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EACd,MAAM,yBAAyB,CAAA;AAEhC,YAAY,EACV,QAAQ,EACR,aAAa,EACd,CAAA;AAED,MAAM,WAAW,cAAc,CAC7B,CAAC,SAAS,OAAO,EAAE,GAAG,OAAO,EAAE,EAC/B,CAAC,SAAS,OAAO,EAAE,GAAG,OAAO,EAAE,EAC/B,CAAC,GAAG,OAAO,CACX,SAAQ,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;IAEtB,CAAC,EAAE,CAAC,CAAA;CACL;AAED,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC,IAAI,CACpD,CAAC,GAAG,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAC1C,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAEvB,MAAM,MAAM,qBAAqB,CAC/B,CAAC,SAAS,OAAO,EAAE,EACnB,CAAC,SAAS,OAAO,EAAE,EACnB,CAAC,IACC,CACF,CAAC,GAAG,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACnD,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAEvB,MAAM,WAAW,eAAe;IAC9B,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;IACvD,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;CACrG"}
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { ClientExtension, ExtendedClient, AnyClientSetting, AnyClientExtension } from './client.types.js';
|
|
2
|
+
import { query, infinite, operation, mutation } from './queries/index.js';
|
|
3
|
+
export * from './client.types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Create a query client with optional settings and extensions.
|
|
6
|
+
* @param settings - The client settings and extensions.
|
|
7
|
+
* @returns The query client.
|
|
8
|
+
*/
|
|
9
|
+
export declare function client<S extends (AnyClientSetting | AnyClientExtension)[]>(...settings: S): ExtendedClient<{
|
|
10
|
+
query: typeof query;
|
|
11
|
+
invalidate: (key: import("./CacheStorage.types.js").CacheShardKey | import("./CacheStorage.types.js").CacheKey) => void;
|
|
12
|
+
revalidate: (key: import("./CacheStorage.types.js").CacheShardKey | import("./CacheStorage.types.js").CacheKey) => void;
|
|
13
|
+
$data: import("./cache.types.js").CacheDataFacade;
|
|
14
|
+
$error: (key: import("./CacheStorage.types.js").CacheKey) => string | null;
|
|
15
|
+
$loading: (key: import("./CacheStorage.types.js").CacheKey) => boolean;
|
|
16
|
+
}, S>;
|
|
17
|
+
interface InfinitesExtension {
|
|
18
|
+
infinite: typeof infinite;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Extend client with infinite query capability.
|
|
22
|
+
* @returns The client extension.
|
|
23
|
+
*/
|
|
24
|
+
export declare function infinites(): ClientExtension<InfinitesExtension>;
|
|
25
|
+
interface OperationsExtension {
|
|
26
|
+
operation: typeof operation;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Extend client with operation capability.
|
|
30
|
+
* @returns The client extension.
|
|
31
|
+
*/
|
|
32
|
+
export declare function operations(): ClientExtension<OperationsExtension>;
|
|
33
|
+
interface MutationsExtension {
|
|
34
|
+
mutation: typeof mutation;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Extend client with mutation capability.
|
|
38
|
+
* @returns The client extension.
|
|
39
|
+
*/
|
|
40
|
+
export declare function mutations(): ClientExtension<MutationsExtension>;
|
|
41
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,mBAAmB,CAAA;AAW1B,OAAO,EACL,KAAK,EACL,QAAQ,EACR,SAAS,EACT,QAAQ,EACT,MAAM,oBAAoB,CAAA;AAE3B,cAAc,mBAAmB,CAAA;AAEjC;;;;GAIG;AAEH,wBAAgB,MAAM,CAAC,CAAC,SAAS,CAAC,gBAAgB,GAAG,kBAAkB,CAAC,EAAE,EAAE,GAAG,QAAQ,EAAE,CAAC,GAgBvE,cAAc;WAZH,OAAO,KAAK;;;;;;GAYO,CAAC,CAAC,CAClD;AAED,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,OAAO,QAAQ,CAAA;CAC1B;AAED;;;GAGG;AAEH,wBAAgB,SAAS,IAKjB,eAAe,CAAC,kBAAkB,CAAC,CAC1C;AAED,UAAU,mBAAmB;IAC3B,SAAS,EAAE,OAAO,SAAS,CAAA;CAC5B;AAED;;;GAGG;AAEH,wBAAgB,UAAU,IAKlB,eAAe,CAAC,mBAAmB,CAAC,CAC3C;AAED,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,OAAO,QAAQ,CAAA;CAC1B;AAED;;;GAGG;AAEH,wBAAgB,SAAS,IAKjB,eAAe,CAAC,kBAAkB,CAAC,CAC1C"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface Post {
|
|
2
|
+
id: number;
|
|
3
|
+
title: string;
|
|
4
|
+
content: string;
|
|
5
|
+
}
|
|
6
|
+
export interface PostsPage {
|
|
7
|
+
posts: Post[];
|
|
8
|
+
nextCursor: number | null;
|
|
9
|
+
}
|
|
10
|
+
export interface CreatePostParams {
|
|
11
|
+
title: string;
|
|
12
|
+
content: string;
|
|
13
|
+
}
|
|
14
|
+
export interface UpdatePostParams {
|
|
15
|
+
title?: string;
|
|
16
|
+
content?: string;
|
|
17
|
+
}
|
|
18
|
+
export declare function resetMockData(): void;
|
|
19
|
+
export declare function getPost(id: number): Promise<Post | null>;
|
|
20
|
+
export declare function getPosts(cursor?: number | null): Promise<PostsPage>;
|
|
21
|
+
export declare function createPost(params: CreatePostParams): Promise<Post>;
|
|
22
|
+
export declare function updatePost(id: number, params: UpdatePostParams): Promise<Post | null>;
|
|
23
|
+
export declare function deletePost(id: number): Promise<boolean>;
|
|
24
|
+
//# sourceMappingURL=client.mock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.mock.d.ts","sourceRoot":"","sources":["../src/client.mock.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,IAAI,EAAE,CAAA;IACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AASD,wBAAgB,aAAa,SAmB5B;AAED,wBAAsB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAI9D;AAED,wBAAsB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,CAYzE;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAUxE;AAED,wBAAsB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAa3F;AAED,wBAAsB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAU7D"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ClientContext, QueryClientContext, MutationClientContext } from './ClientContext.js';
|
|
2
|
+
export type ClientSetting<T extends QueryClientContext | MutationClientContext = QueryClientContext | MutationClientContext> = (ctx: T) => void;
|
|
3
|
+
export type AnyClientSetting = ClientSetting<QueryClientContext> | ClientSetting<MutationClientContext> | ClientSetting;
|
|
4
|
+
export type ClientExtension<E> = <T>(ctx: ClientContext, client: T) => T & E;
|
|
5
|
+
export type AnyClientExtension = ClientExtension<{}>;
|
|
6
|
+
type Extension<S extends (AnyClientSetting | AnyClientExtension)[]> = S extends [infer First, ...infer Rest] ? First extends ClientExtension<infer E> ? Rest extends (AnyClientSetting | AnyClientExtension)[] ? Extension<Rest> & E : E : Rest extends (AnyClientSetting | AnyClientExtension)[] ? Extension<Rest> : {} : {};
|
|
7
|
+
type Prettify<T> = {
|
|
8
|
+
[K in keyof T]: T[K];
|
|
9
|
+
} & {};
|
|
10
|
+
export type ExtendedClient<T, S extends (AnyClientSetting | AnyClientExtension)[]> = Prettify<T & Extension<S>>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=client.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.types.d.ts","sourceRoot":"","sources":["../src/client.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,oBAAoB,CAAA;AAE3B,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,kBAAkB,GAAG,qBAAqB,GAAG,kBAAkB,GAAG,qBAAqB,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAA;AAE/I,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAAC,kBAAkB,CAAC,GAAG,aAAa,CAAC,qBAAqB,CAAC,GAAG,aAAa,CAAA;AAEvH,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AAE5E,MAAM,MAAM,kBAAkB,GAAG,eAAe,CAAC,EAAE,CAAC,CAAA;AAEpD,KAAK,SAAS,CAAC,CAAC,SAAS,CAAC,gBAAgB,GAAG,kBAAkB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,GACxG,KAAK,SAAS,eAAe,CAAC,MAAM,CAAC,CAAC,GACpC,IAAI,SAAS,CAAC,gBAAgB,GAAG,kBAAkB,CAAC,EAAE,GACpD,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GACnB,CAAC,GACH,IAAI,SAAS,CAAC,gBAAgB,GAAG,kBAAkB,CAAC,EAAE,GACpD,SAAS,CAAC,IAAI,CAAC,GACf,EAAE,GACN,EAAE,CAAA;AAEN,KAAK,QAAQ,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG,EAAE,CAAA;AAEhD,MAAM,MAAM,cAAc,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,gBAAgB,GAAG,kBAAkB,CAAC,EAAE,IAAI,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from './settings/index.js';
|
|
2
|
+
export { queryKey, operationKey } from './cache.js';
|
|
3
|
+
export { DEFAULT_DEDUPE_TIME, DEFAULT_CACHE_TIME } from './CacheStorage.js';
|
|
4
|
+
export { ClientContext, type QueryClientContext, type MutationClientContext, dedupeTime, cacheTime, mapError, onEveryError, disabled, dedupe, tasks } from './ClientContext.js';
|
|
5
|
+
export * from './RequestContext.js';
|
|
6
|
+
export * from './client.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,OAAO,EACL,QAAQ,EACR,YAAY,EACb,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,UAAU,EACV,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,KAAK,EACN,MAAM,oBAAoB,CAAA;AAC3B,cAAc,qBAAqB,CAAA;AACnC,cAAc,aAAa,CAAA"}
|