From 754bffa1946cd7ada464bb7e7667e922e5e094fe Mon Sep 17 00:00:00 2001 From: zbeyens Date: Thu, 6 Feb 2025 09:56:13 +0100 Subject: [PATCH] refactor --- .changeset/bright-coats-peel.md | 2 +- .changeset/polite-insects-occur.md | 7 +++++++ README.md | 4 +++- packages/jotai-x/README.md | 4 +++- packages/jotai-x/src/createAtomStore.spec.tsx | 12 ++++++------ packages/jotai-x/src/createAtomStore.ts | 12 ++++++------ packages/jotai-x/src/elementAtom.spec.tsx | 4 ++-- 7 files changed, 28 insertions(+), 17 deletions(-) create mode 100644 .changeset/polite-insects-occur.md diff --git a/.changeset/bright-coats-peel.md b/.changeset/bright-coats-peel.md index 8022cec..4f1443a 100644 --- a/.changeset/bright-coats-peel.md +++ b/.changeset/bright-coats-peel.md @@ -2,4 +2,4 @@ 'jotai-x': patch --- -Add test cases and fix bugs +Fix `deps` param diff --git a/.changeset/polite-insects-occur.md b/.changeset/polite-insects-occur.md new file mode 100644 index 0000000..2669417 --- /dev/null +++ b/.changeset/polite-insects-occur.md @@ -0,0 +1,7 @@ +--- +'jotai-x': minor +--- + +- Rename `useStoreValue` to `useAtomStoreValue` +- Rename `useStoreSet` to `useAtomStoreSet` +- Rename `useStoreState` to `useAtomStoreState` diff --git a/README.md b/README.md index 58e8f7b..1338e61 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ An extension for [Jotai](https://github.com/pmndrs/jotai) that auto-generates ty ## Features - Auto-generated type-safe hooks for each state field -- Simple patterns: `useStoreValue('name')` and `useStoreSet('name', value)` +- Simple patterns: `useValue(key)` and `useSet(key, value)` - Extend your store with computed values using `extend` - Built-in support for hydration, synchronization, and scoped providers @@ -413,11 +413,13 @@ useUserValue('name'); ```ts // Before +const { useAppStore } = createAtomStore({ name: 'Alice' }, { name: 'app' }); const name = useAppStore().get.name(); const setName = useAppStore().set.name(); const [name, setName] = useAppStore().use.name(); // Now +const { useAppStore, useAppValue, useAppSet, useAppState } = createAtomStore({ name: 'Alice' }, { name: 'app' }); const name = useAppValue('name'); const setName = useAppSet('name'); const [name, setName] = useAppState('name'); diff --git a/packages/jotai-x/README.md b/packages/jotai-x/README.md index 58e8f7b..69e4c06 100644 --- a/packages/jotai-x/README.md +++ b/packages/jotai-x/README.md @@ -5,7 +5,7 @@ An extension for [Jotai](https://github.com/pmndrs/jotai) that auto-generates ty ## Features - Auto-generated type-safe hooks for each state field -- Simple patterns: `useStoreValue('name')` and `useStoreSet('name', value)` +- Simple patterns: `useValue('name')` and `useSet('name', value)` - Extend your store with computed values using `extend` - Built-in support for hydration, synchronization, and scoped providers @@ -413,11 +413,13 @@ useUserValue('name'); ```ts // Before +const { useAppStore } = createAtomStore({ name: 'Alice' }, { name: 'app' }); const name = useAppStore().get.name(); const setName = useAppStore().set.name(); const [name, setName] = useAppStore().use.name(); // Now +const { useAppStore, useAppValue, useAppSet, useAppState } = createAtomStore({ name: 'Alice' }, { name: 'app' }); const name = useAppValue('name'); const setName = useAppSet('name'); const [name, setName] = useAppState('name'); diff --git a/packages/jotai-x/src/createAtomStore.spec.tsx b/packages/jotai-x/src/createAtomStore.spec.tsx index c0feb16..7a4a453 100644 --- a/packages/jotai-x/src/createAtomStore.spec.tsx +++ b/packages/jotai-x/src/createAtomStore.spec.tsx @@ -8,10 +8,10 @@ import { splitAtom } from 'jotai/utils'; import { createAtomStore, + useAtomStoreSet, + useAtomStoreState, + useAtomStoreValue, useStoreAtomValue, - useStoreSet, - useStoreState, - useStoreValue, } from './createAtomStore'; describe('createAtomStore', () => { @@ -487,7 +487,7 @@ describe('createAtomStore', () => { /* eslint-enable react-compiler/react-compiler */ const store = useMyTestStoreStore(); const becomeFriends0 = useMyTestStoreValue('becomeFriends'); - const becomeFriends1 = useStoreValue(store, 'becomeFriends'); + const becomeFriends1 = useAtomStoreValue(store, 'becomeFriends'); const becomeFriends2 = useStoreAtomValue( store, myTestStoreStore.atom.becomeFriends @@ -582,7 +582,7 @@ describe('createAtomStore', () => { /* eslint-enable react-compiler/react-compiler */ const store = useMyTestStoreStore(); const setName = useMyTestStoreSet('name'); - const setBecomeFriends = useStoreSet(store, 'becomeFriends'); + const setBecomeFriends = useAtomStoreSet(store, 'becomeFriends'); const [becameFriends, setBecameFriends] = React.useState(false); return ( @@ -682,7 +682,7 @@ describe('createAtomStore', () => { /* eslint-enable react-compiler/react-compiler */ const store = useMyTestStoreStore(); const [name, setName] = useMyTestStoreState('name'); - const [, setBecomeFriends] = useStoreState(store, 'becomeFriends'); + const [, setBecomeFriends] = useAtomStoreState(store, 'becomeFriends'); const [becameFriends, setBecameFriends] = React.useState(false); return ( diff --git a/packages/jotai-x/src/createAtomStore.ts b/packages/jotai-x/src/createAtomStore.ts index f1108ef..9471d45 100644 --- a/packages/jotai-x/src/createAtomStore.ts +++ b/packages/jotai-x/src/createAtomStore.ts @@ -922,11 +922,11 @@ Please wrap them with useCallback or configure the deps array correctly.` } as any; }; -export function useStoreValue>( +export function useAtomStoreValue>( store: ReturnOfUseStoreApi, key: K ): StoreAtoms[K] extends Atom ? V : never; -export function useStoreValue, S>( +export function useAtomStoreValue, S>( store: ReturnOfUseStoreApi, key: K, selector: StoreAtoms[K] extends Atom @@ -934,7 +934,7 @@ export function useStoreValue, S>( : never, deps?: unknown[] ): S; -export function useStoreValue, S>( +export function useAtomStoreValue, S>( store: ReturnOfUseStoreApi, key: K, selector: StoreAtoms[K] extends Atom @@ -943,7 +943,7 @@ export function useStoreValue, S>( equalityFn: (prevSelectorOutput: S, selectorOutput: S) => boolean, deps?: unknown[] ): S; -export function useStoreValue, S>( +export function useAtomStoreValue, S>( store: ReturnOfUseStoreApi, key: K, selector?: StoreAtoms[K] extends Atom @@ -955,14 +955,14 @@ export function useStoreValue, S>( return store.useValue(key, selector, equalityFnOrDeps, deps); } -export function useStoreSet>( +export function useAtomStoreSet>( store: ReturnOfUseStoreApi, key: K ) { return store.useSet(key); } -export function useStoreState>( +export function useAtomStoreState>( store: ReturnOfUseStoreApi, key: K ) { diff --git a/packages/jotai-x/src/elementAtom.spec.tsx b/packages/jotai-x/src/elementAtom.spec.tsx index ec4feb8..24e320b 100644 --- a/packages/jotai-x/src/elementAtom.spec.tsx +++ b/packages/jotai-x/src/elementAtom.spec.tsx @@ -3,7 +3,7 @@ import '@testing-library/jest-dom'; import React from 'react'; import { act, render } from '@testing-library/react'; -import { createAtomStore, useStoreValue } from './createAtomStore'; +import { createAtomStore, useAtomStoreValue } from './createAtomStore'; type TElement = any; @@ -24,7 +24,7 @@ export const useElement = ( pluginKey = SCOPE_ELEMENT ): T => { const store = useElementStore(pluginKey); - const value = useStoreValue(store, 'element'); + const value = useAtomStoreValue(store, 'element'); if (!value) { console.warn(