New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@modern-js-reduck/plugin-immutable

Package Overview
Dependencies
Maintainers
6
Versions
26
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@modern-js-reduck/plugin-immutable - npm Package Compare versions

Comparing version 1.0.1 to 1.0.2

68

dist/js/modern/__test__/index.test.js

@@ -1,7 +0,4 @@

function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
/* eslint-disable @typescript-eslint/restrict-plus-operands */
import { model, createStore } from '@modern-js-reduck/store';

@@ -19,3 +16,3 @@ import immerPlugin from '..';

pureAdd(state) {
return _objectSpread(_objectSpread({}, state), {}, {
return _extends({}, state, {
value: state.value + 1

@@ -27,5 +24,29 @@ });

});
const count2 = model('count2').define({
state: {
value: 1
},
computed: {
addOne: state => state.value + 1,
sum: [count, (state, state2) => state.value + state2.value]
},
actions: {
add(state) {
state.value += 1;
},
pureAdd(state) {
return _extends({}, state, {
value: state.value + 1
});
}
}
});
describe('test immer', () => {
const store = createStore({
plugins: [immerPlugin]
let store;
beforeEach(() => {
store = createStore({
plugins: [immerPlugin]
});
});

@@ -35,3 +56,3 @@ test('mutable state state in action should work', () => {

let stateUpdated = false;
const unsubribe = subscribe(() => {
const unsubscribe = subscribe(() => {
expect(store.use(count)[0]).toEqual({

@@ -43,3 +64,3 @@ value: 2

actions.add();
unsubribe();
unsubscribe();
expect(stateUpdated).toBe(true);

@@ -50,5 +71,5 @@ });

let stateUpdated = false;
const unsubribe = subscribe(() => {
const unsubscribe = subscribe(() => {
expect(store.use(count)[0]).toEqual({
value: 3
value: 2
});

@@ -58,5 +79,24 @@ stateUpdated = true;

actions.pureAdd();
unsubribe();
unsubscribe();
expect(stateUpdated).toBe(true);
});
});
test('computed properties should work', () => {
const [, count1Actions] = store.use(count);
const [, count2Actions, subscribe] = store.use(count2);
count2Actions.pureAdd();
const [count2State] = store.use(count2);
expect(count2State.addOne).toEqual(3);
expect(count2State.sum).toEqual(3);
let stateUpdated = false;
const unsubscribe = subscribe(() => {
stateUpdated = true;
});
count1Actions.add();
const [updateCount2State] = store.use(count2);
expect(stateUpdated).toBe(true);
expect(updateCount2State.addOne).toEqual(3);
expect(updateCount2State.sum).toEqual(4);
unsubscribe();
});
});
/* eslint-enable @typescript-eslint/restrict-plus-operands */
import { createPlugin } from '@modern-js-reduck/store';
import { produce } from 'immer';
import { produce, enableES5, enableMapSet, setAutoFreeze } from 'immer';
enableES5();
enableMapSet();
setAutoFreeze(false);
export default createPlugin(() => ({

@@ -4,0 +7,0 @@ beforeReducer(reducer) {

@@ -1,19 +0,31 @@

"use strict";
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
var _store = require("@modern-js-reduck/store");
/* eslint-disable @typescript-eslint/restrict-plus-operands */
import { model, createStore } from '@modern-js-reduck/store';
import immerPlugin from '..';
const count = model('count').define({
state: {
value: 1
},
actions: {
add(state) {
state.value += 1;
},
var _ = _interopRequireDefault(require(".."));
pureAdd(state) {
return _extends({}, state, {
value: state.value + 1
});
}
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
const count = (0, _store.model)('count').define({
}
});
const count2 = model('count2').define({
state: {
value: 1
},
computed: {
addOne: state => state.value + 1,
sum: [count, (state, state2) => state.value + state2.value]
},
actions: {

@@ -25,3 +37,3 @@ add(state) {

pureAdd(state) {
return _objectSpread(_objectSpread({}, state), {}, {
return _extends({}, state, {
value: state.value + 1

@@ -34,4 +46,7 @@ });

describe('test immer', () => {
const store = (0, _store.createStore)({
plugins: [_.default]
let store;
beforeEach(() => {
store = createStore({
plugins: [immerPlugin]
});
});

@@ -41,3 +56,3 @@ test('mutable state state in action should work', () => {

let stateUpdated = false;
const unsubribe = subscribe(() => {
const unsubscribe = subscribe(() => {
expect(store.use(count)[0]).toEqual({

@@ -49,3 +64,3 @@ value: 2

actions.add();
unsubribe();
unsubscribe();
expect(stateUpdated).toBe(true);

@@ -56,5 +71,5 @@ });

let stateUpdated = false;
const unsubribe = subscribe(() => {
const unsubscribe = subscribe(() => {
expect(store.use(count)[0]).toEqual({
value: 3
value: 2
});

@@ -64,5 +79,24 @@ stateUpdated = true;

actions.pureAdd();
unsubribe();
unsubscribe();
expect(stateUpdated).toBe(true);
});
});
test('computed properties should work', () => {
const [, count1Actions] = store.use(count);
const [, count2Actions, subscribe] = store.use(count2);
count2Actions.pureAdd();
const [count2State] = store.use(count2);
expect(count2State.addOne).toEqual(3);
expect(count2State.sum).toEqual(3);
let stateUpdated = false;
const unsubscribe = subscribe(() => {
stateUpdated = true;
});
count1Actions.add();
const [updateCount2State] = store.use(count2);
expect(stateUpdated).toBe(true);
expect(updateCount2State.addOne).toEqual(3);
expect(updateCount2State.sum).toEqual(4);
unsubscribe();
});
});
/* eslint-enable @typescript-eslint/restrict-plus-operands */

@@ -1,19 +0,11 @@

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _store = require("@modern-js-reduck/store");
var _immer = require("immer");
var _default = (0, _store.createPlugin)(() => ({
import { createPlugin } from '@modern-js-reduck/store';
import { produce, enableES5, enableMapSet, setAutoFreeze } from 'immer';
enableES5();
enableMapSet();
setAutoFreeze(false);
export default createPlugin(() => ({
beforeReducer(reducer) {
return (state, payload) => (0, _immer.produce)(state, draft => reducer(draft, payload));
return (state, payload) => produce(state, draft => reducer(draft, payload));
}
}));
exports.default = _default;
}));

@@ -1,22 +0,7 @@

function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
import _extends from "@babel/runtime/helpers/esm/extends";
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
/* eslint-disable @typescript-eslint/restrict-plus-operands */
import { model, createStore } from '@modern-js-reduck/store';
import immerPlugin from '..';
var count = model('count').define({
const count = model('count').define({
state: {

@@ -26,24 +11,46 @@ value: 1

actions: {
add: function add(state) {
add(state) {
state.value += 1;
},
pureAdd: function pureAdd(state) {
return _objectSpread(_objectSpread({}, state), {}, {
pureAdd(state) {
return _extends({}, state, {
value: state.value + 1
});
}
}
});
describe('test immer', function () {
var store = createStore({
plugins: [immerPlugin]
const count2 = model('count2').define({
state: {
value: 1
},
computed: {
addOne: state => state.value + 1,
sum: [count, (state, state2) => state.value + state2.value]
},
actions: {
add(state) {
state.value += 1;
},
pureAdd(state) {
return _extends({}, state, {
value: state.value + 1
});
}
}
});
describe('test immer', () => {
let store;
beforeEach(() => {
store = createStore({
plugins: [immerPlugin]
});
});
test('mutable state state in action should work', function () {
var _store$use = store.use(count),
_store$use2 = _slicedToArray(_store$use, 3),
actions = _store$use2[1],
subscribe = _store$use2[2];
var stateUpdated = false;
var unsubribe = subscribe(function () {
test('mutable state state in action should work', () => {
const [, actions, subscribe] = store.use(count);
let stateUpdated = false;
const unsubscribe = subscribe(() => {
expect(store.use(count)[0]).toEqual({

@@ -55,15 +62,11 @@ value: 2

actions.add();
unsubribe();
unsubscribe();
expect(stateUpdated).toBe(true);
});
test('pure action should work', function () {
var _store$use3 = store.use(count),
_store$use4 = _slicedToArray(_store$use3, 3),
actions = _store$use4[1],
subscribe = _store$use4[2];
var stateUpdated = false;
var unsubribe = subscribe(function () {
test('pure action should work', () => {
const [, actions, subscribe] = store.use(count);
let stateUpdated = false;
const unsubscribe = subscribe(() => {
expect(store.use(count)[0]).toEqual({
value: 3
value: 2
});

@@ -73,5 +76,24 @@ stateUpdated = true;

actions.pureAdd();
unsubribe();
unsubscribe();
expect(stateUpdated).toBe(true);
});
});
test('computed properties should work', () => {
const [, count1Actions] = store.use(count);
const [, count2Actions, subscribe] = store.use(count2);
count2Actions.pureAdd();
const [count2State] = store.use(count2);
expect(count2State.addOne).toEqual(3);
expect(count2State.sum).toEqual(3);
let stateUpdated = false;
const unsubscribe = subscribe(() => {
stateUpdated = true;
});
count1Actions.add();
const [updateCount2State] = store.use(count2);
expect(stateUpdated).toBe(true);
expect(updateCount2State.addOne).toEqual(3);
expect(updateCount2State.sum).toEqual(4);
unsubscribe();
});
});
/* eslint-enable @typescript-eslint/restrict-plus-operands */
import { createPlugin } from '@modern-js-reduck/store';
import { produce } from 'immer';
export default createPlugin(function () {
return {
beforeReducer: function beforeReducer(reducer) {
return function (state, payload) {
return produce(state, function (draft) {
return reducer(draft, payload);
});
};
}
};
});
import { produce, enableES5, enableMapSet, setAutoFreeze } from 'immer';
enableES5();
enableMapSet();
setAutoFreeze(false);
export default createPlugin(() => ({
beforeReducer(reducer) {
return (state, payload) => produce(state, draft => reducer(draft, payload));
}
}));
{
"name": "@modern-js-reduck/plugin-immutable",
"version": "1.0.1",
"jsnext:source": "./src/index.ts",
"types": "./dist/types/index.d.ts",
"main": "./dist/js/node/index.js",
"module": "./dist/js/treeshaking/index.js",
"jsnext:modern": "./dist/js/modern/index.js",
"description": "The meta-framework suite designed from scratch for frontend-focused modern web development.",
"homepage": "https://modernjs.dev",
"bugs": "https://github.com/modern-js-dev/reduck/issues",
"license": "MIT",
"keywords": [
"react",
"framework",
"modern",
"modern.js",
"state",
"reduck"
],
"exports": {
".": {
"node": {
"import": "./dist/js/modern/index.js",
"require": "./dist/js/node/index.js"
},
"default": "./dist/js/treeshaking/index.js"
}
},
"dependencies": {
"@babel/runtime": "^7",
"immer": "^9.0.5"
},
"devDependencies": {
"@modern-js/module-tools": "latest",
"@modern-js/plugin-testing": "latest",
"@modern-js-reduck/store": "^1.0.1",
"@types/jest": "^26",
"@types/node": "^14",
"@types/react": "^17",
"@types/react-dom": "^17",
"typescript": "^4"
},
"modernSettings": {},
"sideEffects": false,
"peerDependencies": {
"@modern-js-reduck/store": "^1.0.1"
},
"publishConfig": {
"registry": "https://registry.npmjs.org/",
"access": "public"
},
"repository": {
"url": "https://github.com/modern-js-dev/reduck/packages/plugins/immer"
},
"scripts": {
"new": "modern new",
"build": "modern build",
"test": "modern test"
}
}
"name": "@modern-js-reduck/plugin-immutable",
"version": "1.0.2",
"files": [
"dist"
],
"jsnext:source": "./src/index.ts",
"types": "./dist/types/index.d.ts",
"main": "./dist/js/node/index.js",
"module": "./dist/js/treeshaking/index.js",
"jsnext:modern": "./dist/js/modern/index.js",
"description": "The meta-framework suite designed from scratch for frontend-focused modern web development.",
"homepage": "https://modernjs.dev",
"bugs": "https://github.com/modern-js-dev/reduck/issues",
"license": "MIT",
"keywords": [
"react",
"framework",
"modern",
"modern.js",
"state",
"reduck"
],
"exports": {
".": {
"node": {
"import": "./dist/js/modern/index.js",
"require": "./dist/js/node/index.js"
},
"default": "./dist/js/treeshaking/index.js"
}
},
"dependencies": {
"@babel/runtime": "^7",
"immer": "^9.0.5"
},
"devDependencies": {
"@modern-js-reduck/store": "^1.0.5",
"@modern-js/module-tools": "^1.7.1",
"@modern-js/plugin-testing": "^1.6.0",
"@types/jest": "^27.5.1",
"@types/node": "^14",
"@types/react": "^17",
"@types/react-dom": "^17",
"typescript": "^4"
},
"modernSettings": {},
"sideEffects": false,
"peerDependencies": {
"@modern-js-reduck/store": "^1.0.5"
},
"publishConfig": {
"registry": "https://registry.npmjs.org/",
"access": "public"
},
"repository": "modern-js-dev/reduck",
"scripts": {
"new": "modern new",
"build": "modern build",
"test": "modern test"
}
}

@@ -20,6 +20,3 @@

- 介绍 Modern.js (即将上线)
- [迈入现代 Web 开发](https://zhuanlan.zhihu.com/p/386607009)
- [现代 Web 开发者问卷调查报告](https://zhuanlan.zhihu.com/p/403206195)
- [字节跳动是如何落地微前端的](https://mp.weixin.qq.com/s/L9wbfNG5fTXF5bx7dcgj4Q)
- [Modern.js: Hello, World!](https://zhuanlan.zhihu.com/p/426707646)

@@ -34,2 +31,2 @@ ## Getting Started

- [Contributing Guide](/CONTRIBUTING.md)
- [Contributing Guide](/CONTRIBUTING.md)
SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc