Skip to content

Commit a4c899c

Browse files
committed
[build] 2.0.0-rc.6
1 parent facc711 commit a4c899c

File tree

3 files changed

+571
-445
lines changed

3 files changed

+571
-445
lines changed

dist/logger.js

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
(function (global, factory) {
2+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
3+
typeof define === 'function' && define.amd ? define(factory) :
4+
(global.createVuexLogger = factory());
5+
}(this, (function () { 'use strict';
6+
7+
/**
8+
* Get the first item that pass the test
9+
* by second argument function
10+
*
11+
* @param {Array} list
12+
* @param {Function} f
13+
* @return {*}
14+
*/
15+
function find (list, f) {
16+
return list.filter(f)[0]
17+
}
18+
19+
/**
20+
* Deep copy the given object considering circular structure.
21+
* This function caches all nested objects and its copies.
22+
* If it detects circular structure, use cached copy to avoid infinite loop.
23+
*
24+
* @param {*} obj
25+
* @param {Array<Object>} cache
26+
* @return {*}
27+
*/
28+
function deepCopy (obj, cache) {
29+
if ( cache === void 0 ) cache = [];
30+
31+
// just return if obj is immutable value
32+
if (obj === null || typeof obj !== 'object') {
33+
return obj
34+
}
35+
36+
// if obj is hit, it is in circular structure
37+
var hit = find(cache, function (c) { return c.original === obj; })
38+
if (hit) {
39+
return hit.copy
40+
}
41+
42+
var copy = Array.isArray(obj) ? [] : {}
43+
// put the copy into cache at first
44+
// because we want to refer it in recursive deepCopy
45+
cache.push({
46+
original: obj,
47+
copy: copy
48+
})
49+
50+
Object.keys(obj).forEach(function (key) {
51+
copy[key] = deepCopy(obj[key], cache)
52+
})
53+
54+
return copy
55+
}
56+
57+
// Credits: borrowed code from fcomb/redux-logger
58+
59+
function createLogger (ref) {
60+
if ( ref === void 0 ) ref = {};
61+
var collapsed = ref.collapsed; if ( collapsed === void 0 ) collapsed = true;
62+
var transformer = ref.transformer; if ( transformer === void 0 ) transformer = function (state) { return state; };
63+
var mutationTransformer = ref.mutationTransformer; if ( mutationTransformer === void 0 ) mutationTransformer = function (mut) { return mut; };
64+
65+
return function (store) {
66+
var prevState = deepCopy(store.state)
67+
68+
store.subscribe(function (mutation, state) {
69+
if (typeof console === 'undefined') {
70+
return
71+
}
72+
var nextState = deepCopy(state)
73+
var time = new Date()
74+
var formattedTime = " @ " + (pad(time.getHours(), 2)) + ":" + (pad(time.getMinutes(), 2)) + ":" + (pad(time.getSeconds(), 2)) + "." + (pad(time.getMilliseconds(), 3))
75+
var formattedMutation = mutationTransformer(mutation)
76+
var message = "mutation " + (mutation.type) + formattedTime
77+
var startMessage = collapsed
78+
? console.groupCollapsed
79+
: console.group
80+
81+
// render
82+
try {
83+
startMessage.call(console, message)
84+
} catch (e) {
85+
console.log(message)
86+
}
87+
88+
console.log('%c prev state', 'color: #9E9E9E; font-weight: bold', transformer(prevState))
89+
console.log('%c mutation', 'color: #03A9F4; font-weight: bold', formattedMutation)
90+
console.log('%c next state', 'color: #4CAF50; font-weight: bold', transformer(nextState))
91+
92+
try {
93+
console.groupEnd()
94+
} catch (e) {
95+
console.log('—— log end ——')
96+
}
97+
98+
prevState = nextState
99+
})
100+
}
101+
}
102+
103+
function repeat (str, times) {
104+
return (new Array(times + 1)).join(str)
105+
}
106+
107+
function pad (num, maxLength) {
108+
return repeat('0', maxLength - num.toString().length) + num
109+
}
110+
111+
return createLogger;
112+
113+
})));

0 commit comments

Comments
 (0)