From c7f76b0a6613204be65fed265ee8854633340744 Mon Sep 17 00:00:00 2001 From: David Heidrich Date: Wed, 23 Aug 2023 02:24:24 +0200 Subject: [PATCH] feat: removed (unnecessary) memoization --- package.json | 8 ++++---- src/lib/middleware.ts | 12 +++--------- src/lib/store.ts | 14 ++++---------- yarn.lock | 5 ----- 4 files changed, 11 insertions(+), 28 deletions(-) diff --git a/package.json b/package.json index e26c5bb..c12c795 100644 --- a/package.json +++ b/package.json @@ -109,9 +109,7 @@ "engines": { "node": ">=14" }, - "dependencies": { - "memoize-one": "^6.0.0" - }, + "dependencies": {}, "peerDependencies": { "history": ">=4", "immer": ">=9", @@ -185,11 +183,13 @@ "dot-prop": "5.2.0" }, "jest": { + "extensionsToTreatAsEsm": [".ts", ".tsx"], "transform": { ".(ts|tsx)": [ "ts-jest", { - "isolatedModules": true + "isolatedModules": true, + "useESM": true } ] }, diff --git a/src/lib/middleware.ts b/src/lib/middleware.ts index 1912185..ad2bec9 100644 --- a/src/lib/middleware.ts +++ b/src/lib/middleware.ts @@ -1,6 +1,5 @@ /* tslint:disable:no-expression-statement readonly-keyword no-mixed-interface no-object-mutation readonly-array */ import { Patch, produceWithPatches } from 'immer' -import memoizeOneImport from 'memoize-one' import { StoreApi } from 'zustand' // tslint:disable-next-line:no-submodule-imports import { shallow } from 'zustand/shallow' @@ -15,8 +14,6 @@ import { applyFlatConfigToState, } from './utils.js' -const memoizeOne = memoizeOneImport.default || memoizeOneImport - export enum HistoryEventType { PUSH, REPLACE, @@ -314,10 +311,8 @@ export const converter = get: StoreApi>['getState'], api: StoreApi> ): StoreState => { - const memoizedGetInitialQueries = memoizeOne(parseSearchString) - const updateFromQuery = (search: string | URLSearchParams) => { - const nextQueries = memoizedGetInitialQueries(search) + const nextQueries = parseSearchString(search) const namespaces = get().namespaces Object.keys(namespaces).forEach((ns) => { // It's possible that the ns got cleared while we are applying the new state. @@ -395,8 +390,7 @@ export const converter = ) }, /** the initial queries when the script got executed first (usually on page load). */ - initialQueries: () => - memoizedGetInitialQueries(historyInstance.initialSearch()), + initialQueries: () => parseSearchString(historyInstance.initialSearch()), /** here we store all data and configurations for the different namespaces */ namespaces: {}, /** pushes a new state for a given namespace, (will use history.pushState) */ @@ -426,7 +420,7 @@ export const converter = state.initialValues = initialValues state.query = applyFlatConfigToState( state.mappedConfig, - memoizedGetInitialQueries(historyInstance.initialSearch()), + parseSearchString(historyInstance.initialSearch()), ns, state.values, initialValues diff --git a/src/lib/store.ts b/src/lib/store.ts index 4f0b7c8..dac70db 100644 --- a/src/lib/store.ts +++ b/src/lib/store.ts @@ -1,6 +1,5 @@ /* tslint:disable:no-expression-statement readonly-array no-shadowed-variable */ import { Draft, enablePatches, produce } from 'immer' -import memoizeOneImport from 'memoize-one' import { createContext, useCallback, @@ -15,8 +14,6 @@ import { devtools, subscribeWithSelector } from 'zustand/middleware' // tslint:disable-next-line:no-submodule-imports import { createWithEqualityFn } from 'zustand/traditional' -const memoizeOne = memoizeOneImport.default || memoizeOneImport - // tslint:disable-next-line:no-submodule-imports import { shallow } from 'zustand/shallow' import { @@ -150,9 +147,6 @@ export const factoryParameters = ( } } - const memInitBlank = memoizeOne(initBlank) - const memCreateInitialValues = memoizeOne(createInitialValues) - const useQuery = () => { const useStore = assertContextExists( useContext(StoreContext) as UseBoundStore< @@ -189,8 +183,8 @@ export const factoryParameters = ( shallow ) const initialRegisterState = useMemo(() => { - const initialValues = memCreateInitialValues(defaultInitialValues) - return memInitBlank(initialQueries(), initialValues) + const initialValues = createInitialValues(defaultInitialValues) + return initBlank(initialQueries(), initialValues) }, [useStore, defaultInitialValues]) const [currentState, setCurrentState] = useState({ @@ -284,7 +278,7 @@ export const factoryParameters = ( ): string => { const thisInitialValues = typeof initialValues === 'undefined' - ? memCreateInitialValues(defaultInitialValues) + ? createInitialValues(defaultInitialValues) : initialValues return new URLSearchParams( createQueryObject(flatConfig, ns, values, thisInitialValues) @@ -297,7 +291,7 @@ export const factoryParameters = ( ): Partial => { const thisInitialValues = typeof initialValues === 'undefined' - ? memCreateInitialValues(defaultInitialValues) + ? createInitialValues(defaultInitialValues) : initialValues return produce({}, (draft: Draft) => { const parsedQuery = new URLSearchParams(query) diff --git a/yarn.lock b/yarn.lock index a7d9c75..6b341ea 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10921,11 +10921,6 @@ memfs@^3.1.2, memfs@^3.2.2: dependencies: fs-monkey "^1.0.3" -memoize-one@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-6.0.0.tgz#b2591b871ed82948aee4727dc6abceeeac8c1045" - integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw== - memoizerific@^1.11.3: version "1.11.3" resolved "https://registry.yarnpkg.com/memoizerific/-/memoizerific-1.11.3.tgz#7c87a4646444c32d75438570905f2dbd1b1a805a"