Socket
Socket
Sign inDemoInstall

ngrx-store-localstorage

Package Overview
Dependencies
6
Maintainers
1
Versions
49
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 7.0.1 to 8.0.0

1

dist/index.d.ts

@@ -14,2 +14,3 @@ export declare const dateReviver: (key: string, value: any) => any;

syncCondition?: (state: any) => any;
checkStorageAvailability?: boolean;
}

44

dist/index.js

@@ -12,3 +12,3 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
var merge = require("lodash.merge");
var deepmerge = require("deepmerge");
var INIT_ACTION = '@ngrx/store/init';

@@ -25,2 +25,5 @@ var UPDATE_ACTION = '@ngrx/store/update-reducers';

var dummyReviver = function (key, value) { return value; };
var checkIsBrowserEnv = function () {
return typeof window !== 'undefined';
};
var validateStateKeys = function (keys) {

@@ -76,16 +79,18 @@ return keys.map(function (key) {

}
var stateSlice = storage.getItem(storageKeySerializer(key));
if (stateSlice) {
// Use provided decrypt function
if (decrypt) {
stateSlice = decrypt(stateSlice);
if (storage !== undefined) {
var stateSlice = storage.getItem(storageKeySerializer(key));
if (stateSlice) {
// Use provided decrypt function
if (decrypt) {
stateSlice = decrypt(stateSlice);
}
var isObjectRegex = new RegExp('{|\\[');
var raw = stateSlice;
if (stateSlice === 'null' || isObjectRegex.test(stateSlice.charAt(0))) {
raw = JSON.parse(stateSlice, reviver);
}
return Object.assign({}, acc, (_a = {},
_a[key] = deserialize ? deserialize(raw) : raw,
_a));
}
var isObjectRegex = new RegExp('{|\\[');
var raw = stateSlice;
if (stateSlice === 'null' || isObjectRegex.test(stateSlice.charAt(0))) {
raw = JSON.parse(stateSlice, reviver);
}
return Object.assign({}, acc, (_a = {},
_a[key] = deserialize ? deserialize(raw) : raw,
_a));
}

@@ -159,3 +164,3 @@ return acc;

}
if (typeof stateSlice !== 'undefined') {
if (typeof stateSlice !== 'undefined' && storage !== undefined) {
try {

@@ -187,3 +192,4 @@ if (encrypt) {

exports.localStorageSync = function (config) { return function (reducer) {
if (config.storage === undefined) {
if (config.storage === undefined &&
!config.checkStorageAvailability || (config.checkStorageAvailability && checkIsBrowserEnv())) {
config.storage = localStorage || window.localStorage;

@@ -212,3 +218,7 @@ }

if ((action.type === INIT_ACTION || action.type === UPDATE_ACTION) && rehydratedState) {
nextState = merge({}, nextState, rehydratedState);
var overwriteMerge = function (destinationArray, sourceArray, options) { return sourceArray; };
var options = {
arrayMerge: overwriteMerge
};
nextState = deepmerge(nextState, rehydratedState, options);
}

@@ -215,0 +225,0 @@ nextState = reducer(nextState, action);

{
"name": "ngrx-store-localstorage",
"version": "7.0.1",
"version": "8.0.0",
"description": "State and local storage syncing for @ngrx/store",

@@ -59,4 +59,4 @@ "main": "./dist/index.js",

"dependencies": {
"lodash.merge": "^4.6.1"
"deepmerge": "^3.2.0"
}
}

@@ -80,2 +80,4 @@ # ngrx-store-localstorage

* `syncCondition` (optional) `(state) => boolean`: When set, sync to storage medium will only occur when this function returns a true boolean. Example: `(state) => state.config.syncToStorage` will check the state tree under config.syncToStorage and if true, it will sync to the storage. If undefined or false it will not sync to storage. Often useful for "remember me" options in login.
* `checkStorageAvailability` \(*boolean? = false*): Specify if the storage availability checking is expected, i.e. for server side rendering / Universal.
Usage: `localStorageSync({keys: ['todos', 'visibilityFilter'], storageKeySerializer: (key) => 'cool_' + key, ... })`. In this example `Storage` will use keys `cool_todos` and `cool_visibilityFilter` keys to store `todos` and `visibilityFilter` slices of state). The key itself is used by default - `(key) => key`.

@@ -115,1 +117,2 @@

* `removeOnUndefined` \(*boolean? = false*): Specify if the state is removed from the storage when the new value is undefined.
* `checkStorageAvailability` \(*boolean? = false*): Specify if the storage availability checking is expected, i.e. for server side rendering / Universal.

@@ -1,2 +0,2 @@

import * as merge from 'lodash.merge';
import * as deepmerge from 'deepmerge';

@@ -17,2 +17,6 @@ const INIT_ACTION = '@ngrx/store/init';

const checkIsBrowserEnv = () => {
return typeof window !== 'undefined'
};
const validateStateKeys = (keys: any[]) => {

@@ -87,20 +91,21 @@ return keys.map(key => {

}
if (storage !== undefined) {
let stateSlice = storage.getItem(storageKeySerializer(key));
if (stateSlice) {
// Use provided decrypt function
if (decrypt) {
stateSlice = decrypt(stateSlice);
}
let stateSlice = storage.getItem(storageKeySerializer(key));
if (stateSlice) {
// Use provided decrypt function
if (decrypt) {
stateSlice = decrypt(stateSlice);
}
const isObjectRegex = new RegExp('{|\\[');
let raw = stateSlice;
const isObjectRegex = new RegExp('{|\\[');
let raw = stateSlice;
if (stateSlice === 'null' || isObjectRegex.test(stateSlice.charAt(0))) {
raw = JSON.parse(stateSlice, reviver);
}
if (stateSlice === 'null' || isObjectRegex.test(stateSlice.charAt(0))) {
raw = JSON.parse(stateSlice, reviver);
return Object.assign({}, acc, {
[key]: deserialize ? deserialize(raw) : raw
});
}
return Object.assign({}, acc, {
[key]: deserialize ? deserialize(raw) : raw
});
}

@@ -187,3 +192,3 @@ return acc;

if (typeof stateSlice !== 'undefined') {
if (typeof stateSlice !== 'undefined' && storage !== undefined) {
try {

@@ -223,3 +228,5 @@ if (encrypt) {

) => {
if (config.storage === undefined) {
if (config.storage === undefined &&
!config.checkStorageAvailability || (config.checkStorageAvailability && checkIsBrowserEnv())
) {
config.storage = localStorage || window.localStorage;

@@ -258,3 +265,7 @@ }

if ((action.type === INIT_ACTION || action.type === UPDATE_ACTION) && rehydratedState) {
nextState = merge({}, nextState, rehydratedState);
const overwriteMerge = (destinationArray, sourceArray, options) => sourceArray;
const options: deepmerge.Options = {
arrayMerge: overwriteMerge
};
nextState = deepmerge(nextState, rehydratedState, options);
}

@@ -309,2 +320,3 @@

syncCondition?: (state: any) => any;
checkStorageAvailability?: boolean;
}

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc