zustand-querystring 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/README.md ADDED
@@ -0,0 +1,76 @@
1
+ # zustand-querystring
2
+
3
+ A zustand middleware that stores state in the querystring.
4
+
5
+ Quickstart:
6
+ ```ts
7
+ import create from "zustand";
8
+ import { immer } from "zustand/middleware/immer";
9
+ import { querystring } from "zustand-querystring";
10
+
11
+ interface Store {
12
+ count: number;
13
+ incrementCount: () => void;
14
+
15
+ ticks: number;
16
+ incrementTicks: () => void;
17
+
18
+ someNestedState: {
19
+ nestedCount: number;
20
+ incrementNestedCount: () => void;
21
+
22
+ hello: string;
23
+ setHello: (hello: string) => void;
24
+ };
25
+ }
26
+
27
+ export const useStore = create<Store>()(
28
+ querystring(
29
+ immer((set, get) => ({
30
+ count: 0,
31
+ incrementCount: () =>
32
+ set((state) => {
33
+ state.count += 1;
34
+ }),
35
+
36
+ ticks: 0,
37
+ incrementTicks: () =>
38
+ set((state) => {
39
+ state.ticks += 1;
40
+ }),
41
+
42
+ someNestedState: {
43
+ nestedCount: 0,
44
+ incrementNestedCount: () =>
45
+ set((state) => {
46
+ state.someNestedState.nestedCount += 1;
47
+ }),
48
+
49
+ hello: "Hello",
50
+ setHello: (hello: string) =>
51
+ set((state) => {
52
+ state.someNestedState.hello = hello;
53
+ }),
54
+ },
55
+ })),
56
+ {
57
+ // select controls what part of the state is synced with the query string
58
+ // pathname is the current route (e.g. /about or /)
59
+ select(pathname) {
60
+ return {
61
+ count: true,
62
+ // ticks: false, <- false by default
63
+
64
+ someNestedState: {
65
+ nestedCount: true,
66
+ hello: "/about" === pathname,
67
+ },
68
+
69
+ // OR select the whole nested state
70
+ // someNestedState: true
71
+ };
72
+ },
73
+ }
74
+ )
75
+ );
76
+ ```
package/lib/index.d.ts CHANGED
@@ -1 +1 @@
1
- export { queryString, QueryStringOptions } from './middleware.js';
1
+ export { querystring, QueryStringOptions } from './middleware.js';
package/lib/index.js CHANGED
@@ -1 +1 @@
1
- export { queryString } from './middleware.js';
1
+ export { querystring } from './middleware.js';
@@ -7,5 +7,5 @@ export interface QueryStringOptions<T> {
7
7
  select?: (pathname: string) => DeepSelect<T>;
8
8
  }
9
9
  type QueryString = <T, Mps extends [StoreMutatorIdentifier, unknown][] = [], Mcs extends [StoreMutatorIdentifier, unknown][] = []>(initializer: StateCreator<T, Mps, Mcs>, options?: QueryStringOptions<T>) => StateCreator<T, Mps, Mcs>;
10
- export declare const queryString: QueryString;
10
+ export declare const querystring: QueryString;
11
11
  export {};
package/lib/middleware.js CHANGED
@@ -112,4 +112,4 @@ const queryStringImpl = (fn, options) => (set, get, api) => {
112
112
  }
113
113
  return fn(set, get, api);
114
114
  };
115
- export const queryString = queryStringImpl;
115
+ export const querystring = queryStringImpl;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zustand-querystring",
3
- "version": "0.0.1",
3
+ "version": "0.0.3",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "keywords": [