From 0a42f1b33ad0773c3a3d8234a626023d0cf061b4 Mon Sep 17 00:00:00 2001 From: mychidarko Date: Mon, 20 Nov 2023 12:23:50 +0000 Subject: [PATCH] feat: add resetStore --- packages/store/src/core/functions.ts | 22 ++++++++++++++++++++++ packages/store/src/core/hooks.ts | 17 ++--------------- packages/store/src/core/store.ts | 8 ++++++++ packages/store/src/index.ts | 10 +++++++--- pnpm-lock.yaml | 20 +++++++++++++++++--- 5 files changed, 56 insertions(+), 21 deletions(-) create mode 100644 packages/store/src/core/functions.ts diff --git a/packages/store/src/core/functions.ts b/packages/store/src/core/functions.ts new file mode 100644 index 0000000..41b7155 --- /dev/null +++ b/packages/store/src/core/functions.ts @@ -0,0 +1,22 @@ +import Manager from './store'; + +import type { SetStateAction } from 'react'; +import type { Options, State } from '../@types'; + +export function createStore(options?: Options): void { + return Manager.store(options); +} + +export function setStore( + item: SetStateAction +) { + return Manager.set(item); +} + +export function getStore(item?: string): StateType { + return Manager.get(item); +} + +export function resetStore() { + return Manager.reset(); +} diff --git a/packages/store/src/core/hooks.ts b/packages/store/src/core/hooks.ts index 4c82fc8..e4c8ddf 100644 --- a/packages/store/src/core/hooks.ts +++ b/packages/store/src/core/hooks.ts @@ -1,14 +1,9 @@ import useForceUpdate from 'use-force-update'; -import { SetStateAction, useEffect } from 'react'; import Manager from './store'; -import { Options, State } from '../@types/core'; -import { SetStoreFn, Reducer } from '../@types/functions'; - -export function createStore(options?: Options): void { - return Manager.store(options); -} +import type { State } from '../@types/core'; +import type { SetStoreFn, Reducer } from '../@types/functions'; export function useStore(): [State, SetStoreFn]; export function useStore( @@ -87,12 +82,4 @@ export function useStaticReducer( return Manager.useReducer(reducer); } -export function setStore( - item: SetStateAction -) { - return Manager.set(item); -} -export function getStore(item?: string): StateType { - return Manager.get(item); -} diff --git a/packages/store/src/core/store.ts b/packages/store/src/core/store.ts index bf9c8af..b10b524 100644 --- a/packages/store/src/core/store.ts +++ b/packages/store/src/core/store.ts @@ -182,6 +182,14 @@ export default class Manager { return runner(reducerFunction(reducer.name)); } + /** + * Reset state to it's default value + */ + public static reset() { + this.applyPluginHook('onReset', this._options.defaultState); + this.set(this._options.defaultState); + } + protected static _pluginInit(plugins: Plugin[]) { plugins.forEach((plugin: any) => { /** diff --git a/packages/store/src/index.ts b/packages/store/src/index.ts index 77452b4..f2c5351 100644 --- a/packages/store/src/index.ts +++ b/packages/store/src/index.ts @@ -2,11 +2,15 @@ export * from './@types'; export * from './plugins/'; export { - createStore, - setStore, - getStore, useStore, useStaticStore, useReducer, useStaticReducer, } from './core/hooks'; + +export { + createStore, + setStore, + getStore, + resetStore, +} from './core/functions'; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9132ac8..04fa9b0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -61,7 +61,7 @@ importers: specifier: ^16.9.1 version: 16.18.62 - apps/test: + apps/example: dependencies: '@hanabira/core': specifier: workspace:* @@ -75,6 +75,9 @@ importers: react-dom: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) + solid-js: + specifier: ^1.8.5 + version: 1.8.5 devDependencies: '@hanabira/config': specifier: workspace:* @@ -2046,7 +2049,7 @@ packages: dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.2 - csstype: 3.1.1 + csstype: 3.1.2 dev: true /@types/react@18.2.5: @@ -2714,7 +2717,6 @@ packages: /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} - dev: false /csv-generate@3.4.3: resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} @@ -4630,6 +4632,11 @@ packages: dependencies: lru-cache: 6.0.0 + /seroval@0.12.4: + resolution: {integrity: sha512-JIsZHp98o+okpYN8HEPyI9Blr0gxAUPIGvg3waXrEMFjPz9obiLYMz0uFiUGezKiCK8loosYbn8WsqO8WtAJUA==} + engines: {node: '>=10'} + dev: false + /set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} @@ -4697,6 +4704,13 @@ packages: wcwidth: 1.0.1 yargs: 15.4.1 + /solid-js@1.8.5: + resolution: {integrity: sha512-xvtJvzJzWbsn35oKFhW9kNwaxG1Z/YLMsDp4tLVcYZTMPzvzQ8vEZuyDQ6nt7xDArVgZJ7TUFrJUwrui/oq53A==} + dependencies: + csstype: 3.1.2 + seroval: 0.12.4 + dev: false + /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'}