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 +32 -0
- package/dist/index.esm.js +28 -0
- package/dist/index.js +47 -0
- package/package.json +34 -0
- package/src/index.js +26 -0
package/README.md
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# modernx-immer
|
|
2
|
+
|
|
3
|
+
[](https://npmjs.org/package/modernx-immer)
|
|
4
|
+
[](https://travis-ci.org/modernxjs/modernx-immer)
|
|
5
|
+
[](https://coveralls.io/r/modernxjs/modernx-immer)
|
|
6
|
+
[](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
|
+
}
|