Socket
Socket
Sign inDemoInstall

simpler-state

Package Overview
Dependencies
5
Maintainers
1
Versions
61
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.0.0-rc.9-pre.1 to 1.0.0-rc.9-pre.2

68

es/entity.js
import { useEntity } from './useEntity';
import { store } from './store';
export var entity = function entity(initialValue, plugins) {
if (plugins === void 0) {
plugins = [];
}
export const entity = (initialValue, plugins = []) => {
if (initialValue === undefined) throw new Error('Entity requires an initial value.');
if (!(plugins instanceof Array)) throw new Error('Invalid plug-ins array.');
var newEntity = {
const newEntity = {
_value: undefined,

@@ -16,5 +12,3 @@ _subscribers: new Set()

newEntity.get = function () {
return newEntity._value;
};
newEntity.get = () => newEntity._value;

@@ -31,24 +25,14 @@ newEntity.set = createSetter(newEntity);

var createSetter = function createSetter(entity) {
return function (newValue) {
for (var _len = arguments.length, updaterArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
updaterArgs[_key - 1] = arguments[_key];
}
const createSetter = entity => (newValue, ...updaterArgs) => {
if (typeof newValue === 'function') newValue = newValue(entity._value, ...updaterArgs);
entity._value = newValue;
if (typeof newValue === 'function') newValue = newValue.apply(void 0, [entity._value].concat(updaterArgs));
entity._value = newValue;
entity._subscribers.forEach(function (cb) {
return cb(entity._value);
});
};
entity._subscribers.forEach(cb => cb(entity._value));
};
var createInit = function createInit(entity, initialValue) {
return typeof initialValue.then === 'function' ? function () {
const createInit = (entity, initialValue) => {
return typeof initialValue.then === 'function' ? () => {
// Call the setter so that any bound components are updated
initialValue.then(function (value) {
return entity.set(value);
});
} : function () {
initialValue.then(value => entity.set(value));
} : () => {
entity._value = initialValue;

@@ -58,30 +42,22 @@ };

var createHook = function createHook(entity) {
return function () {
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}
return useEntity.apply(void 0, [entity].concat(args));
};
const createHook = entity => {
return (...args) => useEntity(entity, ...args);
};
var createSubscribe = function createSubscribe(entity) {
return function (subscriberFn) {
entity._subscribers.add(subscriberFn);
const createSubscribe = entity => subscriberFn => {
entity._subscribers.add(subscriberFn);
return function () {
entity._subscribers["delete"](subscriberFn);
};
return () => {
entity._subscribers.delete(subscriberFn);
};
};
export var applyPlugins = function applyPlugins(entity, plugins) {
plugins.forEach(function (plugin) {
export const applyPlugins = (entity, plugins) => {
plugins.forEach(plugin => {
if (typeof plugin !== 'object') throw new Error('Invalid plug-in');
var overrideMethod = function overrideMethod(method) {
const overrideMethod = method => {
if (typeof plugin[method] === 'function') {
var override = plugin[method](entity[method], entity);
if (typeof override !== 'function') throw new Error("Invalid override for '" + method + "' in plug-in.");
const override = plugin[method](entity[method], entity);
if (typeof override !== 'function') throw new Error(`Invalid override for '${method}' in plug-in.`);
entity[method] = override;

@@ -88,0 +64,0 @@ }

@@ -1,10 +0,4 @@

import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
import _regeneratorRuntime from "@babel/runtime/regenerator";
export var persistence = function persistence(key, options) {
if (options === void 0) {
options = {};
}
export const persistence = (key, options = {}) => {
if (typeof key !== 'string') throw new Error('Persistence requires a string key.');
var storage = options.storage || 'local';
let storage = options.storage || 'local';
if (storage === 'local') storage = getLocalStorage();else if (storage === 'session') storage = getSessionStorage();else validateCustomStorage(storage);

@@ -18,86 +12,28 @@

return {
init: function init(origInit, entity) {
return function () {
var deserialize = options.deserializeFn || JSON.parse;
init: (origInit, entity) => () => {
const deserialize = options.deserializeFn || JSON.parse;
var getItem = /*#__PURE__*/function () {
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
var value;
return _regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return storage.getItem(key);
const getItem = async () => {
const value = await storage.getItem(key);
case 2:
value = _context.sent;
if (value) {
entity.set(await deserialize(value));
}
};
if (!value) {
_context.next = 9;
break;
}
origInit(); // Fetch persisted value (if any) from storage
_context.t0 = entity;
_context.next = 7;
return deserialize(value);
getItem();
},
set: (origSet, entity) => (...args) => {
const serialize = options.serializeFn || JSON.stringify;
case 7:
_context.t1 = _context.sent;
_context.t0.set.call(_context.t0, _context.t1);
case 9:
case "end":
return _context.stop();
}
}
}, _callee);
}));
return function getItem() {
return _ref.apply(this, arguments);
};
}();
origInit(); // Fetch persisted value (if any) from storage
getItem();
const setItem = async () => {
const value = await serialize(entity.get());
return storage.setItem(key, value);
};
},
set: function set(origSet, entity) {
return function () {
var serialize = options.serializeFn || JSON.stringify;
var setItem = /*#__PURE__*/function () {
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
var value;
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
_context2.next = 2;
return serialize(entity.get());
origSet(...args); // Persist the new value to storage
case 2:
value = _context2.sent;
return _context2.abrupt("return", storage.setItem(key, value));
case 4:
case "end":
return _context2.stop();
}
}
}, _callee2);
}));
return function setItem() {
return _ref2.apply(this, arguments);
};
}();
origSet.apply(void 0, arguments); // Persist the new value to storage
setItem();
};
setItem();
}

@@ -107,3 +43,3 @@ };

var getLocalStorage = function getLocalStorage() {
const getLocalStorage = () => {
try {

@@ -116,3 +52,3 @@ return localStorage;

var getSessionStorage = function getSessionStorage() {
const getSessionStorage = () => {
try {

@@ -125,3 +61,3 @@ return sessionStorage;

var validateCustomStorage = function validateCustomStorage(storage) {
const validateCustomStorage = storage => {
if (typeof storage.getItem !== 'function' || typeof storage.setItem !== 'function') throw new Error('Persistence: Invalid storage.');

@@ -128,0 +64,0 @@ };

import store from './store';
export var resetAll = function resetAll() {
store.forEach(function (entity) {
return entity.init();
});
export const resetAll = () => {
store.forEach(entity => entity.init());
};
export default resetAll;

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

export var store = new Set();
export const store = new Set();
export default store;
import { useState, useCallback, useEffect } from 'react';
import { strictEqual } from './utils';
var identity = function identity(v) {
return v;
};
const identity = v => v;
export var useEntity = function useEntity(entity, transform, equality) {
if (transform === void 0) {
transform = identity;
}
if (equality === void 0) {
equality = strictEqual;
}
export const useEntity = (entity, transform = identity, equality = strictEqual) => {
if (!(entity._subscribers instanceof Set)) throw new Error('Invalid entity.');
var _useState = useState(transform(entity._value)),
state = _useState[0],
setState = _useState[1];
var subscriberFn = useCallback(function (newValue) {
var newComputed = transform(newValue);
var hasChanged = !equality(state, newComputed);
const [state, setState] = useState(transform(entity._value));
const subscriberFn = useCallback(newValue => {
const newComputed = transform(newValue);
const hasChanged = !equality(state, newComputed);
if (hasChanged) setState(newComputed);
}, [transform, equality, state]);
useEffect(function () {
return entity._subscribe(subscriberFn);
}, [subscriberFn, entity]); // Re-sync state in case transform function has changed
useEffect(() => entity._subscribe(subscriberFn), [subscriberFn, entity]); // Re-sync state in case transform function has changed

@@ -32,0 +16,0 @@ subscriberFn(entity._value);

/* Basic equality functions */
export var strictEqual = function strictEqual(a, b) {
return a === b;
};
export var shallowEqual = function shallowEqual(a, b) {
return strictEqual(a, b) || bothObjects(a, b) && equalProps(a, b);
};
export const strictEqual = (a, b) => a === b;
export const shallowEqual = (a, b) => strictEqual(a, b) || bothObjects(a, b) && equalProps(a, b);
var bothObjects = function bothObjects(a, b) {
return typeof a === 'object' && a !== null && typeof b === 'object' && b !== null;
};
const bothObjects = (a, b) => typeof a === 'object' && a !== null && typeof b === 'object' && b !== null;
var equalProps = function equalProps(a, b) {
var keysOfA = Object.keys(a);
var keysOfB = Object.keys(b);
const equalProps = (a, b) => {
const keysOfA = Object.keys(a);
const keysOfB = Object.keys(b);
if (keysOfA.length !== keysOfB.length) return false;
for (var i = 0; i < keysOfA.length; i++) {
var key = keysOfA[i];
for (let i = 0; i < keysOfA.length; i++) {
const key = keysOfA[i];
if (!b.hasOwnProperty(key) || a[key] !== b[key]) return false;

@@ -21,0 +15,0 @@ }

"use strict";
exports.__esModule = true;
exports["default"] = exports.applyPlugins = exports.entity = void 0;
exports.default = exports.applyPlugins = exports.entity = void 0;

@@ -81,3 +81,3 @@ var _useEntity = require("./useEntity");

return function () {
entity._subscribers["delete"](subscriberFn);
entity._subscribers.delete(subscriberFn);
};

@@ -106,2 +106,2 @@ };

var _default = entity;
exports["default"] = _default;
exports.default = _default;

@@ -10,7 +10,7 @@ "use strict";

exports.entity = _entity["default"];
exports.entity = _entity.default;
var _useEntity = _interopRequireDefault(require("./useEntity"));
exports.useEntity = _useEntity["default"];
exports.useEntity = _useEntity.default;

@@ -24,6 +24,6 @@ var _utils = require("./utils");

exports.persistence = _persistence["default"];
exports.persistence = _persistence.default;
var _resetAll = _interopRequireDefault(require("./resetAll"));
exports.resetAll = _resetAll["default"];
exports.resetAll = _resetAll.default;

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

exports.__esModule = true;
exports["default"] = exports.persistence = void 0;
exports.default = exports.persistence = void 0;

@@ -33,5 +33,5 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));

var getItem = /*#__PURE__*/function () {
var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
var value;
return _regenerator["default"].wrap(function _callee$(_context) {
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {

@@ -83,5 +83,5 @@ switch (_context.prev = _context.next) {

var setItem = /*#__PURE__*/function () {
var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
var value;
return _regenerator["default"].wrap(function _callee2$(_context2) {
return _regenerator.default.wrap(function _callee2$(_context2) {
while (1) {

@@ -141,2 +141,2 @@ switch (_context2.prev = _context2.next) {

var _default = persistence;
exports["default"] = _default;
exports.default = _default;

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

exports.__esModule = true;
exports["default"] = exports.resetAll = void 0;
exports.default = exports.resetAll = void 0;

@@ -12,3 +12,3 @@ var _store = _interopRequireDefault(require("./store"));

var resetAll = function resetAll() {
_store["default"].forEach(function (entity) {
_store.default.forEach(function (entity) {
return entity.init();

@@ -20,2 +20,2 @@ });

var _default = resetAll;
exports["default"] = _default;
exports.default = _default;
"use strict";
exports.__esModule = true;
exports["default"] = exports.store = void 0;
exports.default = exports.store = void 0;
var store = new Set();
exports.store = store;
var _default = store;
exports["default"] = _default;
exports.default = _default;
"use strict";
exports.__esModule = true;
exports["default"] = exports.useEntity = void 0;
exports.default = exports.useEntity = void 0;

@@ -44,2 +44,2 @@ var _react = require("react");

var _default = useEntity;
exports["default"] = _default;
exports.default = _default;
{
"name": "simpler-state",
"version": "1.0.0-rc.9-pre.1",
"version": "1.0.0-rc.9-pre.2",
"description": "The simplest app state management for React",

@@ -27,2 +27,3 @@ "keywords": [

],
"sideEffects": false,
"scripts": {

@@ -42,7 +43,8 @@ "build:lib": "cross-env BABEL_ENV=commonjs babel src --out-dir lib --ignore **/*.test.js",

},
"dependencies": {},
"dependencies": {
"@babel/runtime": "^7.13.10"
},
"devDependencies": {
"@babel/cli": "^7.13.14",
"@babel/core": "^7.13.14",
"@babel/plugin-proposal-class-properties": "^7.8.3",
"@babel/plugin-proposal-object-rest-spread": "^7.9.5",

@@ -52,3 +54,2 @@ "@babel/plugin-transform-runtime": "^7.13.10",

"@babel/preset-react": "^7.13.13",
"@babel/runtime": "^7.13.10",
"@typescript-eslint/eslint-plugin": "^4.20.0",

@@ -55,0 +56,0 @@ "@typescript-eslint/parser": "^4.20.0",

SocketSocket SOC 2 Logo

Product

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc