Skip to content

Commit b1568a5

Browse files
committed
realese: v3.3.0
1 parent e2b9974 commit b1568a5

File tree

9 files changed

+143
-71
lines changed

9 files changed

+143
-71
lines changed

CHANGELOG.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,19 @@
1+
# [3.3.0](https://github.com/vuejs/vuex/compare/v3.2.0...v3.3.0) (2020-04-25)
2+
3+
4+
### Bug Fixes
5+
6+
* Prepend devtool handler ([#1358](https://github.com/vuejs/vuex/issues/1358)) ([a39d076](https://github.com/vuejs/vuex/commit/a39d0767e4041cdd5cf8050774106c01d39024e0)), closes [vuejs/vue-devtools#678](https://github.com/vuejs/vue-devtools/issues/678)
7+
* **types:** Add `devtools` to store options type ([#1478](https://github.com/vuejs/vuex/issues/1478)) ([38c11dc](https://github.com/vuejs/vuex/commit/38c11dcbaea7d7e661a1623cabb5aef7c6e47ba7))
8+
9+
10+
### Features
11+
12+
* Add `prepend` option for `subscribe` and `subscribeAction` ([#1358](https://github.com/vuejs/vuex/issues/1358)) ([a39d076](https://github.com/vuejs/vuex/commit/a39d0767e4041cdd5cf8050774106c01d39024e0))
13+
* **logger:** `createLogger` can optionally log actions ([#987](https://github.com/vuejs/vuex/issues/987)) ([18be128](https://github.com/vuejs/vuex/commit/18be128ad933d1fca6da05c060f7664ce0c819ae))
14+
15+
16+
117
# [3.2.0](https://github.com/vuejs/vuex/compare/v3.1.3...v3.2.0) (2020-04-19)
218

319

dist/logger.js

Lines changed: 62 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -62,49 +62,81 @@
6262
var filter = ref.filter; if ( filter === void 0 ) filter = function (mutation, stateBefore, stateAfter) { return true; };
6363
var transformer = ref.transformer; if ( transformer === void 0 ) transformer = function (state) { return state; };
6464
var mutationTransformer = ref.mutationTransformer; if ( mutationTransformer === void 0 ) mutationTransformer = function (mut) { return mut; };
65+
var actionFilter = ref.actionFilter; if ( actionFilter === void 0 ) actionFilter = function (action, state) { return true; };
66+
var actionTransformer = ref.actionTransformer; if ( actionTransformer === void 0 ) actionTransformer = function (act) { return act; };
67+
var logMutations = ref.logMutations; if ( logMutations === void 0 ) logMutations = true;
68+
var logActions = ref.logActions; if ( logActions === void 0 ) logActions = true;
6569
var logger = ref.logger; if ( logger === void 0 ) logger = console;
6670

6771
return function (store) {
6872
var prevState = deepCopy(store.state);
6973

70-
store.subscribe(function (mutation, state) {
71-
if (typeof logger === 'undefined') {
72-
return
73-
}
74-
var nextState = deepCopy(state);
75-
76-
if (filter(mutation, prevState, nextState)) {
77-
var time = new Date();
78-
var formattedTime = " @ " + (pad(time.getHours(), 2)) + ":" + (pad(time.getMinutes(), 2)) + ":" + (pad(time.getSeconds(), 2)) + "." + (pad(time.getMilliseconds(), 3));
79-
var formattedMutation = mutationTransformer(mutation);
80-
var message = "mutation " + (mutation.type) + formattedTime;
81-
var startMessage = collapsed
82-
? logger.groupCollapsed
83-
: logger.group;
84-
85-
// render
86-
try {
87-
startMessage.call(logger, message);
88-
} catch (e) {
89-
console.log(message);
74+
if (typeof logger === 'undefined') {
75+
return
76+
}
77+
78+
if (logMutations) {
79+
store.subscribe(function (mutation, state) {
80+
var nextState = deepCopy(state);
81+
82+
if (filter(mutation, prevState, nextState)) {
83+
var formattedTime = getFormattedTime();
84+
var formattedMutation = mutationTransformer(mutation);
85+
var message = "mutation " + (mutation.type) + formattedTime;
86+
87+
startMessage(logger, message, collapsed);
88+
logger.log('%c prev state', 'color: #9E9E9E; font-weight: bold', transformer(prevState));
89+
logger.log('%c mutation', 'color: #03A9F4; font-weight: bold', formattedMutation);
90+
logger.log('%c next state', 'color: #4CAF50; font-weight: bold', transformer(nextState));
91+
endMessage(logger);
9092
}
9193

92-
logger.log('%c prev state', 'color: #9E9E9E; font-weight: bold', transformer(prevState));
93-
logger.log('%c mutation', 'color: #03A9F4; font-weight: bold', formattedMutation);
94-
logger.log('%c next state', 'color: #4CAF50; font-weight: bold', transformer(nextState));
94+
prevState = nextState;
95+
});
96+
}
9597

96-
try {
97-
logger.groupEnd();
98-
} catch (e) {
99-
logger.log('—— log end ——');
98+
if (logActions) {
99+
store.subscribeAction(function (action, state) {
100+
if (actionFilter(action, state)) {
101+
var formattedTime = getFormattedTime();
102+
var formattedAction = actionTransformer(action);
103+
var message = "action " + (action.type) + formattedTime;
104+
105+
startMessage(logger, message, collapsed);
106+
logger.log('%c action', 'color: #03A9F4; font-weight: bold', formattedAction);
107+
endMessage(logger);
100108
}
101-
}
109+
});
110+
}
111+
}
112+
}
102113

103-
prevState = nextState;
104-
});
114+
function startMessage (logger, message, collapsed) {
115+
var startMessage = collapsed
116+
? logger.groupCollapsed
117+
: logger.group;
118+
119+
// render
120+
try {
121+
startMessage.call(logger, message);
122+
} catch (e) {
123+
logger.log(message);
124+
}
125+
}
126+
127+
function endMessage (logger) {
128+
try {
129+
logger.groupEnd();
130+
} catch (e) {
131+
logger.log('—— log end ——');
105132
}
106133
}
107134

135+
function getFormattedTime () {
136+
var time = new Date();
137+
return (" @ " + (pad(time.getHours(), 2)) + ":" + (pad(time.getMinutes(), 2)) + ":" + (pad(time.getSeconds(), 2)) + "." + (pad(time.getMilliseconds(), 3)))
138+
}
139+
108140
function repeat (str, times) {
109141
return (new Array(times + 1)).join(str)
110142
}

dist/vuex.common.js

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/**
2-
* vuex v3.2.0
2+
* vuex v3.3.0
33
* (c) 2020 Evan You
44
* @license MIT
55
*/
@@ -61,7 +61,11 @@ function devtoolPlugin (store) {
6161

6262
store.subscribe(function (mutation, state) {
6363
devtoolHook.emit('vuex:mutation', mutation, state);
64-
});
64+
}, { prepend: true });
65+
66+
store.subscribeAction(function (action, state) {
67+
devtoolHook.emit('vuex:action', action, state);
68+
}, { prepend: true });
6569
}
6670

6771
/**
@@ -469,13 +473,13 @@ Store.prototype.dispatch = function dispatch (_type, _payload) {
469473
})
470474
};
471475

472-
Store.prototype.subscribe = function subscribe (fn) {
473-
return genericSubscribe(fn, this._subscribers)
476+
Store.prototype.subscribe = function subscribe (fn, options) {
477+
return genericSubscribe(fn, this._subscribers, options)
474478
};
475479

476-
Store.prototype.subscribeAction = function subscribeAction (fn) {
480+
Store.prototype.subscribeAction = function subscribeAction (fn, options) {
477481
var subs = typeof fn === 'function' ? { before: fn } : fn;
478-
return genericSubscribe(subs, this._actionSubscribers)
482+
return genericSubscribe(subs, this._actionSubscribers, options)
479483
};
480484

481485
Store.prototype.watch = function watch (getter, cb, options) {
@@ -552,9 +556,11 @@ Store.prototype._withCommit = function _withCommit (fn) {
552556

553557
Object.defineProperties( Store.prototype, prototypeAccessors$1 );
554558

555-
function genericSubscribe (fn, subs) {
559+
function genericSubscribe (fn, subs, options) {
556560
if (subs.indexOf(fn) < 0) {
557-
subs.push(fn);
561+
options && options.prepend
562+
? subs.unshift(fn)
563+
: subs.push(fn);
558564
}
559565
return function () {
560566
var i = subs.indexOf(fn);
@@ -1062,7 +1068,7 @@ function getModuleByNamespace (store, helper, namespace) {
10621068
var index = {
10631069
Store: Store,
10641070
install: install,
1065-
version: '3.2.0',
1071+
version: '3.3.0',
10661072
mapState: mapState,
10671073
mapMutations: mapMutations,
10681074
mapGetters: mapGetters,

dist/vuex.esm.browser.js

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/**
2-
* vuex v3.2.0
2+
* vuex v3.3.0
33
* (c) 2020 Evan You
44
* @license MIT
55
*/
@@ -57,7 +57,11 @@ function devtoolPlugin (store) {
5757

5858
store.subscribe((mutation, state) => {
5959
devtoolHook.emit('vuex:mutation', mutation, state);
60-
});
60+
}, { prepend: true });
61+
62+
store.subscribeAction((action, state) => {
63+
devtoolHook.emit('vuex:action', action, state);
64+
}, { prepend: true });
6165
}
6266

6367
/**
@@ -455,13 +459,13 @@ class Store {
455459
})
456460
}
457461

458-
subscribe (fn) {
459-
return genericSubscribe(fn, this._subscribers)
462+
subscribe (fn, options) {
463+
return genericSubscribe(fn, this._subscribers, options)
460464
}
461465

462-
subscribeAction (fn) {
466+
subscribeAction (fn, options) {
463467
const subs = typeof fn === 'function' ? { before: fn } : fn;
464-
return genericSubscribe(subs, this._actionSubscribers)
468+
return genericSubscribe(subs, this._actionSubscribers, options)
465469
}
466470

467471
watch (getter, cb, options) {
@@ -529,9 +533,11 @@ class Store {
529533
}
530534
}
531535

532-
function genericSubscribe (fn, subs) {
536+
function genericSubscribe (fn, subs, options) {
533537
if (subs.indexOf(fn) < 0) {
534-
subs.push(fn);
538+
options && options.prepend
539+
? subs.unshift(fn)
540+
: subs.push(fn);
535541
}
536542
return () => {
537543
const i = subs.indexOf(fn);
@@ -1019,7 +1025,7 @@ function getModuleByNamespace (store, helper, namespace) {
10191025
var index_esm = {
10201026
Store,
10211027
install,
1022-
version: '3.2.0',
1028+
version: '3.3.0',
10231029
mapState,
10241030
mapMutations,
10251031
mapGetters,

dist/vuex.esm.browser.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/vuex.esm.js

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/**
2-
* vuex v3.2.0
2+
* vuex v3.3.0
33
* (c) 2020 Evan You
44
* @license MIT
55
*/
@@ -59,7 +59,11 @@ function devtoolPlugin (store) {
5959

6060
store.subscribe(function (mutation, state) {
6161
devtoolHook.emit('vuex:mutation', mutation, state);
62-
});
62+
}, { prepend: true });
63+
64+
store.subscribeAction(function (action, state) {
65+
devtoolHook.emit('vuex:action', action, state);
66+
}, { prepend: true });
6367
}
6468

6569
/**
@@ -467,13 +471,13 @@ Store.prototype.dispatch = function dispatch (_type, _payload) {
467471
})
468472
};
469473

470-
Store.prototype.subscribe = function subscribe (fn) {
471-
return genericSubscribe(fn, this._subscribers)
474+
Store.prototype.subscribe = function subscribe (fn, options) {
475+
return genericSubscribe(fn, this._subscribers, options)
472476
};
473477

474-
Store.prototype.subscribeAction = function subscribeAction (fn) {
478+
Store.prototype.subscribeAction = function subscribeAction (fn, options) {
475479
var subs = typeof fn === 'function' ? { before: fn } : fn;
476-
return genericSubscribe(subs, this._actionSubscribers)
480+
return genericSubscribe(subs, this._actionSubscribers, options)
477481
};
478482

479483
Store.prototype.watch = function watch (getter, cb, options) {
@@ -550,9 +554,11 @@ Store.prototype._withCommit = function _withCommit (fn) {
550554

551555
Object.defineProperties( Store.prototype, prototypeAccessors$1 );
552556

553-
function genericSubscribe (fn, subs) {
557+
function genericSubscribe (fn, subs, options) {
554558
if (subs.indexOf(fn) < 0) {
555-
subs.push(fn);
559+
options && options.prepend
560+
? subs.unshift(fn)
561+
: subs.push(fn);
556562
}
557563
return function () {
558564
var i = subs.indexOf(fn);
@@ -1060,7 +1066,7 @@ function getModuleByNamespace (store, helper, namespace) {
10601066
var index_esm = {
10611067
Store: Store,
10621068
install: install,
1063-
version: '3.2.0',
1069+
version: '3.3.0',
10641070
mapState: mapState,
10651071
mapMutations: mapMutations,
10661072
mapGetters: mapGetters,

dist/vuex.js

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/**
2-
* vuex v3.2.0
2+
* vuex v3.3.0
33
* (c) 2020 Evan You
44
* @license MIT
55
*/
@@ -65,7 +65,11 @@
6565

6666
store.subscribe(function (mutation, state) {
6767
devtoolHook.emit('vuex:mutation', mutation, state);
68-
});
68+
}, { prepend: true });
69+
70+
store.subscribeAction(function (action, state) {
71+
devtoolHook.emit('vuex:action', action, state);
72+
}, { prepend: true });
6973
}
7074

7175
/**
@@ -472,13 +476,13 @@
472476
})
473477
};
474478

475-
Store.prototype.subscribe = function subscribe (fn) {
476-
return genericSubscribe(fn, this._subscribers)
479+
Store.prototype.subscribe = function subscribe (fn, options) {
480+
return genericSubscribe(fn, this._subscribers, options)
477481
};
478482

479-
Store.prototype.subscribeAction = function subscribeAction (fn) {
483+
Store.prototype.subscribeAction = function subscribeAction (fn, options) {
480484
var subs = typeof fn === 'function' ? { before: fn } : fn;
481-
return genericSubscribe(subs, this._actionSubscribers)
485+
return genericSubscribe(subs, this._actionSubscribers, options)
482486
};
483487

484488
Store.prototype.watch = function watch (getter, cb, options) {
@@ -555,9 +559,11 @@
555559

556560
Object.defineProperties( Store.prototype, prototypeAccessors$1 );
557561

558-
function genericSubscribe (fn, subs) {
562+
function genericSubscribe (fn, subs, options) {
559563
if (subs.indexOf(fn) < 0) {
560-
subs.push(fn);
564+
options && options.prepend
565+
? subs.unshift(fn)
566+
: subs.push(fn);
561567
}
562568
return function () {
563569
var i = subs.indexOf(fn);
@@ -1065,7 +1071,7 @@
10651071
var index = {
10661072
Store: Store,
10671073
install: install,
1068-
version: '3.2.0',
1074+
version: '3.3.0',
10691075
mapState: mapState,
10701076
mapMutations: mapMutations,
10711077
mapGetters: mapGetters,

0 commit comments

Comments
 (0)