From 249574a5a9b2bb010ab02754b6a8dcbc7b7e888c Mon Sep 17 00:00:00 2001 From: Iskren Slavov Date: Thu, 8 Sep 2022 14:14:14 +0300 Subject: [PATCH] Get rid of lodash.isequal --- package-lock.json | 101 +++++++++++++++++++--------------- package.json | 5 +- src/__tests__/init.test.ts | 2 +- src/__tests__/persist.test.ts | 17 +++--- src/init.ts | 4 +- src/persist.ts | 6 +- 6 files changed, 73 insertions(+), 62 deletions(-) diff --git a/package-lock.json b/package-lock.json index f6db160..262ec5e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,15 +1,15 @@ { "name": "redux-remember", - "version": "3.1.0", + "version": "3.1.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "redux-remember", - "version": "3.1.0", + "version": "3.1.1", "license": "MIT", "dependencies": { - "lodash.isequal": "^4.5.0" + "lauqe": "^1.5.0" }, "devDependencies": { "@babel/cli": "^7.12.16", @@ -20,7 +20,6 @@ "@rollup/plugin-commonjs": "^17.1.0", "@rollup/plugin-node-resolve": "^11.1.1", "@types/jest": "^26.0.20", - "@types/lodash.isequal": "^4.5.6", "@wessberg/rollup-plugin-ts": "^1.3.8", "babel-jest": "^26.6.3", "cross-env": "^7.0.3", @@ -2387,21 +2386,6 @@ "pretty-format": "^26.0.0" } }, - "node_modules/@types/lodash": { - "version": "4.14.184", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.184.tgz", - "integrity": "sha512-RoZphVtHbxPZizt4IcILciSWiC6dcn+eZ8oX9IWEYfDMcocdd42f7NPI6fQj+6zI8y4E0L7gu2pcZKLGTRaV9Q==", - "dev": true - }, - "node_modules/@types/lodash.isequal": { - "version": "4.5.6", - "resolved": "https://registry.npmjs.org/@types/lodash.isequal/-/lodash.isequal-4.5.6.tgz", - "integrity": "sha512-Ww4UGSe3DmtvLLJm2F16hDwEQSv7U0Rr8SujLUA2wHI2D2dm8kPu6Et+/y303LfjTIwSBKXB/YTUcAKpem/XEg==", - "dev": true, - "dependencies": { - "@types/lodash": "*" - } - }, "node_modules/@types/node": { "version": "14.14.25", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.25.tgz", @@ -3782,6 +3766,15 @@ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", "dev": true }, + "node_modules/curry-rice": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/curry-rice/-/curry-rice-1.0.0.tgz", + "integrity": "sha512-rpXOEtPurOBZGieMQf/wG7YW+zi2N7EWrkaVBFLZYCUyG2LiLLuNup9yIdasuiCmo+O/LTwPDiijotmSlRLYXA==", + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/tomoki_miyauci" + } + }, "node_modules/dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -4477,6 +4470,18 @@ "node": ">=8" } }, + "node_modules/fonction": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/fonction/-/fonction-1.9.0.tgz", + "integrity": "sha512-kFt8/QbJdrVukhppuOwuSmNsAxfkl2LH9OygARP7pUfb7aJzJUoF7triyww6YjY40F/m9x+qoJX9zhEk2c6gjA==", + "dependencies": { + "curry-rice": "^1.0.0" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/tomoki_miyauci" + } + }, "node_modules/for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -7416,6 +7421,18 @@ "node": ">=6" } }, + "node_modules/lauqe": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lauqe/-/lauqe-1.5.0.tgz", + "integrity": "sha512-GlBF1bdD27NPrRSZ3UAp7eH1S1nCbFEMP1Hz/22M3Bh/9mgqwNYif2WiersbqtafJ7sPMALPQrVZAx9EFopfFg==", + "dependencies": { + "fonction": "^1.8.0-beta.6" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/tomoki_miyauci" + } + }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -7462,11 +7479,6 @@ "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", "dev": true }, - "node_modules/lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" - }, "node_modules/lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", @@ -11780,21 +11792,6 @@ "pretty-format": "^26.0.0" } }, - "@types/lodash": { - "version": "4.14.184", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.184.tgz", - "integrity": "sha512-RoZphVtHbxPZizt4IcILciSWiC6dcn+eZ8oX9IWEYfDMcocdd42f7NPI6fQj+6zI8y4E0L7gu2pcZKLGTRaV9Q==", - "dev": true - }, - "@types/lodash.isequal": { - "version": "4.5.6", - "resolved": "https://registry.npmjs.org/@types/lodash.isequal/-/lodash.isequal-4.5.6.tgz", - "integrity": "sha512-Ww4UGSe3DmtvLLJm2F16hDwEQSv7U0Rr8SujLUA2wHI2D2dm8kPu6Et+/y303LfjTIwSBKXB/YTUcAKpem/XEg==", - "dev": true, - "requires": { - "@types/lodash": "*" - } - }, "@types/node": { "version": "14.14.25", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.25.tgz", @@ -12865,6 +12862,11 @@ } } }, + "curry-rice": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/curry-rice/-/curry-rice-1.0.0.tgz", + "integrity": "sha512-rpXOEtPurOBZGieMQf/wG7YW+zi2N7EWrkaVBFLZYCUyG2LiLLuNup9yIdasuiCmo+O/LTwPDiijotmSlRLYXA==" + }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -13418,6 +13420,14 @@ "path-exists": "^4.0.0" } }, + "fonction": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/fonction/-/fonction-1.9.0.tgz", + "integrity": "sha512-kFt8/QbJdrVukhppuOwuSmNsAxfkl2LH9OygARP7pUfb7aJzJUoF7triyww6YjY40F/m9x+qoJX9zhEk2c6gjA==", + "requires": { + "curry-rice": "^1.0.0" + } + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -15643,6 +15653,14 @@ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true }, + "lauqe": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lauqe/-/lauqe-1.5.0.tgz", + "integrity": "sha512-GlBF1bdD27NPrRSZ3UAp7eH1S1nCbFEMP1Hz/22M3Bh/9mgqwNYif2WiersbqtafJ7sPMALPQrVZAx9EFopfFg==", + "requires": { + "fonction": "^1.8.0-beta.6" + } + }, "leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -15680,11 +15698,6 @@ "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", "dev": true }, - "lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" - }, "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", diff --git a/package.json b/package.json index 533dfc0..60cc7de 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redux-remember", - "version": "3.1.0", + "version": "3.1.1", "description": "Saves and loads your redux state from a key-value store of your choice", "main": "lib/index.js", "module": "es/index.js", @@ -54,7 +54,7 @@ "react-native" ], "dependencies": { - "lodash.isequal": "^4.5.0" + "lauqe": "^1.5.0" }, "devDependencies": { "@babel/cli": "^7.12.16", @@ -65,7 +65,6 @@ "@rollup/plugin-commonjs": "^17.1.0", "@rollup/plugin-node-resolve": "^11.1.1", "@types/jest": "^26.0.20", - "@types/lodash.isequal": "^4.5.6", "@wessberg/rollup-plugin-ts": "^1.3.8", "babel-jest": "^26.6.3", "cross-env": "^7.0.3", diff --git a/src/__tests__/init.test.ts b/src/__tests__/init.test.ts index 5659e50..d575b72 100644 --- a/src/__tests__/init.test.ts +++ b/src/__tests__/init.test.ts @@ -131,7 +131,7 @@ describe('init.ts', () => { it('does not call store.dispatch()', async () => { jest.resetModules(); - jest.mock('lodash.isequal', () => () => true); + jest.mock('lauqe', () => ({ equal: () => true })); await require('../init').default(...args); expect(mockStore.dispatch).toBeCalledTimes(0); diff --git a/src/__tests__/persist.test.ts b/src/__tests__/persist.test.ts index 624ce86..0b00814 100644 --- a/src/__tests__/persist.test.ts +++ b/src/__tests__/persist.test.ts @@ -14,10 +14,9 @@ describe('persist.ts', () => { mockIsEqual = jest.fn((a, b) => a === b); - jest.mock( - 'lodash.isequal', - () => mockIsEqual - ); + jest.mock('lauqe', () => ({ + equal: mockIsEqual + })); mod = require('../persist'); }); @@ -28,7 +27,7 @@ describe('persist.ts', () => { }); describe('saveAllKeyed()', () => { - it('calls lodash.isequal()', async () => { + it('calls lauqe.equal()', async () => { await mod.saveAllKeyed( { key1: 'val1', @@ -113,7 +112,7 @@ describe('persist.ts', () => { }); it('does not call driver.setItem()', async () => { - jest.mock('lodash.isequal', () => () => true); + jest.mock('lauqe', () => ({ equal: () => true })); jest.resetModules(); mod = require('../persist'); @@ -139,7 +138,7 @@ describe('persist.ts', () => { }); describe('saveAll()', () => { - it('calls lodash.isequal()', async () => { + it('calls lauqe.equal()', async () => { const state = { key1: 'val1', key2: 'val2' @@ -222,7 +221,7 @@ describe('persist.ts', () => { }); it('does not call driver.setItem()', async () => { - jest.mock('lodash.isequal', () => () => true); + jest.mock('lauqe', () => ({ equal: () => true })); jest.resetModules(); mod = require('../persist'); @@ -291,7 +290,7 @@ describe('persist.ts', () => { }); it('calls console.warn()', async () => { - jest.mock('lodash.isequal', () => () => false); + jest.mock('lauqe', () => ({ equal: () => false })); jest.resetModules(); mod = require('../persist'); diff --git a/src/init.ts b/src/init.ts index 0b4e486..8f4acb1 100644 --- a/src/init.ts +++ b/src/init.ts @@ -2,7 +2,7 @@ import { Store } from 'redux'; import { ExtendedOptions } from './types'; import { rehydrate } from './rehydrate'; import { persist } from './persist'; -import isEqual from 'lodash.isequal'; +import { equal } from 'lauqe'; import { REMEMBER_PERSISTED } from './action-types'; import { pick, throttle } from './utils'; @@ -38,7 +38,7 @@ const init = async ( { prefix, driver, serialize, persistWholeStore } ); - if (!isEqual(state, oldState)) { + if (!equal(state, oldState)) { store.dispatch({ type: REMEMBER_PERSISTED, payload: state diff --git a/src/persist.ts b/src/persist.ts index 2629a3d..4af7737 100644 --- a/src/persist.ts +++ b/src/persist.ts @@ -1,4 +1,4 @@ -import isEqual from 'lodash.isequal'; +import { equal } from 'lauqe'; import { ExtendedOptions } from './types'; type SaveAllOptions = Pick< @@ -11,7 +11,7 @@ export const saveAll = ( oldState: any, { prefix, driver, serialize }: SaveAllOptions ) => { - if (!isEqual(state, oldState)) { + if (!equal(state, oldState)) { return driver.setItem( `${prefix}rootState`, serialize(state, 'rootState') @@ -25,7 +25,7 @@ export const saveAllKeyed = ( { prefix, driver, serialize }: SaveAllOptions ) => Promise.all( Object.keys(state).map(key => { - if (isEqual(state[key], oldState[key])) { + if (equal(state[key], oldState[key])) { return Promise.resolve(); }