Socket
Socket
Sign inDemoInstall

mocha

Package Overview
Dependencies
157
Maintainers
4
Versions
192
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 6.1.4 to 6.2.0

lib/cli/collect-files.js

7

lib/cli/cli.js

@@ -0,1 +1,3 @@

#!/usr/bin/env node
'use strict';

@@ -35,2 +37,4 @@

var args = loadOptions(argv);
yargs()

@@ -64,3 +68,4 @@ .scriptName('mocha')

.parserConfiguration(YARGS_PARSER_CONFIG)
.parse(argv, loadOptions(argv));
.config(args)
.parse(args._);
};

@@ -67,0 +72,0 @@

34

lib/cli/options.js

@@ -10,2 +10,3 @@ 'use strict';

const fs = require('fs');
const ansi = require('ansi-colors');
const yargsParser = require('yargs-parser');

@@ -20,3 +21,2 @@ const {types, aliases} = require('./run-option-metadata');

const debug = require('debug')('mocha:cli:options');
const {createMissingArgumentError} = require('../errors');
const {isNodeFlag} = require('./node-flags');

@@ -59,4 +59,5 @@

/**
* This is a really fancy way to ensure unique values for `array`-type
* options.
* This is a really fancy way to:
* - ensure unique values for `array`-type options
* - use its array's last element for `boolean`/`number`/`string`- options given multiple times
* This is passed as the `coerce` option to `yargs-parser`

@@ -66,5 +67,15 @@ * @private

*/
const coerceOpts = types.array.reduce(
(acc, arg) => Object.assign(acc, {[arg]: v => Array.from(new Set(list(v)))}),
{}
const coerceOpts = Object.assign(
types.array.reduce(
(acc, arg) =>
Object.assign(acc, {[arg]: v => Array.from(new Set(list(v)))}),
{}
),
types.boolean
.concat(types.string, types.number)
.reduce(
(acc, arg) =>
Object.assign(acc, {[arg]: v => (Array.isArray(v) ? v.pop() : v)}),
{}
)
);

@@ -87,2 +98,3 @@

* @param {string|string[]} args - Arguments to parse
* @param {Object} defaultValues - Default values of mocharc.json
* @param {...Object} configObjects - `configObjects` for yargs-parser

@@ -92,3 +104,3 @@ * @private

*/
const parse = (args = [], ...configObjects) => {
const parse = (args = [], defaultValues = {}, ...configObjects) => {
// save node-specific args for special handling.

@@ -118,2 +130,3 @@ // 1. when these args have a "=" they should be considered to have values

configObjects,
default: defaultValues,
coerce: coerceOpts,

@@ -128,3 +141,4 @@ narg: nargOpts,

if (result.error) {
throw createMissingArgumentError(result.error.message);
console.error(ansi.red(`Error: ${result.error.message}`));
process.exit(1);
}

@@ -335,7 +349,7 @@

args._,
mocharc,
args,
rcConfig || {},
pkgConfig || {},
optsConfig || {},
mocharc
optsConfig || {}
);

@@ -342,0 +356,0 @@

@@ -12,11 +12,10 @@ 'use strict';

const path = require('path');
const ansi = require('ansi-colors');
const debug = require('debug')('mocha:cli:run:helpers');
const minimatch = require('minimatch');
const Context = require('../context');
const Mocha = require('../mocha');
const utils = require('../utils');
const watchRun = require('./watch-run');
const collectFiles = require('./collect-files');
const cwd = (exports.cwd = process.cwd());
exports.watchRun = watchRun;
/**

@@ -70,28 +69,2 @@ * Exits Mocha when tests + code under test has finished execution (default)

/**
* Hide the cursor.
* @ignore
* @private
*/
const hideCursor = () => {
process.stdout.write('\u001b[?25l');
};
/**
* Show the cursor.
* @ignore
* @private
*/
const showCursor = () => {
process.stdout.write('\u001b[?25h');
};
/**
* Stop cursor business
* @private
*/
const stop = () => {
process.stdout.write('\u001b[2K');
};
/**
* Coerce a comma-delimited string (or array thereof) into a flattened array of

@@ -124,86 +97,14 @@ * strings

/**
* Smash together an array of test files in the correct order
* @param {Object} [opts] - Options
* @param {string[]} [opts.extension] - File extensions to use
* @param {string[]} [opts.spec] - Files, dirs, globs to run
* @param {string[]} [opts.exclude] - Files, dirs, globs to exclude
* @param {boolean} [opts.recursive=false] - Find files recursively
* @param {boolean} [opts.sort=false] - Sort test files
* @returns {string[]} List of files to test
* @private
*/
exports.handleFiles = ({
exclude = [],
extension = [],
file = [],
recursive = false,
sort = false,
spec = []
} = {}) => {
let files = [];
const unmatched = [];
spec.forEach(arg => {
let newFiles;
try {
newFiles = utils.lookupFiles(arg, extension, recursive);
} catch (err) {
if (err.code === 'ERR_MOCHA_NO_FILES_MATCH_PATTERN') {
unmatched.push({message: err.message, pattern: err.pattern});
return;
}
throw err;
}
if (typeof newFiles !== 'undefined') {
if (typeof newFiles === 'string') {
newFiles = [newFiles];
}
newFiles = newFiles.filter(fileName =>
exclude.every(pattern => !minimatch(fileName, pattern))
);
}
files = files.concat(newFiles);
});
if (!files.length) {
// give full message details when only 1 file is missing
const noneFoundMsg =
unmatched.length === 1
? `Error: No test files found: ${JSON.stringify(unmatched[0].pattern)}` // stringify to print escaped characters raw
: 'Error: No test files found';
console.error(ansi.red(noneFoundMsg));
process.exit(1);
} else {
// print messages as an warning
unmatched.forEach(warning => {
console.warn(ansi.yellow(`Warning: ${warning.message}`));
});
}
const fileArgs = file.map(filepath => path.resolve(filepath));
files = files.map(filepath => path.resolve(filepath));
// ensure we don't sort the stuff from fileArgs; order is important!
if (sort) {
files.sort();
}
// add files given through --file to be ran first
files = fileArgs.concat(files);
debug('files (in order): ', files);
return files;
};
/**
* Give Mocha files and tell it to run
* Collect test files and run mocha instance.
* @param {Mocha} mocha - Mocha instance
* @param {Options} [opts] - Options
* @param {string[]} [opts.files] - List of test files
* @param {Options} [opts] - Command line options
* @param {boolean} [opts.exit] - Whether or not to force-exit after tests are complete
* @param {Object} fileCollectParams - Parameters that control test
* file collection. See `lib/cli/collect-files.js`.
* @returns {Runner}
* @private
*/
exports.singleRun = (mocha, {files = [], exit = false} = {}) => {
exports.singleRun = (mocha, {exit}, fileCollectParams) => {
const files = collectFiles(fileCollectParams);
debug('running tests with files', files);
mocha.files = files;

@@ -214,92 +115,33 @@ return mocha.run(exit ? exitMocha : exitMochaLater);

/**
* Run Mocha in "watch" mode
* Actually run tests
* @param {Mocha} mocha - Mocha instance
* @param {Object} [opts] - Options
* @param {string[]} [opts.extension] - List of extensions to watch
* @param {string|RegExp} [opts.grep] - Grep for test titles
* @param {string} [opts.ui=bdd] - User interface
* @param {string[]} [files] - Array of test files
* @param {Object} opts - Command line options
* @private
*/
exports.watchRun = (
mocha,
{extension = ['js'], grep = '', ui = 'bdd', files = []} = {}
) => {
let runner;
exports.runMocha = (mocha, options) => {
const {
watch = false,
extension = [],
ui = 'bdd',
exit = false,
ignore = [],
file = [],
recursive = false,
sort = false,
spec = []
} = options;
console.log();
hideCursor();
process.on('SIGINT', () => {
showCursor();
console.log('\n');
process.exit(130);
});
const watchFiles = utils.files(cwd, extension);
let runAgain = false;
const loadAndRun = () => {
try {
mocha.files = files;
runAgain = false;
runner = mocha.run(() => {
runner = null;
if (runAgain) {
rerun();
}
});
} catch (e) {
console.log(e.stack);
}
const fileCollectParams = {
ignore,
extension,
file,
recursive,
sort,
spec
};
const purge = () => {
watchFiles.forEach(Mocha.unloadFile);
};
loadAndRun();
const rerun = () => {
purge();
stop();
if (!grep) {
mocha.grep(null);
}
mocha.suite = mocha.suite.clone();
mocha.suite.ctx = new Context();
mocha.ui(ui);
loadAndRun();
};
utils.watch(watchFiles, () => {
runAgain = true;
if (runner) {
runner.abort();
} else {
rerun();
}
});
};
/**
* Actually run tests
* @param {Mocha} mocha - Mocha instance
* @param {Object} [opts] - Options
* @param {boolean} [opts.watch=false] - Enable watch mode
* @param {string[]} [opts.extension] - List of extensions to watch
* @param {string|RegExp} [opts.grep] - Grep for test titles
* @param {string} [opts.ui=bdd] - User interface
* @param {boolean} [opts.exit=false] - Force-exit Mocha when tests done
* @param {string[]} [files] - Array of test files
* @private
*/
exports.runMocha = (
mocha,
{watch = false, extension = ['js'], grep = '', ui = 'bdd', exit = false} = {},
files = []
) => {
if (watch) {
exports.watchRun(mocha, {extension, grep, ui, files});
watchRun(mocha, {ui}, fileCollectParams);
} else {
exports.singleRun(mocha, {files, exit});
exports.singleRun(mocha, {exit}, fileCollectParams);
}

@@ -306,0 +148,0 @@ };

@@ -17,6 +17,6 @@ 'use strict';

array: [
'exclude',
'extension',
'file',
'global',
'ignore',
'require',

@@ -48,4 +48,14 @@ 'reporter-option',

],
number: ['retries', 'slow', 'timeout'],
string: ['fgrep', 'grep', 'package', 'reporter', 'ui']
number: ['retries'],
string: [
'config',
'fgrep',
'grep',
'opts',
'package',
'reporter',
'ui',
'slow',
'timeout'
]
};

@@ -68,2 +78,3 @@

growl: ['G'],
ignore: ['exclude'],
invert: ['i'],

@@ -70,0 +81,0 @@ 'no-colors': ['C'],

@@ -19,3 +19,2 @@ 'use strict';

list,
handleFiles,
handleRequires,

@@ -86,8 +85,2 @@ validatePlugin,

},
exclude: {
defaultDescription: '(none)',
description: 'Ignore file(s) or glob pattern(s)',
group: GROUPS.FILES,
requiresArg: true
},
exit: {

@@ -148,2 +141,8 @@ description: 'Force Mocha to quit after tests complete',

},
ignore: {
defaultDescription: '(none)',
description: 'Ignore file(s) or glob pattern(s)',
group: GROUPS.FILES,
requiresArg: true
},
'inline-diffs': {

@@ -296,6 +295,3 @@ description:

const mocha = new Mocha(argv);
const files = handleFiles(argv);
debug('running tests with files', files);
runMocha(mocha, argv, files);
runMocha(mocha, argv);
};

@@ -109,2 +109,6 @@ 'use strict';

// Globals are passed in as options.global, with options.globals for backward compatibility.
options.globals = options.global || options.globals || [];
delete options.global;
this.grep(options.grep)

@@ -544,3 +548,3 @@ .fgrep(options.fgrep)

* @public
* @see {@link https://mochajs.org/#--globals-names|CLI option}
* @see {@link https://mochajs.org/#-global-variable-name|CLI option}
* @see {@link Mocha#checkLeaks}

@@ -556,5 +560,8 @@ * @param {String[]|String} globals - Accepted global variable name(s).

Mocha.prototype.globals = function(globals) {
this.options.globals = (this.options.globals || [])
this.options.globals = this.options.globals
.concat(globals)
.filter(Boolean);
.filter(Boolean)
.filter(function(elt, idx, arr) {
return arr.indexOf(elt) === idx;
});
return this;

@@ -561,0 +568,0 @@ };

@@ -31,2 +31,7 @@ 'use strict';

/**
* Save log references to avoid tests interfering (see GH-3604).
*/
var consoleLog = console.log;
/**
* Enable coloring by default, except in the browser interface.

@@ -196,3 +201,3 @@ */

exports.list = function(failures) {
console.log();
Base.consoleLog();
failures.forEach(function(test, i) {

@@ -258,3 +263,3 @@ // format

console.log(fmt, i + 1, testTitle, msg, stack);
Base.consoleLog(fmt, i + 1, testTitle, msg, stack);
});

@@ -314,3 +319,3 @@ };

console.log();
Base.consoleLog();

@@ -323,3 +328,3 @@ // passes

console.log(fmt, stats.passes || 0, milliseconds(stats.duration));
Base.consoleLog(fmt, stats.passes || 0, milliseconds(stats.duration));

@@ -330,3 +335,3 @@ // pending

console.log(fmt, stats.pending);
Base.consoleLog(fmt, stats.pending);
}

@@ -338,9 +343,9 @@

console.log(fmt, stats.failures);
Base.consoleLog(fmt, stats.failures);
Base.list(this.failures);
console.log();
Base.consoleLog();
}
console.log();
Base.consoleLog();
};

@@ -498,2 +503,4 @@

Base.consoleLog = consoleLog;
Base.abstract = true;

@@ -47,6 +47,6 @@ 'use strict';

++indents;
console.log('%s<section class="suite">', indent());
Base.consoleLog('%s<section class="suite">', indent());
++indents;
console.log('%s<h1>%s</h1>', indent(), utils.escape(suite.title));
console.log('%s<dl>', indent());
Base.consoleLog('%s<h1>%s</h1>', indent(), utils.escape(suite.title));
Base.consoleLog('%s<dl>', indent());
});

@@ -58,5 +58,5 @@

}
console.log('%s</dl>', indent());
Base.consoleLog('%s</dl>', indent());
--indents;
console.log('%s</section>', indent());
Base.consoleLog('%s</section>', indent());
--indents;

@@ -66,9 +66,9 @@ });

runner.on(EVENT_TEST_PASS, function(test) {
console.log('%s <dt>%s</dt>', indent(), utils.escape(test.title));
Base.consoleLog('%s <dt>%s</dt>', indent(), utils.escape(test.title));
var code = utils.escape(utils.clean(test.body));
console.log('%s <dd><pre><code>%s</code></pre></dd>', indent(), code);
Base.consoleLog('%s <dd><pre><code>%s</code></pre></dd>', indent(), code);
});
runner.on(EVENT_TEST_FAIL, function(test, err) {
console.log(
Base.consoleLog(
'%s <dt class="error">%s</dt>',

@@ -79,3 +79,3 @@ indent(),

var code = utils.escape(utils.clean(test.body));
console.log(
Base.consoleLog(
'%s <dd class="error"><pre><code>%s</code></pre></dd>',

@@ -85,3 +85,7 @@ indent(),

);
console.log('%s <dd class="error">%s</dd>', indent(), utils.escape(err));
Base.consoleLog(
'%s <dd class="error">%s</dd>',
indent(),
utils.escape(err)
);
});

@@ -88,0 +92,0 @@ }

@@ -71,3 +71,3 @@ 'use strict';

runner.once(EVENT_RUN_END, function() {
console.log();
process.stdout.write('\n');
self.epilogue();

@@ -74,0 +74,0 @@ });

@@ -98,3 +98,3 @@ 'use strict';

cursor.show();
console.log();
process.stdout.write('\n');
self.epilogue();

@@ -101,0 +101,0 @@ });

@@ -44,3 +44,3 @@ 'use strict';

runner.on(EVENT_RUN_BEGIN, function() {
console.log();
Base.consoleLog();
});

@@ -54,3 +54,3 @@

var fmt = color('checkmark', ' -') + color('pending', ' %s');
console.log(fmt, test.fullTitle());
Base.consoleLog(fmt, test.fullTitle());
});

@@ -64,3 +64,3 @@

cursor.CR();
console.log(fmt, test.fullTitle(), test.duration);
Base.consoleLog(fmt, test.fullTitle(), test.duration);
});

@@ -70,3 +70,3 @@

cursor.CR();
console.log(color('fail', ' %d) %s'), ++n, test.fullTitle());
Base.consoleLog(color('fail', ' %d) %s'), ++n, test.fullTitle());
});

@@ -73,0 +73,0 @@

@@ -61,3 +61,3 @@ 'use strict';

runner.on(EVENT_RUN_BEGIN, function() {
console.log();
process.stdout.write('\n');
cursor.hide();

@@ -95,3 +95,3 @@ });

cursor.show();
console.log();
process.stdout.write('\n');
self.epilogue();

@@ -98,0 +98,0 @@ });

@@ -49,3 +49,3 @@ 'use strict';

runner.on(EVENT_RUN_BEGIN, function() {
console.log();
Base.consoleLog();
});

@@ -55,3 +55,3 @@

++indents;
console.log(color('suite', '%s%s'), indent(), suite.title);
Base.consoleLog(color('suite', '%s%s'), indent(), suite.title);
});

@@ -62,3 +62,3 @@

if (indents === 1) {
console.log();
Base.consoleLog();
}

@@ -69,3 +69,3 @@ });

var fmt = indent() + color('pending', ' - %s');
console.log(fmt, test.title);
Base.consoleLog(fmt, test.title);
});

@@ -80,3 +80,3 @@

color('pass', ' %s');
console.log(fmt, test.title);
Base.consoleLog(fmt, test.title);
} else {

@@ -88,3 +88,3 @@ fmt =

color(test.speed, ' (%dms)');
console.log(fmt, test.title, test.duration);
Base.consoleLog(fmt, test.title, test.duration);
}

@@ -94,3 +94,3 @@ });

runner.on(EVENT_TEST_FAIL, function(test) {
console.log(indent() + color('fail', ' %d) %s'), ++n, test.title);
Base.consoleLog(indent() + color('fail', ' %d) %s'), ++n, test.title);
});

@@ -97,0 +97,0 @@

@@ -145,3 +145,3 @@ 'use strict';

} else {
console.log(line);
Base.consoleLog(line);
}

@@ -148,0 +148,0 @@ };

@@ -565,6 +565,5 @@ 'use strict';

* @memberof Mocha.utils
* @todo Fix extension handling
* @param {string} filepath - Base path to start searching from.
* @param {string[]} extensions - File extensions to look for.
* @param {boolean} recursive - Whether to recurse into subdirectories.
* @param {string[]} [extensions=[]] - File extensions to look for.
* @param {boolean} [recursive=false] - Whether to recurse into subdirectories.
* @return {string[]} An array of paths.

@@ -575,2 +574,4 @@ * @throws {Error} if no files match pattern.

exports.lookupFiles = function lookupFiles(filepath, extensions, recursive) {
extensions = extensions || [];
recursive = recursive || false;
var files = [];

@@ -580,15 +581,23 @@ var stat;

if (!fs.existsSync(filepath)) {
if (fs.existsSync(filepath + '.js')) {
filepath += '.js';
var pattern;
if (glob.hasMagic(filepath)) {
// Handle glob as is without extensions
pattern = filepath;
} else {
// Handle glob
files = glob.sync(filepath);
if (!files.length) {
throw createNoFilesMatchPatternError(
'Cannot find any files matching pattern ' + exports.dQuote(filepath),
filepath
);
}
return files;
// glob pattern e.g. 'filepath+(.js|.ts)'
var strExtensions = extensions
.map(function(v) {
return '.' + v;
})
.join('|');
pattern = filepath + '+(' + strExtensions + ')';
}
files = glob.sync(pattern, {nodir: true});
if (!files.length) {
throw createNoFilesMatchPatternError(
'Cannot find any files matching pattern ' + exports.dQuote(filepath),
filepath
);
}
return files;
}

@@ -624,3 +633,3 @@

}
if (!extensions) {
if (!extensions.length) {
throw createMissingArgumentError(

@@ -721,3 +730,4 @@ util.format(

~line.indexOf('node_modules' + slash + 'mocha' + slash) ||
~line.indexOf(slash + 'mocha.js')
~line.indexOf(slash + 'mocha.js') ||
~line.indexOf(slash + 'mocha.min.js')
);

@@ -724,0 +734,0 @@ }

{
"name": "mocha",
"version": "6.1.4",
"version": "6.2.0",
"description": "simple, flexible, fun test framework",

@@ -81,2 +81,3 @@ "keywords": [

"Brian Beck <exogen@gmail.com>",
"Brian Lagerman <49239617+brian-lagerman@users.noreply.github.com>",
"Brian Lalor <blalor@bravo5.org>",

@@ -115,2 +116,3 @@ "Brian M. Carlson <brian.m.carlson@gmail.com>",

"Cube <maty21@gmail.com>",
"Daniel Ruf <827205+DanielRuf@users.noreply.github.com>",
"Daniel Ruf <daniel@daniel-ruf.de>",

@@ -168,2 +170,3 @@ "Daniel St. Jules <danielst.jules@gmail.com>",

"Fumiaki MATSUSHIMA <mtsmfm@gmail.com>",
"Gabe Gorelick <gabegorelick@gmail.com>",
"Gabriel Silk <gabesilk@gmail.com>",

@@ -349,2 +352,3 @@ "Gareth Aye <gaye@mozilla.com>",

"Parker Moore <parkrmoore@gmail.com>",
"Pascal <pascal@pascal.com>",
"Pat Finnigan <patrick.k.finnigan@gmail.com>",

@@ -360,2 +364,3 @@ "Paul Armstrong <paul@paularmstrongdesigns.com>",

"Philip M. White <philip@mailworks.org>",
"Piotr Kuczynski <piotr.kuczynski@gmail.com>",
"PoppinL <poppinlp@gmail.com>",

@@ -422,2 +427,3 @@ "Poprádi Árpád <popradi.arpad11@gmail.com>",

"startswithaj <jake.mc@icloud.com>",
"Stephen Hess <trescube@users.noreply.github.com>",
"Stephen Mathieson <smath23@gmail.com>",

@@ -440,2 +446,3 @@ "Steve Mason <stevem@brandwatch.com>",

"Thomas Grainger <tagrain@gmail.com>",
"Thomas Scholtes <thomas-scholtes@gmx.de>",
"Thomas Vantuycom <thomasvantuycom@protonmail.com>",

@@ -454,2 +461,3 @@ "Tim Ehat <timehat@gmail.com>",

"Tomer Eskenazi <tomer.eskenazi@ironsrc.com>",
"toyjhlee <toyjhlee@gmail.com>",
"traleig1 <darkphoenix739@gmail.com>",

@@ -540,7 +548,7 @@ "Travis Jeffery <tj@travisjeffery.com>",

"devDependencies": {
"@11ty/eleventy": "^0.7.1",
"@mocha/contributors": "^1.0.3",
"@mocha/docdash": "^2.1.0",
"assetgraph-builder": "^6.10.0",
"autoprefixer": "^9.4.10",
"@11ty/eleventy": "^0.8.3",
"@mocha/contributors": "^1.0.4",
"@mocha/docdash": "^2.1.1",
"assetgraph-builder": "^6.10.1",
"autoprefixer": "^9.6.0",
"browserify": "^16.2.3",

@@ -553,14 +561,15 @@ "browserify-package-json": "^1.0.1",

"cross-spawn": "^6.0.5",
"eslint": "^5.15.0",
"eslint": "^5.16.0",
"eslint-config-prettier": "^3.6.0",
"eslint-config-semistandard": "^13.0.0",
"eslint-config-standard": "^12.0.0",
"eslint-plugin-import": "^2.16.0",
"eslint-plugin-import": "^2.17.3",
"eslint-plugin-node": "^8.0.1",
"eslint-plugin-prettier": "^3.0.1",
"eslint-plugin-promise": "^4.0.1",
"eslint-plugin-prettier": "^3.1.0",
"eslint-plugin-promise": "^4.1.1",
"eslint-plugin-standard": "^4.0.0",
"fs-extra": "^8.0.1",
"husky": "^1.3.1",
"jsdoc": "^3.5.5",
"karma": "^4.0.1",
"jsdoc": "^3.6.2",
"karma": "^4.1.0",
"karma-browserify": "^6.0.0",

@@ -571,7 +580,7 @@ "karma-chrome-launcher": "^2.2.0",

"karma-sauce-launcher": "^2.0.2",
"lint-staged": "^8.1.5",
"lint-staged": "^8.1.7",
"markdown-it": "^8.4.2",
"markdown-it-anchor": "^5.0.2",
"markdown-it-attrs": "^2.3.2",
"markdown-it-prism": "^2.0.1",
"markdown-it-anchor": "^5.2.4",
"markdown-it-attrs": "^2.4.1",
"markdown-it-prism": "^2.0.2",
"markdown-magic": "^0.1.25",

@@ -581,18 +590,18 @@ "markdown-magic-package-json": "^2.0.0",

"markdownlint-cli": "^0.14.1",
"nps": "^5.9.4",
"nyc": "^13.3.0",
"prettier": "^1.16.4",
"nps": "^5.9.5",
"nyc": "^14.1.1",
"prettier": "^1.17.1",
"remark": "^10.0.1",
"remark-github": "^7.0.6",
"remark-inline-links": "^3.1.2",
"rewiremock": "^3.13.0",
"rewiremock": "^3.13.7",
"rimraf": "^2.6.3",
"sinon": "^7.2.7",
"strip-ansi": "^5.0.0",
"svgo": "^1.2.0",
"sinon": "^7.3.2",
"strip-ansi": "^5.2.0",
"svgo": "^1.2.2",
"through2": "^3.0.1",
"to-vfile": "^5.0.2",
"to-vfile": "^5.0.3",
"unexpected": "^10.40.2",
"unexpected-eventemitter": "^1.1.3",
"unexpected-sinon": "^10.11.1",
"unexpected-sinon": "^10.11.2",
"uslug": "^1.0.4",

@@ -599,0 +608,0 @@ "watchify": "^3.11.1"

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc