Skip to content

Commit 4c3c7ab

Browse files
committed
refactor(store): make options easier to read
1 parent 5117a9a commit 4c3c7ab

9 files changed

+37
-35
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"format": "prettier --write \"**/*.{ts,tsx,md}\"",
99
"changeset": "changeset",
1010
"version-packages": "changeset version",
11-
"release": "turbo build --filter=docs^... && changeset publish ",
11+
"release": "turbo build --filter='./packages/*'... && changeset publish ",
1212
"test": "vitest --typecheck",
1313
"test:watch": "vitest --watch --typecheck",
1414
"test:ui": "vitest --ui ",

packages/store/CHANGELOG.md

+6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# @davstack/store
22

3+
## 0.1.5
4+
5+
### Patch Changes
6+
7+
- refactor types
8+
39
## 0.1.2
410

511
### Patch Changes

packages/store/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@davstack/store",
3-
"version": "0.1.4",
3+
"version": "0.1.5",
44
"main": "./dist/index.js",
55
"module": "./dist/index.mjs",
66
"types": "./dist/index.d.ts",

packages/store/src/types.ts

+5-8
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
1+
/* eslint-disable no-unused-vars */
12
/* eslint-disable prettier/prettier */
23
import { Draft } from 'immer';
34
import React from 'react';
45
import { StoreApi as RawStoreApi, UseBoundStore } from 'zustand';
56
import { NamedSet } from 'zustand/middleware';
6-
import {
7-
GetState,
8-
StateSelector,
9-
StoreApi as ZustandStoreApi,
10-
} from 'zustand/vanilla';
7+
import { StoreApi as ZustandStoreApi } from 'zustand/vanilla';
118

129
export type StoreApiGet<
1310
T extends State = {},
@@ -133,7 +130,7 @@ export type StateActions<T extends State> = SetRecord<T> & {
133130
mergeState: MergeState<T>;
134131
};
135132
export type StateGetters<T extends State> = GetRecord<T> & {
136-
state: GetState<T>;
133+
state: ZustandStoreApi<T>['getState'];
137134
};
138135

139136
export type SelectorRecord<T> = Record<string, (state: T) => any>;
@@ -168,7 +165,7 @@ export type SetImmerState<T> = (
168165
export type StateCreatorWithDevtools<
169166
T extends State,
170167
CustomSetState = NamedSet<T>,
171-
CustomGetState = GetState<T>,
168+
CustomGetState = ZustandStoreApi<T>['getState'],
172169
CustomStoreApi extends RawStoreApi<T> = RawStoreApi<T>,
173170
> = (set: CustomSetState, get: CustomGetState, api: CustomStoreApi) => T;
174171

@@ -181,7 +178,7 @@ export interface UseImmerStore<T extends State>
181178
extends Omit<UseBoundStore<RawStoreApi<T>>, 'setState'> {
182179
(): T;
183180

184-
<U>(selector: StateSelector<T, U>, equalityFn?: EqualityChecker<U>): U;
181+
<U>(selector: (s: T) => U, equalityFn?: EqualityChecker<U>): U;
185182

186183
setState: SetImmerState<T>;
187184
}

packages/store/src/types/CreateStoreOptions.ts

+23-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import { DevtoolsOptions } from 'zustand/middleware';
22

33
import { State } from '../types';
4-
import { ImmerOptions } from './ImmerOptions';
5-
import { PersistOptions } from './PersistOptions';
64

75
export interface CreateStoreOptions<T extends State, TName> {
86
name?: TName;
@@ -27,3 +25,26 @@ export interface CreateStoreOptions<T extends State, TName> {
2725
*/
2826
persist?: PersistOptions<T>;
2927
}
28+
29+
export interface ImmerOptions {
30+
/**
31+
* Enable autofreeze.
32+
*/
33+
enabledAutoFreeze?: boolean;
34+
enableMapSet?: boolean;
35+
}
36+
37+
import { PersistOptions as ZustandPersistOptions } from 'zustand/middleware';
38+
39+
export type StateStorage = {
40+
getItem: (name: string) => string | null | Promise<string | null>;
41+
setItem: (name: string, value: string) => void | Promise<void>;
42+
};
43+
export type StorageValue<S> = { state: S; version: number };
44+
45+
type PersistOptionsWithoutName<S> = Omit<ZustandPersistOptions<S>, 'name'>;
46+
47+
export type PersistOptions<S> = PersistOptionsWithoutName<S> & {
48+
enabled?: boolean;
49+
name?: string;
50+
};

packages/store/src/types/ImmerOptions.ts

-7
This file was deleted.

packages/store/src/types/PersistOptions.ts

-14
This file was deleted.

packages/store/src/types/index.ts

-2
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,3 @@
33
*/
44

55
export * from './CreateStoreOptions';
6-
export * from './ImmerOptions';
7-
export * from './PersistOptions';

turbo.json

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
"pipeline": {
55
"build": {
66
"outputs": ["dist/**", ".next/**", "!.next/cache/**"],
7+
78
"dependsOn": ["^build"]
89
},
910
"test": {

0 commit comments

Comments
 (0)