@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 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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EAErB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EACV,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,OAAO,EACZ,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EAE1B,MAAM,WAAW,CAAC;AAEnB,KAAK,UAAU,CAAC,SAAS,SAAS,kBAAkB,IAAI,WAAW,CACjE,UAAU,CAAC,SAAS,CAAC,CACtB,CAAC;AAEF,KAAK,WAAW,CAAC,SAAS,SAAS,kBAAkB,IACnD,UAAU,CAAC,SAAS,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjD,UAAU,CAAC,SAAS,CAAC,GACrB,KAAK,CAAC;AAEZ,KAAK,SAAS,CAAC,SAAS,SAAS,kBAAkB,IACjD,MAAM,WAAW,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;AAExC,KAAK,YAAY,CAAC,SAAS,SAAS,kBAAkB,IAAI,OAAO,CAAC;KAC/D,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,GAAG,qBAAqB,CAAC;SAChD,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;KACxD,CAAC,CAAC,CAAC,CAAC;CACN,CAAC,CAAC;AAEH,MAAM,MAAM,aAAa,CAAC,SAAS,SAAS,kBAAkB,IAC5D,YAAY,CAAC,SAAS,CAAC,CAAC;AAE1B,MAAM,MAAM,SAAS,CAAC,QAAQ,SAAS,qBAAqB,IAC1D,eAAe,CAAC,QAAQ,CAAC,CAAC;AAE5B,KAAK,wBAAwB,CAAC,QAAQ,SAAS,qBAAqB,IAAI,OAAO,CAC7E,qBAAqB,CAAC,QAAQ,CAAC,CAChC,CAAC;AAEF,KAAK,mBAAmB,CACtB,SAAS,SAAS,kBAAkB,EACpC,QAAQ,SAAS,aAAa,CAAC,SAAS,CAAC,GAAG,qBAAqB,IAC/D,wBAAwB,CAAC,QAAQ,CAAC,GAAG;IACvC,OAAO,EAAE,QAAQ,CAAC;CACnB,CAAC;AAEF,KAAK,eAAe,CAAC,CAAC,IAAI;KACvB,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC;CACvE,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX,KAAK,6BAA6B,CAAC,SAAS,SAAS,kBAAkB,IAAI,IAAI,CAC7E,gBAAgB,CAAC,SAAS,CAAC,EAC3B,OAAO,GAAG,SAAS,GAAG,QAAQ,CAC/B,CAAC;AAEF,KAAK,gBAAgB,CAAC,SAAS,SAAS,kBAAkB,IAAI,IAAI,CAChE,uBAAuB,CAAC,SAAS,CAAC,EAClC,OAAO,CACR,GAAG;IACF,KAAK,CAAC,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC;IAC7C,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,KAAK,wBAAwB,CAAC,SAAS,SAAS,kBAAkB,IAChE,eAAe,CAAC,6BAA6B,CAAC,SAAS,CAAC,CAAC,SAAS,KAAK,GACnE,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC,GACpC,CAAC,IAAI,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;AAE1C,qBAAa,eAAe,CAC1B,SAAS,SAAS,kBAAkB,EACpC,QAAQ,SAAS,aAAa,CAAC,SAAS,CAAC,GAAG,qBAAqB;IAG/D,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,MAAM;gBADN,QAAQ,EAAE,SAAS,EACnB,MAAM,EAAE,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC;IAG1D,QAAQ,CACN,OAAO,GAAE,wBAAwB,CAAC,QAAQ,CAAM,GAC/C,oBAAoB,CAAC,QAAQ,CAAC;IAQjC,OAAO,CACL,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,EAC1B,IAAI,GAAE;QACJ,WAAW,CAAC,EAAE,OAAO,CAAC;KAClB,GACL,gBAAgB,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;IAavC,cAAc,CACZ,EAAE,EAAE,wBAAwB,CAAC,SAAS,CAAC,EACvC,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,EAC1B,GAAG,QAAQ,EAAE,wBAAwB,CAAC,SAAS,CAAC,GAC/C,UAAU,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,CAAC;IAiBlE,IAAI,YAAY,IAAI,MAAM,CAEzB;CACF;AAED,qBAAa,kBAAkB,CAAC,SAAS,SAAS,kBAAkB;IACtD,OAAO,CAAC,QAAQ;gBAAR,QAAQ,EAAE,SAAS;IAEvC,KAAK,CAAC,QAAQ,SAAS,aAAa,CAAC,SAAS,CAAC,GAAG,qBAAqB,EACrE,MAAM,EAAE,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,GAC/C,eAAe,CAAC,SAAS,EAAE,QAAQ,CAAC;CAUxC;AAED,wBAAgB,UAAU,KACL,aAAa,SAAS,YAAY,EACnD,UAAU,aAAa,KACtB,kBAAkB,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAItD;AAED,YAAY,EAAE,OAAO,EAAE,CAAC"}
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;AA2DnB,MAAM,OAAO,eAAe;IAKhB;IACA;IAFV,YACU,QAAmB,EACnB,MAAgD;QADhD,aAAQ,GAAR,QAAQ,CAAW;QACnB,WAAM,GAAN,MAAM,CAA0C;IACvD,CAAC;IAEJ,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,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,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,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC5B,CAAC;CACF;AAED,MAAM,OAAO,kBAAkB;IACT;IAApB,YAAoB,QAAmB;QAAnB,aAAQ,GAAR,QAAQ,CAAW;IAAG,CAAC;IAE3C,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,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"}
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beignet/nuqs",
3
- "version": "0.0.1",
3
+ "version": "0.0.3",
4
4
  "type": "module",
5
5
  "description": "nuqs integration for Beignet",
6
6
  "main": "./dist/index.js",
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 };