@turbox3d/reactivity
Version:
Large-scale reactive state management library
27 lines • 1.18 kB
JavaScript
import { normalNextReturn } from './common';
import { EMPTY_ACTION_NAME } from '../const/symbol';
import { ctx } from '../const/config';
import { materialCallStack } from '../utils/materialCallStack';
function createPerfMiddleware() {
return function () {
return function (next) {
return function (dispatchedAction) {
if (!ctx.middleware.perf) {
return normalNextReturn(next, dispatchedAction);
}
var name = dispatchedAction.name,
displayName = dispatchedAction.displayName;
var start = performance.now();
var length = materialCallStack.stack.length;
if (ctx.middleware.skipNestPerfLog && length !== 1) {
return normalNextReturn(next, dispatchedAction);
}
return normalNextReturn(next, dispatchedAction, function () {
var end = performance.now();
console.log("%c[TURBOX PERF]: ".concat(name, " ").concat(displayName !== EMPTY_ACTION_NAME ? displayName : '', " ").concat((end - start).toFixed(3), "ms"), 'background: #FA54FF; color: #fff; font-weight: bold; padding: 3px 5px;');
});
};
};
};
}
export default createPerfMiddleware();