@beignet/react-query 0.0.1 → 0.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/CHANGELOG.md +21 -0
- package/dist/index.d.ts +43 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -9
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +43 -13
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# @beignet/react-query
|
|
2
2
|
|
|
3
|
+
## 0.0.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [3160184]
|
|
8
|
+
- Updated dependencies [254ef6d]
|
|
9
|
+
- Updated dependencies [4cb1784]
|
|
10
|
+
- Updated dependencies [8bd9085]
|
|
11
|
+
- @beignet/core@0.0.3
|
|
12
|
+
|
|
13
|
+
## 0.0.2
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- Updated dependencies [90b29ad]
|
|
18
|
+
- Updated dependencies [07fa19c]
|
|
19
|
+
- Updated dependencies [08bae67]
|
|
20
|
+
- Updated dependencies [730a818]
|
|
21
|
+
- Updated dependencies [a79f60c]
|
|
22
|
+
- @beignet/core@0.0.2
|
|
23
|
+
|
|
3
24
|
## 0.0.1
|
|
4
25
|
|
|
5
26
|
- Initial Beignet release under the `@beignet` npm scope.
|
package/dist/index.d.ts
CHANGED
|
@@ -1,20 +1,27 @@
|
|
|
1
1
|
import type { Client, Endpoint, EndpointCallArgs, InferEndpointContractError, InferSuccessResponse } from "@beignet/core/client";
|
|
2
2
|
import { type ContractLike, type HttpContractConfig, type ResolveContract } from "@beignet/core/contracts";
|
|
3
3
|
import type { InfiniteQueryObserverOptions, MutationOptions, QueryKey, QueryOptions } from "@tanstack/react-query";
|
|
4
|
-
/**
|
|
5
|
-
* Options for useQuery hook
|
|
6
|
-
*/
|
|
7
4
|
type HasRequiredKeys<T> = {
|
|
8
5
|
[K in keyof T]-?: Record<string, never> extends Pick<T, K> ? never : K;
|
|
9
6
|
}[keyof T];
|
|
10
7
|
type EndpointQueryArgs<TContract extends HttpContractConfig, TProvidedHeaders extends string> = Omit<EndpointCallArgs<TContract, TProvidedHeaders>, "rawBody" | "signal">;
|
|
11
8
|
type ContractQueryOptionsBase<TContract extends HttpContractConfig> = Omit<QueryOptions<InferSuccessResponse<TContract>, InferEndpointContractError<TContract>, InferSuccessResponse<TContract>, QueryKey>, "queryKey" | "queryFn">;
|
|
9
|
+
/**
|
|
10
|
+
* Options accepted by `ReactQueryContractHelper.queryOptions(...)`.
|
|
11
|
+
*
|
|
12
|
+
* TanStack `queryKey` and `queryFn` are generated from the contract. Pass
|
|
13
|
+
* `key` to override the generated query key while keeping the generated query
|
|
14
|
+
* function.
|
|
15
|
+
*/
|
|
12
16
|
export type ContractUseQueryOptions<TContract extends HttpContractConfig, TProvidedHeaders extends string = never> = EndpointQueryArgs<TContract, TProvidedHeaders> & {
|
|
13
17
|
key?: readonly unknown[];
|
|
14
18
|
} & ContractQueryOptionsBase<TContract>;
|
|
15
19
|
type ContractQueryOptionsCallArgs<TContract extends HttpContractConfig, TProvidedHeaders extends string> = HasRequiredKeys<EndpointQueryArgs<TContract, TProvidedHeaders>> extends never ? [args?: ContractUseQueryOptions<TContract, TProvidedHeaders>] : [args: ContractUseQueryOptions<TContract, TProvidedHeaders>];
|
|
16
20
|
/**
|
|
17
|
-
* Options
|
|
21
|
+
* Options accepted by `ReactQueryContractHelper.mutationOptions(...)`.
|
|
22
|
+
*
|
|
23
|
+
* TanStack `mutationFn` is generated from the contract endpoint, so callers pass
|
|
24
|
+
* the normal TanStack mutation lifecycle options.
|
|
18
25
|
*/
|
|
19
26
|
export type ContractUseMutationOptions<TContract extends HttpContractConfig, TProvidedHeaders extends string = never> = Omit<MutationOptions<InferSuccessResponse<TContract>, InferEndpointContractError<TContract>, EndpointCallArgs<TContract, TProvidedHeaders>, unknown>, "mutationFn">;
|
|
20
27
|
type InfiniteQueryResolvedParams<TContract extends HttpContractConfig, TProvidedHeaders extends string = never> = {
|
|
@@ -43,15 +50,24 @@ type DynamicInfiniteQueryArgs<TContract extends HttpContractConfig, TPageParam,
|
|
|
43
50
|
};
|
|
44
51
|
type ContractInfiniteQueryOptions<TContract extends HttpContractConfig, TPageParam, TProvidedHeaders extends string> = (SafeInfiniteQueryArgs<TContract, TPageParam, TProvidedHeaders> | DynamicInfiniteQueryArgs<TContract, TPageParam, TProvidedHeaders>) & Omit<InfiniteQueryObserverOptions<InferSuccessResponse<TContract>, InferEndpointContractError<TContract>, InferSuccessResponse<TContract>, QueryKey, TPageParam>, "queryKey" | "queryFn">;
|
|
45
52
|
declare const BEIGNET_QUERY_KEY_SCOPE = "beignet";
|
|
53
|
+
/**
|
|
54
|
+
* Query key for all contracts in one Beignet namespace.
|
|
55
|
+
*/
|
|
46
56
|
export type ContractQueryNamespaceKey = readonly [
|
|
47
57
|
typeof BEIGNET_QUERY_KEY_SCOPE,
|
|
48
58
|
string | null
|
|
49
59
|
];
|
|
60
|
+
/**
|
|
61
|
+
* Query key for one contract without path/query/body params.
|
|
62
|
+
*/
|
|
50
63
|
export type ContractQueryContractKey = readonly [
|
|
51
64
|
typeof BEIGNET_QUERY_KEY_SCOPE,
|
|
52
65
|
string | null,
|
|
53
66
|
string
|
|
54
67
|
];
|
|
68
|
+
/**
|
|
69
|
+
* Query key generated for one contract call.
|
|
70
|
+
*/
|
|
55
71
|
export type ContractQueryKey = readonly [
|
|
56
72
|
typeof BEIGNET_QUERY_KEY_SCOPE,
|
|
57
73
|
string | null,
|
|
@@ -59,7 +75,11 @@ export type ContractQueryKey = readonly [
|
|
|
59
75
|
unknown?
|
|
60
76
|
];
|
|
61
77
|
/**
|
|
62
|
-
*
|
|
78
|
+
* TanStack Query helper bound to one Beignet contract.
|
|
79
|
+
*
|
|
80
|
+
* The helper intentionally exposes TanStack Query options instead of hiding
|
|
81
|
+
* React Query. Query keys are stable and grouped by Beignet namespace so apps
|
|
82
|
+
* can invalidate a resource or a single contract.
|
|
63
83
|
*/
|
|
64
84
|
export declare class ReactQueryContractHelper<TContract extends HttpContractConfig, TProvidedHeaders extends string = never> {
|
|
65
85
|
private contract;
|
|
@@ -99,29 +119,39 @@ export declare class ReactQueryContractHelper<TContract extends HttpContractConf
|
|
|
99
119
|
body?: unknown;
|
|
100
120
|
}): ContractQueryKey;
|
|
101
121
|
/**
|
|
102
|
-
* Create query options for TanStack Query
|
|
103
|
-
*
|
|
122
|
+
* Create query options for TanStack Query.
|
|
123
|
+
*
|
|
124
|
+
* Pass the result to `useQuery`, `prefetchQuery`, `fetchQuery`, or any API
|
|
125
|
+
* that accepts query options.
|
|
104
126
|
*/
|
|
105
127
|
queryOptions(...callArgs: ContractQueryOptionsCallArgs<TContract, TProvidedHeaders>): QueryOptions<InferSuccessResponse<TContract>, InferEndpointContractError<TContract>, InferSuccessResponse<TContract>, QueryKey> & {
|
|
106
128
|
queryKey: QueryKey;
|
|
107
129
|
};
|
|
108
130
|
/**
|
|
109
|
-
* Create mutation options for TanStack Query
|
|
110
|
-
*
|
|
131
|
+
* Create mutation options for TanStack Query.
|
|
132
|
+
*
|
|
133
|
+
* The generated `mutationFn` accepts the same variables shape as the
|
|
134
|
+
* underlying contract endpoint call.
|
|
111
135
|
*/
|
|
112
136
|
mutationOptions(args?: Omit<MutationOptions<InferSuccessResponse<TContract>, InferEndpointContractError<TContract>, EndpointCallArgs<TContract, TProvidedHeaders>, unknown>, "mutationFn">): MutationOptions<InferSuccessResponse<TContract>, InferEndpointContractError<TContract>, EndpointCallArgs<TContract, TProvidedHeaders>, unknown>;
|
|
113
137
|
/**
|
|
114
|
-
* Create infinite query options for TanStack Query
|
|
115
|
-
*
|
|
138
|
+
* Create infinite query options for TanStack Query.
|
|
139
|
+
*
|
|
140
|
+
* Use static `path`/`query` with `page(...)` when page params can be merged
|
|
141
|
+
* into a stable key. Use `params(...)` with an explicit `key` when every page
|
|
142
|
+
* needs fully dynamic args.
|
|
116
143
|
*/
|
|
117
144
|
infiniteQueryOptions<TPageParam = unknown>(args: ContractInfiniteQueryOptions<TContract, TPageParam, TProvidedHeaders>): InfiniteQueryObserverOptions<InferSuccessResponse<TContract>, InferEndpointContractError<TContract>, InferSuccessResponse<TContract>, QueryKey, TPageParam>;
|
|
118
145
|
/**
|
|
119
|
-
* Access
|
|
146
|
+
* Access the underlying contract endpoint.
|
|
120
147
|
*/
|
|
121
148
|
get endpoint(): Endpoint<TContract, TProvidedHeaders>;
|
|
122
149
|
}
|
|
123
150
|
/**
|
|
124
|
-
* Create React Query adapter for a client
|
|
151
|
+
* Create a React Query adapter for a Beignet client.
|
|
152
|
+
*
|
|
153
|
+
* Create this once near client setup, then bind contracts with the returned
|
|
154
|
+
* `rq(contract)` function.
|
|
125
155
|
*/
|
|
126
156
|
export declare function createReactQuery<TProvidedHeaders extends string = never>(client: Client<TProvidedHeaders>): <TContractLike extends ContractLike>(contract: TContractLike) => ReactQueryContractHelper<ResolveContract<TContractLike>, TProvidedHeaders>;
|
|
127
157
|
export {};
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACN,QAAQ,EACR,gBAAgB,EAChB,0BAA0B,EAC1B,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EAErB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EACV,4BAA4B,EAC5B,eAAe,EACf,QAAQ,EACR,YAAY,EACb,MAAM,uBAAuB,CAAC;AAE/B
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -26,7 +26,11 @@ function normalizeKeyValue(value) {
|
|
|
26
26
|
const BEIGNET_QUERY_KEY_SCOPE = "beignet";
|
|
27
27
|
const UNNAMESPACED_QUERY_KEY_NAMESPACE = null;
|
|
28
28
|
/**
|
|
29
|
-
*
|
|
29
|
+
* TanStack Query helper bound to one Beignet contract.
|
|
30
|
+
*
|
|
31
|
+
* The helper intentionally exposes TanStack Query options instead of hiding
|
|
32
|
+
* React Query. Query keys are stable and grouped by Beignet namespace so apps
|
|
33
|
+
* can invalidate a resource or a single contract.
|
|
30
34
|
*/
|
|
31
35
|
export class ReactQueryContractHelper {
|
|
32
36
|
contract;
|
|
@@ -90,8 +94,10 @@ export class ReactQueryContractHelper {
|
|
|
90
94
|
return [...this.contractKey(), cleanParams];
|
|
91
95
|
}
|
|
92
96
|
/**
|
|
93
|
-
* Create query options for TanStack Query
|
|
94
|
-
*
|
|
97
|
+
* Create query options for TanStack Query.
|
|
98
|
+
*
|
|
99
|
+
* Pass the result to `useQuery`, `prefetchQuery`, `fetchQuery`, or any API
|
|
100
|
+
* that accepts query options.
|
|
95
101
|
*/
|
|
96
102
|
queryOptions(...callArgs) {
|
|
97
103
|
const args = (callArgs[0] ?? {});
|
|
@@ -113,8 +119,10 @@ export class ReactQueryContractHelper {
|
|
|
113
119
|
};
|
|
114
120
|
}
|
|
115
121
|
/**
|
|
116
|
-
* Create mutation options for TanStack Query
|
|
117
|
-
*
|
|
122
|
+
* Create mutation options for TanStack Query.
|
|
123
|
+
*
|
|
124
|
+
* The generated `mutationFn` accepts the same variables shape as the
|
|
125
|
+
* underlying contract endpoint call.
|
|
118
126
|
*/
|
|
119
127
|
mutationOptions(args = {}) {
|
|
120
128
|
const mutationFn = async (vars) => {
|
|
@@ -126,8 +134,11 @@ export class ReactQueryContractHelper {
|
|
|
126
134
|
};
|
|
127
135
|
}
|
|
128
136
|
/**
|
|
129
|
-
* Create infinite query options for TanStack Query
|
|
130
|
-
*
|
|
137
|
+
* Create infinite query options for TanStack Query.
|
|
138
|
+
*
|
|
139
|
+
* Use static `path`/`query` with `page(...)` when page params can be merged
|
|
140
|
+
* into a stable key. Use `params(...)` with an explicit `key` when every page
|
|
141
|
+
* needs fully dynamic args.
|
|
131
142
|
*/
|
|
132
143
|
infiniteQueryOptions(args) {
|
|
133
144
|
let queryKey;
|
|
@@ -171,14 +182,17 @@ export class ReactQueryContractHelper {
|
|
|
171
182
|
};
|
|
172
183
|
}
|
|
173
184
|
/**
|
|
174
|
-
* Access
|
|
185
|
+
* Access the underlying contract endpoint.
|
|
175
186
|
*/
|
|
176
187
|
get endpoint() {
|
|
177
188
|
return this._endpoint;
|
|
178
189
|
}
|
|
179
190
|
}
|
|
180
191
|
/**
|
|
181
|
-
* Create React Query adapter for a client
|
|
192
|
+
* Create a React Query adapter for a Beignet client.
|
|
193
|
+
*
|
|
194
|
+
* Create this once near client setup, then bind contracts with the returned
|
|
195
|
+
* `rq(contract)` function.
|
|
182
196
|
*/
|
|
183
197
|
export function createReactQuery(client) {
|
|
184
198
|
return function rq(contract) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAIL,eAAe,GAChB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -19,9 +19,6 @@ import type {
|
|
|
19
19
|
QueryOptions,
|
|
20
20
|
} from "@tanstack/react-query";
|
|
21
21
|
|
|
22
|
-
/**
|
|
23
|
-
* Options for useQuery hook
|
|
24
|
-
*/
|
|
25
22
|
type HasRequiredKeys<T> = {
|
|
26
23
|
[K in keyof T]-?: Record<string, never> extends Pick<T, K> ? never : K;
|
|
27
24
|
}[keyof T];
|
|
@@ -41,6 +38,13 @@ type ContractQueryOptionsBase<TContract extends HttpContractConfig> = Omit<
|
|
|
41
38
|
"queryKey" | "queryFn"
|
|
42
39
|
>;
|
|
43
40
|
|
|
41
|
+
/**
|
|
42
|
+
* Options accepted by `ReactQueryContractHelper.queryOptions(...)`.
|
|
43
|
+
*
|
|
44
|
+
* TanStack `queryKey` and `queryFn` are generated from the contract. Pass
|
|
45
|
+
* `key` to override the generated query key while keeping the generated query
|
|
46
|
+
* function.
|
|
47
|
+
*/
|
|
44
48
|
export type ContractUseQueryOptions<
|
|
45
49
|
TContract extends HttpContractConfig,
|
|
46
50
|
TProvidedHeaders extends string = never,
|
|
@@ -57,7 +61,10 @@ type ContractQueryOptionsCallArgs<
|
|
|
57
61
|
: [args: ContractUseQueryOptions<TContract, TProvidedHeaders>];
|
|
58
62
|
|
|
59
63
|
/**
|
|
60
|
-
* Options
|
|
64
|
+
* Options accepted by `ReactQueryContractHelper.mutationOptions(...)`.
|
|
65
|
+
*
|
|
66
|
+
* TanStack `mutationFn` is generated from the contract endpoint, so callers pass
|
|
67
|
+
* the normal TanStack mutation lifecycle options.
|
|
61
68
|
*/
|
|
62
69
|
export type ContractUseMutationOptions<
|
|
63
70
|
TContract extends HttpContractConfig,
|
|
@@ -159,17 +166,26 @@ function normalizeKeyValue(value: unknown): unknown | undefined {
|
|
|
159
166
|
const BEIGNET_QUERY_KEY_SCOPE = "beignet";
|
|
160
167
|
const UNNAMESPACED_QUERY_KEY_NAMESPACE = null;
|
|
161
168
|
|
|
169
|
+
/**
|
|
170
|
+
* Query key for all contracts in one Beignet namespace.
|
|
171
|
+
*/
|
|
162
172
|
export type ContractQueryNamespaceKey = readonly [
|
|
163
173
|
typeof BEIGNET_QUERY_KEY_SCOPE,
|
|
164
174
|
string | null,
|
|
165
175
|
];
|
|
166
176
|
|
|
177
|
+
/**
|
|
178
|
+
* Query key for one contract without path/query/body params.
|
|
179
|
+
*/
|
|
167
180
|
export type ContractQueryContractKey = readonly [
|
|
168
181
|
typeof BEIGNET_QUERY_KEY_SCOPE,
|
|
169
182
|
string | null,
|
|
170
183
|
string,
|
|
171
184
|
];
|
|
172
185
|
|
|
186
|
+
/**
|
|
187
|
+
* Query key generated for one contract call.
|
|
188
|
+
*/
|
|
173
189
|
export type ContractQueryKey = readonly [
|
|
174
190
|
typeof BEIGNET_QUERY_KEY_SCOPE,
|
|
175
191
|
string | null,
|
|
@@ -178,7 +194,11 @@ export type ContractQueryKey = readonly [
|
|
|
178
194
|
];
|
|
179
195
|
|
|
180
196
|
/**
|
|
181
|
-
*
|
|
197
|
+
* TanStack Query helper bound to one Beignet contract.
|
|
198
|
+
*
|
|
199
|
+
* The helper intentionally exposes TanStack Query options instead of hiding
|
|
200
|
+
* React Query. Query keys are stable and grouped by Beignet namespace so apps
|
|
201
|
+
* can invalidate a resource or a single contract.
|
|
182
202
|
*/
|
|
183
203
|
export class ReactQueryContractHelper<
|
|
184
204
|
TContract extends HttpContractConfig,
|
|
@@ -253,8 +273,10 @@ export class ReactQueryContractHelper<
|
|
|
253
273
|
}
|
|
254
274
|
|
|
255
275
|
/**
|
|
256
|
-
* Create query options for TanStack Query
|
|
257
|
-
*
|
|
276
|
+
* Create query options for TanStack Query.
|
|
277
|
+
*
|
|
278
|
+
* Pass the result to `useQuery`, `prefetchQuery`, `fetchQuery`, or any API
|
|
279
|
+
* that accepts query options.
|
|
258
280
|
*/
|
|
259
281
|
queryOptions(
|
|
260
282
|
...callArgs: ContractQueryOptionsCallArgs<TContract, TProvidedHeaders>
|
|
@@ -295,8 +317,10 @@ export class ReactQueryContractHelper<
|
|
|
295
317
|
}
|
|
296
318
|
|
|
297
319
|
/**
|
|
298
|
-
* Create mutation options for TanStack Query
|
|
299
|
-
*
|
|
320
|
+
* Create mutation options for TanStack Query.
|
|
321
|
+
*
|
|
322
|
+
* The generated `mutationFn` accepts the same variables shape as the
|
|
323
|
+
* underlying contract endpoint call.
|
|
300
324
|
*/
|
|
301
325
|
mutationOptions(
|
|
302
326
|
args: Omit<
|
|
@@ -332,8 +356,11 @@ export class ReactQueryContractHelper<
|
|
|
332
356
|
}
|
|
333
357
|
|
|
334
358
|
/**
|
|
335
|
-
* Create infinite query options for TanStack Query
|
|
336
|
-
*
|
|
359
|
+
* Create infinite query options for TanStack Query.
|
|
360
|
+
*
|
|
361
|
+
* Use static `path`/`query` with `page(...)` when page params can be merged
|
|
362
|
+
* into a stable key. Use `params(...)` with an explicit `key` when every page
|
|
363
|
+
* needs fully dynamic args.
|
|
337
364
|
*/
|
|
338
365
|
infiniteQueryOptions<TPageParam = unknown>(
|
|
339
366
|
args: ContractInfiniteQueryOptions<TContract, TPageParam, TProvidedHeaders>,
|
|
@@ -404,7 +431,7 @@ export class ReactQueryContractHelper<
|
|
|
404
431
|
}
|
|
405
432
|
|
|
406
433
|
/**
|
|
407
|
-
* Access
|
|
434
|
+
* Access the underlying contract endpoint.
|
|
408
435
|
*/
|
|
409
436
|
get endpoint(): Endpoint<TContract, TProvidedHeaders> {
|
|
410
437
|
return this._endpoint;
|
|
@@ -412,7 +439,10 @@ export class ReactQueryContractHelper<
|
|
|
412
439
|
}
|
|
413
440
|
|
|
414
441
|
/**
|
|
415
|
-
* Create React Query adapter for a client
|
|
442
|
+
* Create a React Query adapter for a Beignet client.
|
|
443
|
+
*
|
|
444
|
+
* Create this once near client setup, then bind contracts with the returned
|
|
445
|
+
* `rq(contract)` function.
|
|
416
446
|
*/
|
|
417
447
|
export function createReactQuery<TProvidedHeaders extends string = never>(
|
|
418
448
|
client: Client<TProvidedHeaders>,
|