modernx-immer 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,32 @@
1
+ # modernx-immer
2
+
3
+ [![NPM version](https://img.shields.io/npm/v/modernx-immer.svg?style=flat)](https://npmjs.org/package/modernx-immer)
4
+ [![Build Status](https://img.shields.io/travis/modernxjs/modernx-immer.svg?style=flat)](https://travis-ci.org/modernxjs/modernx-immer)
5
+ [![Coverage Status](https://img.shields.io/coveralls/modernxjs/modernx-immer.svg?style=flat)](https://coveralls.io/r/modernxjs/modernx-immer)
6
+ [![NPM downloads](http://img.shields.io/npm/dm/modernx-immer.svg?style=flat)](https://npmjs.org/package/modernx-immer)
7
+
8
+ Create the next immutable state tree by simply modifying the current tree
9
+
10
+ ---
11
+
12
+ ## Install
13
+
14
+ ```bash
15
+ $ npm install modernx-immer --save
16
+ ```
17
+
18
+ ## Usage
19
+
20
+ ```javascript
21
+
22
+ const app = modernx();
23
+ app.use(require('modernx-immer').default());
24
+ ```
25
+ some like [umi-plugin-modernx](https://github.com/umijs/umi/blob/master/packages/umi-plugin-modernx/src/index.js) line 106
26
+
27
+ Look more [Immer](https://github.com/mweststrate/immer)
28
+
29
+
30
+ ## License
31
+
32
+ [MIT](https://tldrlegal.com/license/mit-license)
@@ -0,0 +1,28 @@
1
+ import produce from 'immer';
2
+ export { enableAllPlugins, enableES5 } from 'immer';
3
+
4
+ function index () {
5
+ return {
6
+ _handleActions: function _handleActions(handlers, defaultState) {
7
+ return function () {
8
+ var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState;
9
+ var action = arguments.length > 1 ? arguments[1] : undefined;
10
+ var type = action.type;
11
+ var ret = produce(state, function (draft) {
12
+ var handler = handlers[type];
13
+ if (handler) {
14
+ var compatiableRet = handler(draft, action);
15
+ if (compatiableRet !== undefined) {
16
+ // which means you are use redux pattern
17
+ // it's compatiable. https://github.com/mweststrate/immer#returning-data-from-producers
18
+ return compatiableRet;
19
+ }
20
+ }
21
+ });
22
+ return ret === undefined ? {} : ret;
23
+ };
24
+ }
25
+ };
26
+ }
27
+
28
+ export default index;
package/dist/index.js ADDED
@@ -0,0 +1,47 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var produce = require('immer');
6
+
7
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
+
9
+ var produce__default = /*#__PURE__*/_interopDefaultLegacy(produce);
10
+
11
+ function index () {
12
+ return {
13
+ _handleActions: function _handleActions(handlers, defaultState) {
14
+ return function () {
15
+ var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState;
16
+ var action = arguments.length > 1 ? arguments[1] : undefined;
17
+ var type = action.type;
18
+ var ret = produce__default['default'](state, function (draft) {
19
+ var handler = handlers[type];
20
+ if (handler) {
21
+ var compatiableRet = handler(draft, action);
22
+ if (compatiableRet !== undefined) {
23
+ // which means you are use redux pattern
24
+ // it's compatiable. https://github.com/mweststrate/immer#returning-data-from-producers
25
+ return compatiableRet;
26
+ }
27
+ }
28
+ });
29
+ return ret === undefined ? {} : ret;
30
+ };
31
+ }
32
+ };
33
+ }
34
+
35
+ Object.defineProperty(exports, 'enableAllPlugins', {
36
+ enumerable: true,
37
+ get: function () {
38
+ return produce.enableAllPlugins;
39
+ }
40
+ });
41
+ Object.defineProperty(exports, 'enableES5', {
42
+ enumerable: true,
43
+ get: function () {
44
+ return produce.enableES5;
45
+ }
46
+ });
47
+ exports.default = index;
package/package.json ADDED
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "modernx-immer",
3
+ "version": "1.0.1",
4
+ "description": "Auto loading data binding plugin for modernx.",
5
+ "main": "dist/index.js",
6
+ "module": "dist/index.esm.js",
7
+ "sideEffects": false,
8
+ "dependencies": {
9
+ "@babel/runtime": "^7.20.0",
10
+ "immer": "^9.0.0"
11
+ },
12
+ "peerDependencies": {
13
+ "modernx": "^1.0.0"
14
+ },
15
+ "devDependencies": {
16
+ "modernx": "*"
17
+ },
18
+ "files": [
19
+ "dist",
20
+ "src"
21
+ ],
22
+ "repository": {
23
+ "type": "git",
24
+ "url": "https://github.com/perlinson/modernx/tree/master/packages/modernx-immer"
25
+ },
26
+ "homepage": "https://github.com/perlinson/modernx",
27
+ "author": "perlinson <perlinson2024@gmail.com>",
28
+ "keywords": [
29
+ "modernx",
30
+ "modernx-plugin",
31
+ "immer"
32
+ ],
33
+ "license": "MIT"
34
+ }
package/src/index.js ADDED
@@ -0,0 +1,26 @@
1
+ import produce from 'immer';
2
+
3
+ export { enableES5, enableAllPlugins } from 'immer';
4
+
5
+ export default function() {
6
+ return {
7
+ _handleActions(handlers, defaultState) {
8
+ return (state = defaultState, action) => {
9
+ const { type } = action;
10
+
11
+ const ret = produce(state, draft => {
12
+ const handler = handlers[type];
13
+ if (handler) {
14
+ const compatiableRet = handler(draft, action);
15
+ if (compatiableRet !== undefined) {
16
+ // which means you are use redux pattern
17
+ // it's compatiable. https://github.com/mweststrate/immer#returning-data-from-producers
18
+ return compatiableRet;
19
+ }
20
+ }
21
+ });
22
+ return ret === undefined ? {} : ret;
23
+ };
24
+ },
25
+ };
26
+ }