@beignet/nuqs 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 +23 -0
- package/dist/index.d.ts +41 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +41 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
# @beignet/nuqs
|
|
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
|
+
- @beignet/react-query@0.0.3
|
|
13
|
+
|
|
14
|
+
## 0.0.2
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- Updated dependencies [90b29ad]
|
|
19
|
+
- Updated dependencies [07fa19c]
|
|
20
|
+
- Updated dependencies [08bae67]
|
|
21
|
+
- Updated dependencies [730a818]
|
|
22
|
+
- Updated dependencies [a79f60c]
|
|
23
|
+
- @beignet/core@0.0.2
|
|
24
|
+
- @beignet/react-query@0.0.2
|
|
25
|
+
|
|
3
26
|
## 0.0.1
|
|
4
27
|
|
|
5
28
|
- Initial Beignet release under the `@beignet` npm scope.
|
package/dist/index.d.ts
CHANGED
|
@@ -10,7 +10,13 @@ type QueryParsers<TContract extends HttpContractConfig> = Partial<{
|
|
|
10
10
|
[P in K]: Exclude<QueryRecord<TContract>[P], undefined>;
|
|
11
11
|
}>[K];
|
|
12
12
|
}>;
|
|
13
|
+
/**
|
|
14
|
+
* Nuqs parser map constrained to a contract's query schema keys.
|
|
15
|
+
*/
|
|
13
16
|
export type NuqsParserMap<TContract extends HttpContractConfig> = QueryParsers<TContract>;
|
|
17
|
+
/**
|
|
18
|
+
* State object inferred from a Nuqs parser map.
|
|
19
|
+
*/
|
|
14
20
|
export type NuqsState<TParsers extends UseQueryStatesKeysMap> = inferParserType<TParsers>;
|
|
15
21
|
type ContractQueryHookOptions<TParsers extends UseQueryStatesKeysMap> = Partial<UseQueryStatesOptions<TParsers>>;
|
|
16
22
|
type ContractQueryConfig<TContract extends HttpContractConfig, TParsers extends NuqsParserMap<TContract> & UseQueryStatesKeysMap> = ContractQueryHookOptions<TParsers> & {
|
|
@@ -25,22 +31,57 @@ type NuqsQueryOptions<TContract extends HttpContractConfig> = Omit<ContractUseQu
|
|
|
25
31
|
omitNullish?: boolean;
|
|
26
32
|
};
|
|
27
33
|
type NuqsQueryOptionsCallArgs<TContract extends HttpContractConfig> = HasRequiredKeys<NuqsQueryOptionsRequiredInput<TContract>> extends never ? [opts?: NuqsQueryOptions<TContract>] : [opts: NuqsQueryOptions<TContract>];
|
|
34
|
+
/**
|
|
35
|
+
* URL-state helper bound to one contract query schema.
|
|
36
|
+
*/
|
|
28
37
|
export declare class NuqsQueryHelper<TContract extends HttpContractConfig, TParsers extends NuqsParserMap<TContract> & UseQueryStatesKeysMap> {
|
|
29
38
|
private contract;
|
|
30
39
|
private config;
|
|
31
40
|
constructor(contract: TContract, config: ContractQueryConfig<TContract, TParsers>);
|
|
41
|
+
/**
|
|
42
|
+
* Bind contract query params to URL state through Nuqs.
|
|
43
|
+
*/
|
|
32
44
|
useState(options?: ContractQueryHookOptions<TParsers>): UseQueryStatesReturn<TParsers>;
|
|
45
|
+
/**
|
|
46
|
+
* Convert Nuqs state into Beignet endpoint query args.
|
|
47
|
+
*
|
|
48
|
+
* Nullish values are omitted by default to keep generated query strings clean.
|
|
49
|
+
*/
|
|
33
50
|
toQuery(state: NuqsState<TParsers>, opts?: {
|
|
34
51
|
omitNullish?: boolean;
|
|
35
52
|
}): EndpointCallArgs<TContract>["query"];
|
|
53
|
+
/**
|
|
54
|
+
* Merge URL state into React Query options for the same contract.
|
|
55
|
+
*/
|
|
36
56
|
toQueryOptions(rq: ReactQueryContractHelper<TContract>, state: NuqsState<TParsers>, ...callArgs: NuqsQueryOptionsCallArgs<TContract>): ReturnType<ReactQueryContractHelper<TContract>["queryOptions"]>;
|
|
57
|
+
/**
|
|
58
|
+
* Fully qualified contract name.
|
|
59
|
+
*/
|
|
37
60
|
get contractName(): string;
|
|
38
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Nuqs helper bound to one contract.
|
|
64
|
+
*/
|
|
39
65
|
export declare class NuqsContractHelper<TContract extends HttpContractConfig> {
|
|
40
66
|
private contract;
|
|
41
67
|
constructor(contract: TContract);
|
|
68
|
+
/**
|
|
69
|
+
* Create a URL-state query helper for this contract.
|
|
70
|
+
*
|
|
71
|
+
* The contract must declare a query schema so parser keys can be checked
|
|
72
|
+
* against the contract query shape.
|
|
73
|
+
*/
|
|
42
74
|
query<TParsers extends NuqsParserMap<TContract> & UseQueryStatesKeysMap>(config: ContractQueryConfig<TContract, TParsers>): NuqsQueryHelper<TContract, TParsers>;
|
|
43
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* Create a Nuqs adapter factory.
|
|
78
|
+
*
|
|
79
|
+
* Create this once, then bind contracts with the returned `nq(contract)`
|
|
80
|
+
* function.
|
|
81
|
+
*/
|
|
44
82
|
export declare function createNuqs(): <TContractLike extends ContractLike>(contract: TContractLike) => NuqsContractHelper<ResolveContract<TContractLike>>;
|
|
83
|
+
/**
|
|
84
|
+
* URL key mapping type from Nuqs.
|
|
85
|
+
*/
|
|
45
86
|
export type { UrlKeys };
|
|
46
87
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { resolveContract, } from "@beignet/core/contracts";
|
|
2
2
|
import { useQueryStates, } from "./runtime";
|
|
3
|
+
/**
|
|
4
|
+
* URL-state helper bound to one contract query schema.
|
|
5
|
+
*/
|
|
3
6
|
export class NuqsQueryHelper {
|
|
4
7
|
contract;
|
|
5
8
|
config;
|
|
@@ -7,6 +10,9 @@ export class NuqsQueryHelper {
|
|
|
7
10
|
this.contract = contract;
|
|
8
11
|
this.config = config;
|
|
9
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* Bind contract query params to URL state through Nuqs.
|
|
15
|
+
*/
|
|
10
16
|
useState(options = {}) {
|
|
11
17
|
const { parsers, ...baseOptions } = this.config;
|
|
12
18
|
return useQueryStates(parsers, {
|
|
@@ -14,6 +20,11 @@ export class NuqsQueryHelper {
|
|
|
14
20
|
...options,
|
|
15
21
|
});
|
|
16
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Convert Nuqs state into Beignet endpoint query args.
|
|
25
|
+
*
|
|
26
|
+
* Nullish values are omitted by default to keep generated query strings clean.
|
|
27
|
+
*/
|
|
17
28
|
toQuery(state, opts = {}) {
|
|
18
29
|
const { omitNullish = true } = opts;
|
|
19
30
|
const query = {};
|
|
@@ -25,6 +36,9 @@ export class NuqsQueryHelper {
|
|
|
25
36
|
}
|
|
26
37
|
return query;
|
|
27
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Merge URL state into React Query options for the same contract.
|
|
41
|
+
*/
|
|
28
42
|
toQueryOptions(rq, state, ...callArgs) {
|
|
29
43
|
const opts = (callArgs[0] ?? {});
|
|
30
44
|
const { omitNullish, query: baseQuery, ...queryOptions } = opts;
|
|
@@ -38,15 +52,27 @@ export class NuqsQueryHelper {
|
|
|
38
52
|
},
|
|
39
53
|
});
|
|
40
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Fully qualified contract name.
|
|
57
|
+
*/
|
|
41
58
|
get contractName() {
|
|
42
59
|
return this.contract.name;
|
|
43
60
|
}
|
|
44
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Nuqs helper bound to one contract.
|
|
64
|
+
*/
|
|
45
65
|
export class NuqsContractHelper {
|
|
46
66
|
contract;
|
|
47
67
|
constructor(contract) {
|
|
48
68
|
this.contract = contract;
|
|
49
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* Create a URL-state query helper for this contract.
|
|
72
|
+
*
|
|
73
|
+
* The contract must declare a query schema so parser keys can be checked
|
|
74
|
+
* against the contract query shape.
|
|
75
|
+
*/
|
|
50
76
|
query(config) {
|
|
51
77
|
if (!this.contract.query) {
|
|
52
78
|
throw new Error(`nq(${this.contract.name}): Contract has no query schema. ` +
|
|
@@ -55,6 +81,12 @@ export class NuqsContractHelper {
|
|
|
55
81
|
return new NuqsQueryHelper(this.contract, config);
|
|
56
82
|
}
|
|
57
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* Create a Nuqs adapter factory.
|
|
86
|
+
*
|
|
87
|
+
* Create this once, then bind contracts with the returned `nq(contract)`
|
|
88
|
+
* function.
|
|
89
|
+
*/
|
|
58
90
|
export function createNuqs() {
|
|
59
91
|
return function nq(contract) {
|
|
60
92
|
const resolvedContract = resolveContract(contract);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,eAAe,GAChB,MAAM,yBAAyB,CAAC;AAKjC,OAAO,EAML,cAAc,GACf,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,eAAe,GAChB,MAAM,yBAAyB,CAAC;AAKjC,OAAO,EAML,cAAc,GACf,MAAM,WAAW,CAAC;AAiEnB;;GAEG;AACH,MAAM,OAAO,eAAe;IAKhB;IACA;IAFV,YACU,QAAmB,EACnB,MAAgD;QADhD,aAAQ,GAAR,QAAQ,CAAW;QACnB,WAAM,GAAN,MAAM,CAA0C;IACvD,CAAC;IAEJ;;OAEG;IACH,QAAQ,CACN,UAA8C,EAAE;QAEhD,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QAChD,OAAO,cAAc,CAAC,OAAO,EAAE;YAC7B,GAAG,WAAW;YACd,GAAG,OAAO;SACX,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,OAAO,CACL,KAA0B,EAC1B,OAEI,EAAE;QAEN,MAAM,EAAE,WAAW,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;QACpC,MAAM,KAAK,GAA4B,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,CAAC;QAEjE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;YACnC,IAAI,WAAW,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;gBAAE,SAAS;YACrE,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACrB,CAAC;QAED,OAAO,KAA6C,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,cAAc,CACZ,EAAuC,EACvC,KAA0B,EAC1B,GAAG,QAA6C;QAEhD,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAgC,CAAC;QAChE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,YAAY,EAAE,GAAG,IAAI,CAAC;QAChE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QACxD,MAAM,cAAc,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAEsB,CAAC;QAErE,OAAO,cAAc,CAAC;YACpB,GAAG,YAAY;YACf,KAAK,EAAE;gBACL,GAAI,SAAiD;gBACrD,GAAI,UAAkD;aACf;SACJ,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC5B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,kBAAkB;IACT;IAApB,YAAoB,QAAmB;QAAnB,aAAQ,GAAR,QAAQ,CAAW;IAAG,CAAC;IAE3C;;;;;OAKG;IACH,KAAK,CACH,MAAgD;QAEhD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,mCAAmC;gBACzD,0DAA0D,CAC7D,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,SAAS,EAAE,CAChB,QAAuB;QAEvB,MAAM,gBAAgB,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QACnD,OAAO,IAAI,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IAClD,CAAC,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -36,9 +36,15 @@ type QueryParsers<TContract extends HttpContractConfig> = Partial<{
|
|
|
36
36
|
}>[K];
|
|
37
37
|
}>;
|
|
38
38
|
|
|
39
|
+
/**
|
|
40
|
+
* Nuqs parser map constrained to a contract's query schema keys.
|
|
41
|
+
*/
|
|
39
42
|
export type NuqsParserMap<TContract extends HttpContractConfig> =
|
|
40
43
|
QueryParsers<TContract>;
|
|
41
44
|
|
|
45
|
+
/**
|
|
46
|
+
* State object inferred from a Nuqs parser map.
|
|
47
|
+
*/
|
|
42
48
|
export type NuqsState<TParsers extends UseQueryStatesKeysMap> =
|
|
43
49
|
inferParserType<TParsers>;
|
|
44
50
|
|
|
@@ -75,6 +81,9 @@ type NuqsQueryOptionsCallArgs<TContract extends HttpContractConfig> =
|
|
|
75
81
|
? [opts?: NuqsQueryOptions<TContract>]
|
|
76
82
|
: [opts: NuqsQueryOptions<TContract>];
|
|
77
83
|
|
|
84
|
+
/**
|
|
85
|
+
* URL-state helper bound to one contract query schema.
|
|
86
|
+
*/
|
|
78
87
|
export class NuqsQueryHelper<
|
|
79
88
|
TContract extends HttpContractConfig,
|
|
80
89
|
TParsers extends NuqsParserMap<TContract> & UseQueryStatesKeysMap,
|
|
@@ -84,6 +93,9 @@ export class NuqsQueryHelper<
|
|
|
84
93
|
private config: ContractQueryConfig<TContract, TParsers>,
|
|
85
94
|
) {}
|
|
86
95
|
|
|
96
|
+
/**
|
|
97
|
+
* Bind contract query params to URL state through Nuqs.
|
|
98
|
+
*/
|
|
87
99
|
useState(
|
|
88
100
|
options: ContractQueryHookOptions<TParsers> = {},
|
|
89
101
|
): UseQueryStatesReturn<TParsers> {
|
|
@@ -94,6 +106,11 @@ export class NuqsQueryHelper<
|
|
|
94
106
|
});
|
|
95
107
|
}
|
|
96
108
|
|
|
109
|
+
/**
|
|
110
|
+
* Convert Nuqs state into Beignet endpoint query args.
|
|
111
|
+
*
|
|
112
|
+
* Nullish values are omitted by default to keep generated query strings clean.
|
|
113
|
+
*/
|
|
97
114
|
toQuery(
|
|
98
115
|
state: NuqsState<TParsers>,
|
|
99
116
|
opts: {
|
|
@@ -112,6 +129,9 @@ export class NuqsQueryHelper<
|
|
|
112
129
|
return query as EndpointCallArgs<TContract>["query"];
|
|
113
130
|
}
|
|
114
131
|
|
|
132
|
+
/**
|
|
133
|
+
* Merge URL state into React Query options for the same contract.
|
|
134
|
+
*/
|
|
115
135
|
toQueryOptions(
|
|
116
136
|
rq: ReactQueryContractHelper<TContract>,
|
|
117
137
|
state: NuqsState<TParsers>,
|
|
@@ -133,14 +153,26 @@ export class NuqsQueryHelper<
|
|
|
133
153
|
} as ContractUseQueryOptions<TContract>);
|
|
134
154
|
}
|
|
135
155
|
|
|
156
|
+
/**
|
|
157
|
+
* Fully qualified contract name.
|
|
158
|
+
*/
|
|
136
159
|
get contractName(): string {
|
|
137
160
|
return this.contract.name;
|
|
138
161
|
}
|
|
139
162
|
}
|
|
140
163
|
|
|
164
|
+
/**
|
|
165
|
+
* Nuqs helper bound to one contract.
|
|
166
|
+
*/
|
|
141
167
|
export class NuqsContractHelper<TContract extends HttpContractConfig> {
|
|
142
168
|
constructor(private contract: TContract) {}
|
|
143
169
|
|
|
170
|
+
/**
|
|
171
|
+
* Create a URL-state query helper for this contract.
|
|
172
|
+
*
|
|
173
|
+
* The contract must declare a query schema so parser keys can be checked
|
|
174
|
+
* against the contract query shape.
|
|
175
|
+
*/
|
|
144
176
|
query<TParsers extends NuqsParserMap<TContract> & UseQueryStatesKeysMap>(
|
|
145
177
|
config: ContractQueryConfig<TContract, TParsers>,
|
|
146
178
|
): NuqsQueryHelper<TContract, TParsers> {
|
|
@@ -155,6 +187,12 @@ export class NuqsContractHelper<TContract extends HttpContractConfig> {
|
|
|
155
187
|
}
|
|
156
188
|
}
|
|
157
189
|
|
|
190
|
+
/**
|
|
191
|
+
* Create a Nuqs adapter factory.
|
|
192
|
+
*
|
|
193
|
+
* Create this once, then bind contracts with the returned `nq(contract)`
|
|
194
|
+
* function.
|
|
195
|
+
*/
|
|
158
196
|
export function createNuqs() {
|
|
159
197
|
return function nq<TContractLike extends ContractLike>(
|
|
160
198
|
contract: TContractLike,
|
|
@@ -164,4 +202,7 @@ export function createNuqs() {
|
|
|
164
202
|
};
|
|
165
203
|
}
|
|
166
204
|
|
|
205
|
+
/**
|
|
206
|
+
* URL key mapping type from Nuqs.
|
|
207
|
+
*/
|
|
167
208
|
export type { UrlKeys };
|