From d926fe34036fd62e472c2db33b7689404edc828c Mon Sep 17 00:00:00 2001 From: David Souther Date: Mon, 12 Oct 2015 14:02:09 -0400 Subject: [PATCH] feat(reporter): Replace way-too-big memoizee with a trivial solution. The reporter functionality was pulling the entire memoizee library with all its dependencies for a simple memoization solution, and using almost none of the functionality. This seems like not the most critically performant codepath. This PR replaces that with a good-case solution that lowers the dependency footprint. Version 2: WeakMap. --- lib/reporter.js | 14 ++++++++++---- package.json | 1 - 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/lib/reporter.js b/lib/reporter.js index 57f241bb1..fca44ec85 100644 --- a/lib/reporter.js +++ b/lib/reporter.js @@ -3,7 +3,7 @@ var log = require('./logger').create('reporter') var MultiReporter = require('./reporters/multi') var baseReporterDecoratorFactory = require('./reporters/base').decoratorFactory var SourceMapConsumer = require('source-map').SourceMapConsumer -var memoizeWeak = require('memoizee/weak') +var WeakMap = require('core-js/es6/weak-map') var createErrorFormatter = function (basePath, emitter, SourceMapConsumer) { var lastServedFiles = [] @@ -29,9 +29,15 @@ var createErrorFormatter = function (basePath, emitter, SourceMapConsumer) { '(\\:(\\d+))?' + // column '', 'g') - var getSourceMapConsumer = memoizeWeak(function (sourceMap) { - return new SourceMapConsumer(sourceMap) - }) + var getSourceMapConsumer = (function () { + var cache = new WeakMap() + return function (sourceMap) { + if (!cache.has(sourceMap)) { + cache.set(sourceMap, new SourceMapConsumer(sourceMap)) + } + return cache.get(sourceMap) + } + }()) return function (msg, indentation) { // remove domain and timestamp from source files diff --git a/package.json b/package.json index 1be43a357..5cf48de08 100644 --- a/package.json +++ b/package.json @@ -239,7 +239,6 @@ "http-proxy": "^1.11.1", "lodash": "^3.8.0", "log4js": "^0.6.25", - "memoizee": "^0.3.8", "mime": "^1.3.4", "minimatch": "^2.0.7", "optimist": "^0.6.1",