zustand-querystring 0.6.5 → 0.7.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/dist/index.d.mts CHANGED
@@ -1,5 +1,16 @@
1
1
  import { StoreMutatorIdentifier, StateCreator } from 'zustand/vanilla';
2
2
 
3
+ type Write<T, U> = Omit<T, keyof U> & U;
4
+ type WithQueryString<S, T> = Write<S, {
5
+ setDefaults: (partial: Partial<T>) => void;
6
+ }>;
7
+ declare module 'zustand/vanilla' {
8
+ interface StoreMutators<S, A> {
9
+ 'zustand-querystring': WithQueryString<S, S extends {
10
+ getState: () => infer T;
11
+ } ? T : never>;
12
+ }
13
+ }
3
14
  type DeepSelect<T> = T extends object ? {
4
15
  [P in keyof T]?: DeepSelect<T[P]> | boolean;
5
16
  } : boolean;
@@ -54,7 +65,7 @@ interface QueryStringOptions<T, K extends string | false = string | false> {
54
65
  /** Bidirectional mapping between store state shape and URL state shape. */
55
66
  map?: QueryStringMap<T>;
56
67
  }
57
- type QueryString = <T, Mps extends [StoreMutatorIdentifier, unknown][] = [], Mcs extends [StoreMutatorIdentifier, unknown][] = []>(initializer: StateCreator<T, Mps, Mcs>, options?: QueryStringOptions<T>) => StateCreator<T, Mps, Mcs>;
68
+ type QueryString = <T, Mps extends [StoreMutatorIdentifier, unknown][] = [], Mcs extends [StoreMutatorIdentifier, unknown][] = []>(initializer: StateCreator<T, [...Mps, ['zustand-querystring', never]], Mcs>, options?: QueryStringOptions<T>) => StateCreator<T, Mps, [['zustand-querystring', never], ...Mcs]>;
58
69
  declare const querystring: QueryString;
59
70
 
60
71
  export { type ParseContext, type QueryStringFormat, type QueryStringFormatFor, type QueryStringFormatNamespaced, type QueryStringFormatStandalone, type QueryStringMap, type QueryStringOptions, type QueryStringParam, type QueryStringParams, createMap, querystring };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,16 @@
1
1
  import { StoreMutatorIdentifier, StateCreator } from 'zustand/vanilla';
2
2
 
3
+ type Write<T, U> = Omit<T, keyof U> & U;
4
+ type WithQueryString<S, T> = Write<S, {
5
+ setDefaults: (partial: Partial<T>) => void;
6
+ }>;
7
+ declare module 'zustand/vanilla' {
8
+ interface StoreMutators<S, A> {
9
+ 'zustand-querystring': WithQueryString<S, S extends {
10
+ getState: () => infer T;
11
+ } ? T : never>;
12
+ }
13
+ }
3
14
  type DeepSelect<T> = T extends object ? {
4
15
  [P in keyof T]?: DeepSelect<T[P]> | boolean;
5
16
  } : boolean;
@@ -54,7 +65,7 @@ interface QueryStringOptions<T, K extends string | false = string | false> {
54
65
  /** Bidirectional mapping between store state shape and URL state shape. */
55
66
  map?: QueryStringMap<T>;
56
67
  }
57
- type QueryString = <T, Mps extends [StoreMutatorIdentifier, unknown][] = [], Mcs extends [StoreMutatorIdentifier, unknown][] = []>(initializer: StateCreator<T, Mps, Mcs>, options?: QueryStringOptions<T>) => StateCreator<T, Mps, Mcs>;
68
+ type QueryString = <T, Mps extends [StoreMutatorIdentifier, unknown][] = [], Mcs extends [StoreMutatorIdentifier, unknown][] = []>(initializer: StateCreator<T, [...Mps, ['zustand-querystring', never]], Mcs>, options?: QueryStringOptions<T>) => StateCreator<T, Mps, [['zustand-querystring', never], ...Mcs]>;
58
69
  declare const querystring: QueryString;
59
70
 
60
71
  export { type ParseContext, type QueryStringFormat, type QueryStringFormatFor, type QueryStringFormatNamespaced, type QueryStringFormatStandalone, type QueryStringMap, type QueryStringOptions, type QueryStringParam, type QueryStringParams, createMap, querystring };
package/dist/index.js CHANGED
@@ -542,7 +542,7 @@ var queryStringImpl = (fn, options) => (set, get, api) => {
542
542
  }
543
543
  };
544
544
  if (typeof window !== "undefined") {
545
- const initialState = fn(
545
+ let initialState = fn(
546
546
  (...args) => {
547
547
  set(...args);
548
548
  setQuery();
@@ -557,6 +557,19 @@ var queryStringImpl = (fn, options) => (set, get, api) => {
557
557
  }
558
558
  return initialState;
559
559
  };
560
+ api.setDefaults = (partial) => {
561
+ initialState = (0, import_lodash_es.mergeWith)(
562
+ {},
563
+ initialState,
564
+ partial,
565
+ (_objValue, srcValue) => {
566
+ if (Array.isArray(srcValue)) {
567
+ return srcValue;
568
+ }
569
+ return void 0;
570
+ }
571
+ );
572
+ };
560
573
  const setQuery = () => {
561
574
  const url = new URL(window.location.href);
562
575
  const selectedState = getSelectedState(get(), url.pathname);
package/dist/index.mjs CHANGED
@@ -148,7 +148,7 @@ var queryStringImpl = (fn, options) => (set, get, api) => {
148
148
  }
149
149
  };
150
150
  if (typeof window !== "undefined") {
151
- const initialState = fn(
151
+ let initialState = fn(
152
152
  (...args) => {
153
153
  set(...args);
154
154
  setQuery();
@@ -163,6 +163,19 @@ var queryStringImpl = (fn, options) => (set, get, api) => {
163
163
  }
164
164
  return initialState;
165
165
  };
166
+ api.setDefaults = (partial) => {
167
+ initialState = mergeWith(
168
+ {},
169
+ initialState,
170
+ partial,
171
+ (_objValue, srcValue) => {
172
+ if (Array.isArray(srcValue)) {
173
+ return srcValue;
174
+ }
175
+ return void 0;
176
+ }
177
+ );
178
+ };
166
179
  const setQuery = () => {
167
180
  const url = new URL(window.location.href);
168
181
  const selectedState = getSelectedState(get(), url.pathname);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zustand-querystring",
3
- "version": "0.6.5",
3
+ "version": "0.7.0",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -13,6 +13,12 @@
13
13
  "type": "github",
14
14
  "url": "https://github.com/nitedani/zustand-querystring"
15
15
  },
16
+ "scripts": {
17
+ "build": "tsup",
18
+ "dev": "tsup --watch",
19
+ "test": "vitest run",
20
+ "test:watch": "vitest"
21
+ },
16
22
  "exports": {
17
23
  ".": {
18
24
  "types": "./dist/index.d.ts",
@@ -92,11 +98,5 @@
92
98
  "vitest": "^4.0.12",
93
99
  "vitest-browser-react": "^2.0.2",
94
100
  "zustand": "^5.0.3"
95
- },
96
- "scripts": {
97
- "build": "tsup",
98
- "dev": "tsup --watch",
99
- "test": "vitest run",
100
- "test:watch": "vitest"
101
101
  }
102
- }
102
+ }