ridof 1.3.3 → 1.3.4
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/CHANGELOG.md +2 -1
- package/LICENSE.md +1 -1
- package/README.md +29 -26
- package/dist/index.js +13 -13
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
package/LICENSE.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
The MIT License (MIT)
|
|
2
2
|
|
|
3
|
-
Copyright (c)
|
|
3
|
+
Copyright (c) 2025 <Federico Ghedina <fedeghe@gmail.com>>
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this
|
|
6
6
|
software and associated documentation files (the "Software"), to deal in the Software
|
package/README.md
CHANGED
|
@@ -20,7 +20,7 @@ const initialState = {
|
|
|
20
20
|
}
|
|
21
21
|
// The reducer function
|
|
22
22
|
// params holds all the values passed to dispatch but the type
|
|
23
|
-
const reducer = (oldState, action,
|
|
23
|
+
const reducer = (oldState, action, payload) => {
|
|
24
24
|
const newState = Object.assign({}, oldState)
|
|
25
25
|
switch (action) {
|
|
26
26
|
case 'INCREMENT':
|
|
@@ -33,7 +33,7 @@ const reducer = (oldState, action, params) => {
|
|
|
33
33
|
newState.num *= newState.num;
|
|
34
34
|
break;
|
|
35
35
|
case 'RENAME':
|
|
36
|
-
newState.name =
|
|
36
|
+
newState.name = payload.name || 'no name given';
|
|
37
37
|
break;
|
|
38
38
|
}
|
|
39
39
|
return newState;
|
|
@@ -52,7 +52,7 @@ Store.dispatch({type: 'POW'}) // -> {num: 64, name: 'Federico'}
|
|
|
52
52
|
Store.dispatch({type: 'INCREMENT'}) // -> {num: 65, name: 'Federico'}
|
|
53
53
|
Store.dispatch({type: 'POW'}) // -> {num: 4225, name: 'Federico'}
|
|
54
54
|
Store.dispatch({type: 'RENAME'}) // -> {num: 4225, name: 'no name given'}
|
|
55
|
-
Store.dispatch({type: 'RENAME', name: 'Foo'}) // -> {num: 4225, name: 'Foo'}
|
|
55
|
+
Store.dispatch({type: 'RENAME', payload: {name: 'Foo'}}) // -> {num: 4225, name: 'Foo'}
|
|
56
56
|
...
|
|
57
57
|
```
|
|
58
58
|
## Time travel
|
|
@@ -68,9 +68,9 @@ Creates a store given one reducer function
|
|
|
68
68
|
const Store = Ridof.getStore(reducer, [initialStatus || {}]);
|
|
69
69
|
```
|
|
70
70
|
the reducer function will receive the following:
|
|
71
|
-
- **
|
|
71
|
+
- **oldState**: the current state
|
|
72
72
|
- **action**: the action label
|
|
73
|
-
- **
|
|
73
|
+
- **payload**: the ones passed to ‘dispatch’
|
|
74
74
|
|
|
75
75
|
Return the current state
|
|
76
76
|
``` js
|
|
@@ -91,20 +91,10 @@ Dispatch an action:
|
|
|
91
91
|
``` js
|
|
92
92
|
Store.dispatch({
|
|
93
93
|
type:'INCREMENT', // needs at least a type field
|
|
94
|
-
|
|
95
|
-
params: 'follows'
|
|
94
|
+
payload: {}
|
|
96
95
|
});
|
|
97
96
|
```
|
|
98
|
-
|
|
99
|
-
``` js
|
|
100
|
-
// { num: 0 }
|
|
101
|
-
Store.dispatch({
|
|
102
|
-
type:'INCREMENT', // this action only increments `num`
|
|
103
|
-
all: 'others',
|
|
104
|
-
params: 'follows'
|
|
105
|
-
}, true); // it is passed so missing ones will be added
|
|
106
|
-
// { num: 0, all: 'others', params: 'follows'}
|
|
107
|
-
```
|
|
97
|
+
|
|
108
98
|
-----
|
|
109
99
|
Move in the states:
|
|
110
100
|
``` js
|
|
@@ -126,18 +116,18 @@ Store.reset();
|
|
|
126
116
|
Combine two or more reducers
|
|
127
117
|
``` js
|
|
128
118
|
var reducer = Ridof.combine({
|
|
129
|
-
mods: (
|
|
130
|
-
const newState = [...
|
|
119
|
+
mods: (oldState = [], action, payload) => {
|
|
120
|
+
const newState = [...oldState];
|
|
131
121
|
switch (action) {
|
|
132
|
-
case 'ADDMOD': newState.push(
|
|
122
|
+
case 'ADDMOD': newState.push(payload.name); break;
|
|
133
123
|
default:;
|
|
134
124
|
}
|
|
135
125
|
return newState;
|
|
136
126
|
},
|
|
137
|
-
plugins: (
|
|
138
|
-
const newState = [...
|
|
127
|
+
plugins: (oldState = [], action, payload) => {
|
|
128
|
+
const newState = [...oldState];
|
|
139
129
|
switch (action) {
|
|
140
|
-
case 'ADDPLUGIN': newState.push(
|
|
130
|
+
case 'ADDPLUGIN': newState.push(payload.name); break;
|
|
141
131
|
default:;
|
|
142
132
|
}
|
|
143
133
|
return newState;
|
|
@@ -155,9 +145,22 @@ store.subscribe((oldState, newState, action) => {
|
|
|
155
145
|
*/
|
|
156
146
|
}
|
|
157
147
|
});
|
|
158
|
-
store.dispatch({
|
|
159
|
-
|
|
160
|
-
|
|
148
|
+
store.dispatch({
|
|
149
|
+
type: 'ADDPLUGIN',
|
|
150
|
+
payload: { name: 'myplugin' }
|
|
151
|
+
});
|
|
152
|
+
store.dispatch({
|
|
153
|
+
type: 'ADDMOD',
|
|
154
|
+
payload: {
|
|
155
|
+
name: 'mymod1'
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
store.dispatch({
|
|
159
|
+
type: 'ADDMOD',
|
|
160
|
+
payload: {
|
|
161
|
+
name: 'mymod2'
|
|
162
|
+
}
|
|
163
|
+
});
|
|
161
164
|
store.dispatch({ type: 'END' });
|
|
162
165
|
```
|
|
163
166
|
-----
|
package/dist/index.js
CHANGED
|
@@ -8,24 +8,24 @@
|
|
|
8
8
|
d88 d88 88b ,88b 88b d88 d88
|
|
9
9
|
d88' d88' `?88P'`88b`?8888P'd88'
|
|
10
10
|
|
|
11
|
-
v. 1.3.
|
|
11
|
+
v. 1.3.4
|
|
12
12
|
|
|
13
13
|
Size: ~3KB
|
|
14
14
|
*/
|
|
15
15
|
var Ridof=function(){"use strict";function t(t,e){if("function"!=typeof t)throw new Error(e)}function e(t,e){if(void 0===t)throw new Error(e)}function s(t,e){this.activeCheck=!!e,this.config=e,
|
|
16
|
-
this.tags=[t],this.index=0}function
|
|
17
|
-
this.tagsManager=new s("INITIAL",this.config),this.currentIndex=0,this.
|
|
18
|
-
;for(s in t)o[s]=t[s](o[s],n
|
|
16
|
+
this.tags=[t],this.index=0}function r(e,r,i){t(e,n.REDUCERS_FUNCTION),this.reducer=e,this.state=void 0!==r?r:this.reducer(),this.states=[this.state],this.config=i,
|
|
17
|
+
this.tagsManager=new s("INITIAL",this.config),this.currentIndex=0,this.subscribers=[]}function i(t){const e={};var s;for(s in t)e[s]=t[s]();return function(r,i,n){r=r||e;var o=Object.assign({},r)
|
|
18
|
+
;for(s in t)o[s]=t[s](o[s],i,n);return o}}const n={REDUCERS_FUNCTION:"[ERROR] Reducer must be a function!",REDUCERS_RETURN:"[ERROR] Reducer should return something!",
|
|
19
19
|
SUBSCRIBERS_FUNCTION:"[ERROR] Subscribers must be a functions!",ACTION_TYPE:"[ERROR] Actions needs a type",UNAUTHORIZED_STATECHANGE:"[ERROR] State transition not allowed"}
|
|
20
|
-
;return s.prototype.getCurrent=function(){return this.tags[this.index]},s.prototype.canMoveTo=function(t,e,s){var
|
|
20
|
+
;return s.prototype.getCurrent=function(){return this.tags[this.index]},s.prototype.canMoveTo=function(t,e,s){var r=this.getCurrent();return!this.activeCheck||this.config(r,t,e,s)},
|
|
21
21
|
s.prototype.save=function(t,e){this.index=e,this.tags=this.tags.slice(0,e),this.tags[this.index]=t},s.prototype.reset=function(t){this.tags=t?this.tags.slice(0,t):[]},
|
|
22
|
-
|
|
22
|
+
r.prototype.pushState=function(t,e){var s=this.states[this.currentIndex];JSON.stringify(s)!==JSON.stringify(t)&&(this.subscribers.forEach(function(r){r(s,t,e)}),
|
|
23
23
|
this.currentIndex<this.states.length-1&&(this.states=this.states.slice(0,this.currentIndex),this.tagsManager.reset(this.currentIndex+1)),++this.currentIndex,this.tagsManager.save(e,this.currentIndex),
|
|
24
|
-
this.states[this.currentIndex]=t)},
|
|
25
|
-
;if(!this.tagsManager.canMoveTo(t.type,this.state,t))throw new Error(
|
|
26
|
-
|
|
27
|
-
s=this.
|
|
28
|
-
|
|
29
|
-
;var e=this,s=this.currentIndex+t,
|
|
30
|
-
t(
|
|
24
|
+
this.states[this.currentIndex]=t)},r.prototype.getState=function(){return this.states[this.currentIndex]},r.prototype.dispatch=function(t){if(!("type"in t))throw new Error(n.ACTION_TYPE)
|
|
25
|
+
;if(!this.tagsManager.canMoveTo(t.type,this.state,t))throw new Error(n.UNAUTHORIZED_STATECHANGE);var s=t.type,r=t.payload||{},i=this.reducer(this.states[this.currentIndex],s,r)
|
|
26
|
+
;return e(i,n.REDUCERS_RETURN),delete i.type,this.pushState(i,s),this},r.prototype.subscribe=function(e){t(e,n.SUBSCRIBERS_FUNCTION);var s,r=this;return this.subscribers.push(e),
|
|
27
|
+
s=this.subscribers.length-1,function(){r.subscribers=r.subscribers.slice(0,s).concat(r.subscribers.slice(s+1))}},r.prototype.replaceReducer=function(e){t(e,n.REDUCERS_FUNCTION),this.reducer=e},
|
|
28
|
+
r.prototype.reset=function(){var t=this.states[0];this.states=[t],this.currentIndex=0,this.tagsManager.reset(),this.subscribers=[]},r.prototype.move=function(t){if(0===t)return this
|
|
29
|
+
;var e=this,s=this.currentIndex+t,r=this.getState(),i=t>0?"FORWARD":"BACKWARD",n=s>-1&&s<this.states.length;return this.currentIndex=n?s:this.currentIndex,n&&this.subscribers.forEach(function(t){
|
|
30
|
+
t(r,e.getState(),{type:["TIMETRAVEL_",i].join("")})}),this},{combine:i,getStore:function(t,e,s){return new r(t,e,s)},isStore:function(t){return t instanceof r},ERRORS:n}}()
|
|
31
31
|
;"object"==typeof exports&&(module.exports=Ridof);
|