function Base(runner) { var stats = this.stats = { suites: 0, tests: 0, passes: 0, pending: 0, failures: 0 }; var failures = this.failures = []; if (!runner) { return; } this.runner = runner; runner.stats = stats; runner.on('start', function() { stats.start = new Date(); }); runner.on('suite', function(suite) { stats.suites = stats.suites || 0; suite.root || stats.suites++; }); runner.on('test end', function() { stats.tests = stats.tests || 0; stats.tests++; }); runner.on('pass', function(test) { stats.passes = stats.passes || 0; if (test.duration > test.slow()) { test.speed = 'slow'; } else if (test.duration > test.slow() / 2) { test.speed = 'medium'; } else { test.speed = 'fast'; } stats.passes++; }); runner.on('fail', function(test, err) { stats.failures = stats.failures || 0; stats.failures++; test.err = err; failures.push(test); }); runner.on('end', function() { stats.end = new Date(); stats.duration = new Date() - stats.start; }); runner.on('pending', function() { stats.pending++; }); }
n/a
function InjectChangedFilesPlugin() { var _this = this; _classCallCheck(this, InjectChangedFilesPlugin); this.testsCompleted = function (failed) { if (failed) { [].push.apply(_this.failedFiles, _this.hotFiles); } else { _this.failedFiles = []; } }; this.failedFiles = []; this.hotFiles = []; }
...
function prepareWebpack(options, cb) {
var _options$files = _slicedToArray(options.files, 1);
var file = _options$files[0];
var glob = (0, _isGlob2.default)(file);
var webpackInfoPlugin = new _webpackInfoPlugin2.default({
stats: {
// pass options from http://webpack.github.io/docs/node.js-api.html#stats-tostring
// context: false,
hash: false,
version: false,
timings: false,
assets: false,
...
function Base(runner) { var stats = this.stats = { suites: 0, tests: 0, passes: 0, pending: 0, failures: 0 }; var failures = this.failures = []; if (!runner) { return; } this.runner = runner; runner.stats = stats; runner.on('start', function() { stats.start = new Date(); }); runner.on('suite', function(suite) { stats.suites = stats.suites || 0; suite.root || stats.suites++; }); runner.on('test end', function() { stats.tests = stats.tests || 0; stats.tests++; }); runner.on('pass', function(test) { stats.passes = stats.passes || 0; if (test.duration > test.slow()) { test.speed = 'slow'; } else if (test.duration > test.slow() / 2) { test.speed = 'medium'; } else { test.speed = 'fast'; } stats.passes++; }); runner.on('fail', function(test, err) { stats.failures = stats.failures || 0; stats.failures++; test.err = err; failures.push(test); }); runner.on('end', function() { stats.end = new Date(); stats.duration = new Date() - stats.start; }); runner.on('pending', function() { stats.pending++; }); }
n/a
color = function (type, str) { if (!exports.useColors) { return String(str); } return '\u001b[' + exports.colors[type] + 'm' + str + '\u001b[0m'; }
n/a
list = function (failures) { console.log(); failures.forEach(function(test, i) { // format var fmt = color('error title', ' %s) %s:\n') + color('error message', ' %s') + color('error stack', '\n%s\n'); // msg var msg; var err = test.err; var message; if (err.message && typeof err.message.toString === 'function') { message = err.message + ''; } else if (typeof err.inspect === 'function') { message = err.inspect() + ''; } else { message = ''; } var stack = err.stack || message; var index = stack.indexOf(message); var actual = err.actual; var expected = err.expected; var escape = true; if (index === -1) { msg = message; } else { index += message.length; msg = stack.slice(0, index); // remove msg from stack stack = stack.slice(index + 1); } // uncaught if (err.uncaught) { msg = 'Uncaught ' + msg; } // explicitly show diff if (err.showDiff !== false && sameType(actual, expected) && expected !== undefined) { escape = false; if (!(utils.isString(actual) && utils.isString(expected))) { err.actual = actual = utils.stringify(actual); err.expected = expected = utils.stringify(expected); } fmt = color('error title', ' %s) %s:\n%s') + color('error stack', '\n%s\n'); var match = message.match(/^([^:]+): expected/); msg = '\n ' + color('error message', match ? match[1] : msg); if (exports.inlineDiffs) { msg += inlineDiff(err, escape); } else { msg += unifiedDiff(err, escape); } } // indent stack trace stack = stack.replace(/^/gm, ' '); console.log(fmt, (i + 1), test.fullTitle(), msg, stack); }); }
n/a
epilogue = function () { var stats = this.stats; var fmt; console.log(); // passes fmt = color('bright pass', ' ') + color('green', ' %d passing') + color('light', ' (%s)'); console.log(fmt, stats.passes || 0, ms(stats.duration)); // pending if (stats.pending) { fmt = color('pending', ' ') + color('pending', ' %d pending'); console.log(fmt, stats.pending); } // failures if (stats.failures) { fmt = color('fail', ' %d failing'); console.log(fmt, stats.failures); Base.list(this.failures); console.log(); } console.log(); }
n/a
function checkReporter(reporter) { try { require("mocha/lib/reporters/" + reporter); // eslint-disable-line global-require } catch (errModule) { try { require(reporter); // eslint-disable-line global-require } catch (errLocal) { throw new Error("reporter \"" + reporter + "\" does not exist"); } } }
...
function prepareWebpack(options, cb) {
var _options$files = _slicedToArray(options.files, 1);
var file = _options$files[0];
var glob = (0, _isGlob2.default)(file);
var webpackInfoPlugin = new _webpackInfoPlugin2.default({
stats: {
// pass options from http://webpack.github.io/docs/node.js-api.html#stats-tostring
// context: false,
hash: false,
version: false,
timings: false,
assets: false,
...
function configureMocha() { var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; // infinite stack traces Error.stackTraceLimit = Infinity; // init defauls _lodash2.default.defaults(options, defaults); // check reporter (0, _checkReporter2.default)(options.reporter); // init mocha var mocha = new _mocha2.default(); // reporter mocha.reporter(options.reporter, options.reporterOptions); // colors mocha.useColors(options.colors); // inline-diffs mocha.useInlineDiffs(options.inlineDiffs); // slow <ms> mocha.suite.slow(options.slow); // timeout <ms> if (options.timeout === 0) { mocha.enableTimeouts(false); } else { mocha.suite.timeout(options.timeout); } // bail mocha.suite.bail(options.bail); // grep if (options.grep) { mocha.grep(new RegExp(options.grep)); } // fgrep if (options.fgrep) { mocha.grep(options.fgrep); } // invert if (options.invert) { mocha.invert(); } // check-leaks if (options.checkLeaks) { mocha.checkLeaks(); } // full-trace if (options.fullTrace) { mocha.fullTrace(); } // growl if (options.growl) { mocha.growl(); } // async-only if (options.asyncOnly) { mocha.asyncOnly(); } // delay if (options.delay) { mocha.delay(); } // retries if (options.retries) { mocha.suite.retries(options.retries); } // interface mocha.ui(options.ui); return mocha; }
...
function prepareWebpack(options, cb) {
var _options$files = _slicedToArray(options.files, 1);
var file = _options$files[0];
var glob = (0, _isGlob2.default)(file);
var webpackInfoPlugin = new _webpackInfoPlugin2.default({
stats: {
// pass options from http://webpack.github.io/docs/node.js-api.html#stats-tostring
// context: false,
hash: false,
version: false,
timings: false,
assets: false,
...
function contextReplacementPlugin(context, matcher) { var recursive = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; // use ContextReplacementPlugin to replace the initial context with a // new regExp to match the desired files return new _webpack.ContextReplacementPlugin(new RegExp(context), function (result) { if (result.request === context) { // provide a new test function for resolving result.regExp = { test: matcher }; // eslint-disable-line no-param-reassign result.recursive = recursive; // eslint-disable-line no-param-reassign } }); }
...
function prepareWebpack(options, cb) {
var _options$files = _slicedToArray(options.files, 1);
var file = _options$files[0];
var glob = (0, _isGlob2.default)(file);
var webpackInfoPlugin = new _webpackInfoPlugin2.default({
stats: {
// pass options from http://webpack.github.io/docs/node.js-api.html#stats-tostring
// context: false,
hash: false,
version: false,
timings: false,
assets: false,
...
function createCompiler(webpackConfig) { var cb = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : missing(); (0, _invariant2.default)(_lodash2.default.isPlainObject(webpackConfig), 'webpackConfig must be a plain object'); (0, _invariant2.default)(_lodash2.default.isFunction(cb), 'cb must be a function'); var compiler = (0, _webpack2.default)(webpackConfig); var failedModules = []; var failedModulesErrors = []; compiler.plugin('failed', cb); compiler.plugin('compilation', function (compilation) { // Workaround to tag build as failed when webpack marks a failed module as just a warning compilation.plugin('build-module', function (module) { var ident = module.identifier(); if (ident) { var idx = failedModules.indexOf(ident); if (idx !== -1) { failedModules.splice(idx, 1); failedModulesErrors.splice(idx, 1); } } }); compilation.plugin('failed-module', function (module) { var ident = module.identifier(); if (ident) { failedModules.push(ident); failedModulesErrors.push(module.error); } }); }); compiler.plugin('done', function (stats) { if (stats.hasErrors()) { var jsonStats = stats.toJson(); var _jsonStats$errors = _slicedToArray(jsonStats.errors, 1); var err = _jsonStats$errors[0]; cb(err); } else if (failedModulesErrors.length) { var _err = failedModulesErrors[0]; cb(_err); } else { cb(); } }); return compiler; }
...
function prepareWebpack(options, cb) {
var _options$files = _slicedToArray(options.files, 1);
var file = _options$files[0];
var glob = (0, _isGlob2.default)(file);
var webpackInfoPlugin = new _webpackInfoPlugin2.default({
stats: {
// pass options from http://webpack.github.io/docs/node.js-api.html#stats-tostring
// context: false,
hash: false,
version: false,
timings: false,
assets: false,
...
function existsDirSync(file) { try { return _fs2.default.statSync(file).isDirectory(); } catch (err) { return false; } }
n/a
function existsFileSync(file) { try { _fs2.default.accessSync(file, _fs2.default.F_OK); return true; } catch (e) { return false; } }
n/a
function parseArgv(argv) { var ignoreDefaults = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; var parsedArgs = (0, _yargs2.default)(argv).help('help').alias('help', 'h', '?').version(function () { return _package.version; }).demand(0, 1).options(options).strict().argv; var files = parsedArgs._; if (!files.length) { files = ['./test']; } var parsedOptions = _lodash2.default.pick(parsedArgs, parameters); // pick all parameters as new object var validOptions = _lodash2.default.omitBy(parsedOptions, _lodash2.default.isUndefined); // remove all undefined values _lodash2.default.forEach(parametersWithMultipleArgs, function (key) { if (_lodash2.default.has(validOptions, key)) { var value = validOptions[key]; if (!Array.isArray(value)) { validOptions[key] = [value]; } } }); _lodash2.default.forOwn(validOptions, function (value, key) { // validate all non-array options with required arg that it is not duplicated // see https://github.com/yargs/yargs/issues/229 if (parametersWithMultipleArgs.indexOf(key) === -1 && _lodash2.default.isArray(value)) { (function () { var arg = _lodash2.default.kebabCase(key); var provided = value.map(function (v) { return '--' + arg + ' ' + v; }).join(' '); var expected = '--' + arg + ' ' + value[0]; throw new Error('Duplicating arguments for "--' + arg + '" is not allowed. "' + provided + '" was provided, but expected "' + expected + '"'); // eslint-disable-line max-len })(); } }); validOptions.files = files; var reporterOptions = {}; if (validOptions.reporterOptions) { validOptions.reporterOptions.split(',').forEach(function (opt) { var L = opt.split('='); if (L.length > 2 || L.length === 0) { throw new Error('invalid reporter option ' + opt); } else if (L.length === 2) { reporterOptions[L[0]] = L[1]; } else { reporterOptions[L[0]] = true; } }); } validOptions.reporterOptions = reporterOptions; validOptions.require = validOptions.require || []; validOptions.include = validOptions.include || []; if (ignoreDefaults) { var _ret2 = function () { var userOptions = (0, _yargs2.default)(argv).argv; var providedKeys = _lodash2.default.keys(userOptions); var usedAliases = _lodash2.default.flatten(_lodash2.default.filter(groupedAliases, function (aliases) { return _lodash2.default.some(aliases, function (alias) { return providedKeys.indexOf(alias) !== -1; }); })); if (parsedArgs._.length) { usedAliases.push('files'); } return { v: _lodash2.default.pick(validOptions, usedAliases) }; }(); if ((typeof _ret2 === 'undefined' ? 'undefined' : _typeof(_ret2)) === "object") return _ret2.v; } return validOptions; }
...
function prepareWebpack(options, cb) {
var _options$files = _slicedToArray(options.files, 1);
var file = _options$files[0];
var glob = (0, _isGlob2.default)(file);
var webpackInfoPlugin = new _webpackInfoPlugin2.default({
stats: {
// pass options from http://webpack.github.io/docs/node.js-api.html#stats-tostring
// context: false,
hash: false,
version: false,
timings: false,
assets: false,
...
function parseConfig(explicitConfig) { var config = explicitConfig || defaultConfig; if (!(0, _exists.existsFileSync)(config)) { return handleMissingConfig(explicitConfig); } var argv = _fs2.default.readFileSync(config, 'utf8').replace(/\\\s/g, '%20').split(/\s/).filter(Boolean).map(function (value) { return value.replace(/%20/g, ' '); }); var defaultOptions = (0, _parseArgv2.default)(argv, true); return defaultOptions; }
...
function prepareWebpack(options, cb) {
var _options$files = _slicedToArray(options.files, 1);
var file = _options$files[0];
var glob = (0, _isGlob2.default)(file);
var webpackInfoPlugin = new _webpackInfoPlugin2.default({
stats: {
// pass options from http://webpack.github.io/docs/node.js-api.html#stats-tostring
// context: false,
hash: false,
version: false,
timings: false,
assets: false,
...
function prepareEntry(path) { var watch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; if (watch) { return "\n // This gets replaced by webpack with the updated files on rebuild\n var __webpackManifest__ = [];\n\n var testsContext = require.context(\"" + path + "\", false);\n\n function inManifest(path) {\n return __webpackManifest__.indexOf(path) >= 0;\n }\n\n var runnable = testsContext.keys().filter(inManifest);\n\n runnable.forEach(testsContext);\n "; } return "\n var testsContext = require.context(\"" + path + "\", false);\n\n var runnable = testsContext.keys();\n\n runnable .forEach(testsContext);\n "; }
...
function prepareWebpack(options, cb) {
var _options$files = _slicedToArray(options.files, 1);
var file = _options$files[0];
var glob = (0, _isGlob2.default)(file);
var webpackInfoPlugin = new _webpackInfoPlugin2.default({
stats: {
// pass options from http://webpack.github.io/docs/node.js-api.html#stats-tostring
// context: false,
hash: false,
version: false,
timings: false,
assets: false,
...
function prepareWebpack(options, cb) { var _options$files = _slicedToArray(options.files, 1); var file = _options$files[0]; var glob = (0, _isGlob2.default)(file); var webpackInfoPlugin = new _webpackInfoPlugin2.default({ stats: { // pass options from http://webpack.github.io/docs/node.js-api.html#stats-tostring // context: false, hash: false, version: false, timings: false, assets: false, chunks: false, chunkModules: false, modules: false, children: false, cached: false, reasons: false, source: false, errorDetails: true, chunkOrigins: false, colors: options.colors }, state: false }); var webpackPlugins = [webpackInfoPlugin]; if (glob || (0, _exists.existsDirSync)(file)) { (function () { var matchModule = function matchModule(mod) { // eslint-disable-line no-inner-declarations // normalize path to match glob var correctedPath = _path2.default.join(parent, mod); return matcher(correctedPath); }; var globPattern = glob ? file : directoryToGlob(file, options); var matcher = (0, _anymatch2.default)(globPattern); var parent = (0, _globParent2.default)(globPattern); var directory = _path2.default.resolve(parent); var context = (0, _normalizePath2.default)(_path2.default.relative(tmpPath, directory)); var recursive = globPattern.indexOf('**') !== -1; // or via options.recursive? var optionsHash = _objectHash2.default.MD5(options); // eslint-disable-line new-cap var entryFilePath = _path2.default.join(tmpPath, optionsHash + '-entry.js'); var outputFilePath = _path2.default.join(tmpPath, optionsHash, optionsHash + '-output.js'); webpackPlugins.push((0, _contextReplacementPlugin2.default)(context, matchModule, recursive)); var webpackConfig = createWebpackConfig(options.webpackConfig, entryFilePath, outputFilePath, webpackPlugins, options.include ); var fileContent = (0, _prepareEntry2.default)(context, options.watch); if (!(0, _exists.existsFileSync)(entryFilePath)) { _fsExtra2.default.outputFile(entryFilePath, fileContent, function (err) { cb(err, webpackConfig); }); } else { process.nextTick(function () { cb(null, webpackConfig); }); } })(); } else if ((0, _exists.existsFileSync)(file)) { (function () { var entryFilePath = _path2.default.resolve(file); var outputFilePath = _path2.default.join(tmpPath, _path2.default.basename(entryFilePath)); var webpackConfig = createWebpackConfig(options.webpackConfig, entryFilePath, outputFilePath, webpackPlugins, options.include ); process.nextTick(function () { cb(null, webpackConfig); }); })(); } else { process.nextTick(function () { cb(new Error('File/Directory not found: ' + file)); }); } }
...
function prepareWebpack(options, cb) {
var _options$files = _slicedToArray(options.files, 1);
var file = _options$files[0];
var glob = (0, _isGlob2.default)(file);
var webpackInfoPlugin = new _webpackInfoPlugin2.default({
stats: {
// pass options from http://webpack.github.io/docs/node.js-api.html#stats-tostring
// context: false,
hash: false,
version: false,
timings: false,
assets: false,
...
function requireWebpackConfig(webpackConfig) { if (!webpackConfig) { return {}; } var configPath = _path2.default.resolve(webpackConfig); var configExtension = getConfigExtension(configPath); if (!fileExists(configPath)) { if (configExtension !== '.js') { return {}; } var configDirPath = _path2.default.dirname(configPath); var configBaseName = _path2.default.basename(configPath, configExtension); configPath = findConfigFile(configDirPath, configBaseName); if (configPath === null) { return {}; } configExtension = getConfigExtension(configPath); } registerCompiler(_interpret2.default.extensions[configExtension]); var config = require(configPath); // eslint-disable-line global-require return config.default || config; }
...
function prepareWebpack(options, cb) {
var _options$files = _slicedToArray(options.files, 1);
var file = _options$files[0];
var glob = (0, _isGlob2.default)(file);
var webpackInfoPlugin = new _webpackInfoPlugin2.default({
stats: {
// pass options from http://webpack.github.io/docs/node.js-api.html#stats-tostring
// context: false,
hash: false,
version: false,
timings: false,
assets: false,
...
function resetMocha(mocha, options) { if (options.watch && !options.grep) { mocha.grep(null); } mocha.suite = mocha.suite.clone(); // eslint-disable-line no-param-reassign mocha.suite.ctx = new _mocha.Context(); // eslint-disable-line no-param-reassign mocha.ui(options.ui); return mocha; }
...
function prepareWebpack(options, cb) {
var _options$files = _slicedToArray(options.files, 1);
var file = _options$files[0];
var glob = (0, _isGlob2.default)(file);
var webpackInfoPlugin = new _webpackInfoPlugin2.default({
stats: {
// pass options from http://webpack.github.io/docs/node.js-api.html#stats-tostring
// context: false,
hash: false,
version: false,
timings: false,
assets: false,
...
function run(options, webpackConfig) { var mocha = (0, _configureMocha2.default)(options); var outputFilePath = _path2.default.join(webpackConfig.output.path, webpackConfig.output.filename); (0, _build2.default)(webpackConfig, function (err) { if (err) { if (options.exit) { exit(1); } else { exitLater(1); } } mocha.files = [outputFilePath]; mocha.run(options.exit ? exit : exitLater); }); }
...
exit(1);
} else {
exitLater(1);
}
}
mocha.files = [outputFilePath];
mocha.run(options.exit ? exit : exitLater);
});
}
function watch(options, webpackConfig) {
var mocha = (0, _configureMocha2.default)(options);
var outputFilePath = _path2.default.join(webpackConfig.output.path, webpackConfig.output.filename);
...
function watch(options, webpackConfig) { var mocha = (0, _configureMocha2.default)(options); var outputFilePath = _path2.default.join(webpackConfig.output.path, webpackConfig.output.filename); var injectChangedFilesPlugin = new _InjectChangedFilesPlugin2.default(); webpackConfig.plugins.push(injectChangedFilesPlugin); var runAgain = false; var mochaRunner = null; function runMocha() { // eslint-disable-line no-inner-declarations // clear up require cache to reload test bundle delete require.cache[outputFilePath]; (0, _resetMocha2.default)(mocha, options); mocha.files = [outputFilePath]; runAgain = false; try { mochaRunner = mocha.run(function (failures) { injectChangedFilesPlugin.testsCompleted(failures > 0); // need to wait until next tick, otherwise mochaRunner = null doesn't work.. process.nextTick(function () { mochaRunner = null; if (runAgain) { runMocha(); } }); }); } catch (e) { injectChangedFilesPlugin.testsCompleted(true); console.error(e.stack); // eslint-disable-line no-console } } (0, _watch2.default)(webpackConfig, function (err) { if (err) { // wait for fixed tests return; } runAgain = true; if (mochaRunner) { mochaRunner.abort(); } else { runMocha(); } }); }
...
var _createCompiler2 = _interopRequireDefault(_createCompiler);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function watch(webpackConfig, cb) {
var watchOptions = webpackConfig.watchOptions || {};
var compiler = (0, _createCompiler2.default)(webpackConfig, cb);
compiler.watch(watchOptions, _lodash2.default.noop);
}
...
canonicalize = function (value, stack) {
var canonicalizedObj;
/* eslint-disable no-unused-vars */
var prop;
/* eslint-enable no-unused-vars */
var type = exports.type(value);
function withStack(value, fn) {
stack.push(value);
fn();
stack.pop();
}
stack = stack || [];
if (exports.indexOf(stack, value) !== -1) {
return '[Circular]';
}
switch (type) {
case 'undefined':
case 'buffer':
case 'null':
canonicalizedObj = value;
break;
case 'array':
withStack(value, function() {
canonicalizedObj = exports.map(value, function(item) {
return exports.canonicalize(item, stack);
});
});
break;
case 'function':
/* eslint-disable guard-for-in */
for (prop in value) {
canonicalizedObj = {};
break;
}
/* eslint-enable guard-for-in */
if (!canonicalizedObj) {
canonicalizedObj = emptyRepresentation(value, type);
break;
}
/* falls through */
case 'object':
canonicalizedObj = canonicalizedObj || {};
withStack(value, function() {
exports.forEach(exports.keys(value).sort(), function(key) {
canonicalizedObj[key] = exports.canonicalize(value[key], stack);
});
});
break;
case 'date':
case 'number':
case 'regexp':
case 'boolean':
case 'symbol':
canonicalizedObj = value;
break;
default:
canonicalizedObj = value + '';
}
return canonicalizedObj;
}
n/a
clean = function (str) { str = str .replace(/\r\n?|[\n\u2028\u2029]/g, '\n').replace(/^\uFEFF/, '') .replace(/^function *\(.*\)\s*\{|\(.*\) *=> *\{?/, '') .replace(/\s+\}$/, ''); var spaces = str.match(/^\n?( *)/)[1].length; var tabs = str.match(/^\n?(\t*)/)[1].length; var re = new RegExp('^\n?' + (tabs ? '\t' : ' ') + '{' + (tabs ? tabs : spaces) + '}', 'gm'); str = str.replace(re, ''); return exports.trim(str); }
n/a
escape = function (html) { return String(html) .replace(/&/g, '&') .replace(/"/g, '"') .replace(/</g, '<') .replace(/>/g, '>'); }
n/a
files = function (dir, ext, ret) { ret = ret || []; ext = ext || ['js']; var re = new RegExp('\\.(' + ext.join('|') + ')$'); readdirSync(dir) .filter(ignored) .forEach(function(path) { path = join(dir, path); if (statSync(path).isDirectory()) { exports.files(path, ext, ret); } else if (path.match(re)) { ret.push(path); } }); return ret; }
n/a
filter = function (arr, fn) { var ret = []; for (var i = 0, l = arr.length; i < l; i++) { var val = arr[i]; if (fn(val, i, arr)) { ret.push(val); } } return ret; }
...
return _lodash2.default.map(_lodash2.default.keys(opts), _lodash2.default.camelCase);
};
var parameters = paramList(options); // camel case parameters
var parametersWithMultipleArgs = paramList(_lodash2.default.pickBy(_lodash2.default.mapValues(options, function (v) {
return !!v.requiresArg && v.multiple === true;
}))); // eslint-disable-line max-len
var groupedAliases = _lodash2.default.values(_lodash2.default.mapValues(options, function (value, key) {
return [_lodash2.default.camelCase(key), key, value.alias].filter(_lodash2.default.identity
);
})); // eslint-disable-line max-len
function parseArgv(argv) {
var ignoreDefaults = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
var parsedArgs = (0, _yargs2.default)(argv).help('help').alias('help', 'h', '?').version
(function () {
return _package.version;
...
forEach = function (arr, fn, scope) { for (var i = 0, l = arr.length; i < l; i++) { fn.call(scope, arr[i], i); } }
...
if (!files.length) {
files = ['./test'];
}
var parsedOptions = _lodash2.default.pick(parsedArgs, parameters); // pick all parameters as new object
var validOptions = _lodash2.default.omitBy(parsedOptions, _lodash2.default.isUndefined); // remove all undefined values
_lodash2.default.forEach(parametersWithMultipleArgs, function (key) {
if (_lodash2.default.has(validOptions, key)) {
var value = validOptions[key];
if (!Array.isArray(value)) {
validOptions[key] = [value];
}
}
});
...
getError = function (err) { return err || exports.undefinedError(); }
n/a
highlightTags = function (name) { var code = document.getElementById('mocha').getElementsByTagName(name); for (var i = 0, len = code.length; i < len; ++i) { code[i].innerHTML = highlight(code[i].innerHTML); } }
n/a
indexOf = function (arr, obj, start) { for (var i = start || 0, l = arr.length; i < l; i++) { if (arr[i] === obj) { return i; } } return -1; }
...
}
}
});
_lodash2.default.forOwn(validOptions, function (value, key) {
// validate all non-array options with required arg that it is not duplicated
// see https://github.com/yargs/yargs/issues/229
if (parametersWithMultipleArgs.indexOf(key) === -1 && _lodash2.default.isArray
(value)) {
(function () {
var arg = _lodash2.default.kebabCase(key);
var provided = value.map(function (v) {
return '--' + arg + ' ' + v;
}).join(' ');
var expected = '--' + arg + ' ' + value[0];
...
inherits = function (ctor, superCtor) { if (ctor === undefined || ctor === null) throw new TypeError('The constructor to "inherits" must not be ' + 'null or undefined'); if (superCtor === undefined || superCtor === null) throw new TypeError('The super constructor to "inherits" must not ' + 'be null or undefined'); if (superCtor.prototype === undefined) throw new TypeError('The super constructor to "inherits" must ' + 'have a prototype'); ctor.super_ = superCtor; Object.setPrototypeOf(ctor.prototype, superCtor.prototype); }
n/a
function isArray() { [native code] }
...
var parsedOptions = _lodash2.default.pick(parsedArgs, parameters); // pick all parameters as new object
var validOptions = _lodash2.default.omitBy(parsedOptions, _lodash2.default.isUndefined); // remove all undefined values
_lodash2.default.forEach(parametersWithMultipleArgs, function (key) {
if (_lodash2.default.has(validOptions, key)) {
var value = validOptions[key];
if (!Array.isArray(value)) {
validOptions[key] = [value];
}
}
});
_lodash2.default.forOwn(validOptions, function (value, key) {
// validate all non-array options with required arg that it is not duplicated
...
isBuffer = function (value) { return typeof Buffer !== 'undefined' && Buffer.isBuffer(value); }
n/a
isString = function (obj) { return typeof obj === 'string'; }
n/a
function keys() { [native code] }
...
describe: 'path to webpack-mocha options file',
group: BASIC_GROUP,
requiresArg: true
}
};
var paramList = function paramList(opts) {
return _lodash2.default.map(_lodash2.default.keys(opts), _lodash2.default.camelCase);
};
var parameters = paramList(options); // camel case parameters
var parametersWithMultipleArgs = paramList(_lodash2.default.pickBy(_lodash2.default.mapValues(options, function (v) {
return !!v.requiresArg && v.multiple === true;
}))); // eslint-disable-line max-len
var groupedAliases = _lodash2.default.values(_lodash2.default.mapValues(options, function (value, key) {
return [_lodash2.default.camelCase(key), key, value.alias].filter(_lodash2.default.identity);
...
function lookupFiles(path, extensions, recursive) { var files = []; var re = new RegExp('\\.(' + extensions.join('|') + ')$'); if (!exists(path)) { if (exists(path + '.js')) { path += '.js'; } else { files = glob.sync(path); if (!files.length) { throw new Error("cannot resolve path (or pattern) '" + path + "'"); } return files; } } try { var stat = statSync(path); if (stat.isFile()) { return path; } } catch (err) { // ignore error return; } readdirSync(path).forEach(function(file) { file = join(path, file); try { var stat = statSync(file); if (stat.isDirectory()) { if (recursive) { files = files.concat(lookupFiles(file, extensions, recursive)); } return; } } catch (err) { // ignore error return; } if (!stat.isFile() || !re.test(file) || basename(file)[0] === '.') { return; } files.push(file); }); return files; }
n/a
map = function (arr, fn, scope) { var result = []; for (var i = 0, l = arr.length; i < l; i++) { result.push(fn.call(scope, arr[i], i, arr)); } return result; }
...
describe: 'path to webpack-mocha options file',
group: BASIC_GROUP,
requiresArg: true
}
};
var paramList = function paramList(opts) {
return _lodash2.default.map(_lodash2.default.keys(opts), _lodash2.default.camelCase);
};
var parameters = paramList(options); // camel case parameters
var parametersWithMultipleArgs = paramList(_lodash2.default.pickBy(_lodash2.default.mapValues(options, function (v) {
return !!v.requiresArg && v.multiple === true;
}))); // eslint-disable-line max-len
var groupedAliases = _lodash2.default.values(_lodash2.default.mapValues(options, function (value, key) {
return [_lodash2.default.camelCase(key), key, value.alias].filter(_lodash2.default.identity);
...
parseQuery = function (qs) { return exports.reduce(qs.replace('?', '').split('&'), function(obj, pair) { var i = pair.indexOf('='); var key = pair.slice(0, i); var val = pair.slice(++i); obj[key] = decodeURIComponent(val); return obj; }, {}); }
...
// Note: no export default here cause of Babel 6
module.exports = function includeFilesLoader(sourceCode, sourceMap) {
var _this = this;
this.cacheable();
var loaderOptions = _loaderUtils2.default.parseQuery(this.query);
if (loaderOptions.include && loaderOptions.include.length) {
var insertIndex = 0;
var match = sourceCode.match(useStrictRegex);
if (match !== null) {
insertIndex = match.index + match[0].length;
...
reduce = function (arr, fn, val) { var rval = val; for (var i = 0, l = arr.length; i < l; i++) { rval = fn(rval, arr[i], i, arr); } return rval; }
...
function setTrue(acc, key) {
acc[key] = true; // eslint-disable-line no-param-reassign
return acc;
}
function getAffectedFiles(modules) {
return modules.filter(isBuilt).map(getId).reduce(setTrue, {});
}
function findAllDependentFiles(affectedFiles, seen, module) {
if (seen[module.rawRequest]) return;
seen[module.rawRequest] = true; // eslint-disable-line no-param-reassign
if (affectedFiles[module.rawRequest]) return;
...
slug = function (str) { return str .toLowerCase() .replace(/ +/g, '-') .replace(/[^-\w]/g, ''); }
n/a
stackTraceFilter = function () { // TODO: Replace with `process.browser` var slash = '/'; var is = typeof document === 'undefined' ? { node: true } : { browser: true }; var cwd = is.node ? process.cwd() + slash : (typeof location === 'undefined' ? window.location : location).href.replace(/\/[^\/]*$/, '/'); function isMochaInternal(line) { return (~line.indexOf('node_modules' + slash + 'mocha' + slash)) || (~line.indexOf('components' + slash + 'mochajs' + slash)) || (~line.indexOf('components' + slash + 'mocha' + slash)) || (~line.indexOf(slash + 'mocha.js')); } function isNodeInternal(line) { return (~line.indexOf('(timers.js:')) || (~line.indexOf('(events.js:')) || (~line.indexOf('(node.js:')) || (~line.indexOf('(module.js:')) || (~line.indexOf('GeneratorFunctionPrototype.next (native)')) || false; } return function(stack) { stack = stack.split('\n'); stack = exports.reduce(stack, function(list, line) { if (isMochaInternal(line)) { return list; } if (is.node && isNodeInternal(line)) { return list; } // Clean up cwd(absolute) if (/\(?.+:\d+:\d+\)?$/.test(line)) { line = line.replace(cwd, ''); } list.push(line); return list; }, []); return stack.join('\n'); }; }
n/a
stringify = function (value) { var type = exports.type(value); if (!~exports.indexOf(['object', 'array', 'function'], type)) { if (type !== 'buffer') { return jsonStringify(value); } var json = value.toJSON(); // Based on the toJSON result return jsonStringify(json.data && json.type ? json.data : json, 2) .replace(/,(\n|$)/g, '$1'); } for (var prop in value) { if (Object.prototype.hasOwnProperty.call(value, prop)) { return jsonStringify(exports.canonicalize(value), 2).replace(/,(\n|$)/g, '$1'); } } return emptyRepresentation(value, type); }
...
var config = _lodash2.default.clone(webpackConfig);
config.entry = './' + entryFileName;
if (include.length) {
var query = {
include: include
};
config.entry = entryLoader + '?' + JSON.stringify(query) + '!' +
config.entry;
}
config.context = entryPath;
config.output = _lodash2.default.extend({}, config.output, {
filename: outputFileName,
path: outputPath
});
...
trim = function (str) { return str.replace(/^\s+|\s+$/g, ''); }
n/a
function type(value) { if (value === undefined) { return 'undefined'; } else if (value === null) { return 'null'; } else if (typeof Buffer !== 'undefined' && Buffer.isBuffer(value)) { return 'buffer'; } return Object.prototype.toString.call(value) .replace(/^\[.+\s(.+?)\]$/, '$1') .toLowerCase(); }
n/a
undefinedError = function () { return new Error('Caught undefined error, did you throw without specifying what?'); }
n/a
watch = function (files, fn) { var options = { interval: 100 }; files.forEach(function(file) { debug('file %s', file); watchFile(file, options, function(curr, prev) { if (prev.mtime < curr.mtime) { fn(file); } }); }); }
...
var _createCompiler2 = _interopRequireDefault(_createCompiler);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function watch(webpackConfig, cb) {
var watchOptions = webpackConfig.watchOptions || {};
var compiler = (0, _createCompiler2.default)(webpackConfig, cb);
compiler.watch(watchOptions, _lodash2.default.noop);
}
...
function watch(webpackConfig, cb) { var watchOptions = webpackConfig.watchOptions || {}; var compiler = (0, _createCompiler2.default)(webpackConfig, cb); compiler.watch(watchOptions, _lodash2.default.noop); }
...
function prepareWebpack(options, cb) {
var _options$files = _slicedToArray(options.files, 1);
var file = _options$files[0];
var glob = (0, _isGlob2.default)(file);
var webpackInfoPlugin = new _webpackInfoPlugin2.default({
stats: {
// pass options from http://webpack.github.io/docs/node.js-api.html#stats-tostring
// context: false,
hash: false,
version: false,
timings: false,
assets: false,
...