mocha 7.0.1 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,31 @@
1
+ # 7.1.0 / 2020-02-26
2
+
3
+ ## :tada: Enhancements
4
+
5
+ [#4038](https://github.com/mochajs/mocha/issues/4038): Add Node.js native ESM support ([**@giltayar**](https://github.com/giltayar))
6
+
7
+ Mocha supports writing your test files as ES modules:
8
+
9
+ - Node.js only v12.11.0 and above
10
+ - Node.js below v13.2.0, you must set `--experimental-modules` option
11
+ - current limitations: please check our [documentation](https://mochajs.org/#nodejs-native-esm-support)
12
+ - for programmatic usage: see [API: loadFilesAsync()](https://mochajs.org/api/mocha#loadFilesAsync)
13
+
14
+ **Note:** Node.JS native [ECMAScript Modules](https://nodejs.org/api/esm.html) implementation has status: **Stability: 1 - Experimental**
15
+
16
+ ## :bug: Fixes
17
+
18
+ - [#4181](https://github.com/mochajs/mocha/issues/4181): Programmatic API cannot access retried test objects ([**@juergba**](https://github.com/juergba))
19
+ - [#4174](https://github.com/mochajs/mocha/issues/4174): Browser: fix `allowUncaught` option ([**@juergba**](https://github.com/juergba))
20
+
21
+ ## :book: Documentation
22
+
23
+ - [#4058](https://github.com/mochajs/mocha/issues/4058): Manage author list in AUTHORS instead of `package.json` ([**@outsideris**](https://github.com/outsideris))
24
+
25
+ ## :nut_and_bolt: Other
26
+
27
+ - [#4138](https://github.com/mochajs/mocha/issues/4138): Upgrade ESLint v6.8 ([**@kaicataldo**](https://github.com/kaicataldo))
28
+
1
29
  # 7.0.1 / 2020-01-25
2
30
 
3
31
  ## :bug: Fixes
package/browser-entry.js CHANGED
@@ -60,7 +60,7 @@ process.on = function(e, fn) {
60
60
  if (e === 'uncaughtException') {
61
61
  global.onerror = function(err, url, line) {
62
62
  fn(new Error(err + ' (' + url + ':' + line + ')'));
63
- return !mocha.allowUncaught;
63
+ return !mocha.options.allowUncaught;
64
64
  };
65
65
  uncaughtExceptionHandlers.push(fn);
66
66
  }
@@ -129,7 +129,7 @@ mocha.setup = function(opts) {
129
129
  opts = {ui: opts};
130
130
  }
131
131
  for (var opt in opts) {
132
- if (opts.hasOwnProperty(opt)) {
132
+ if (Object.prototype.hasOwnProperty.call(opts, opt)) {
133
133
  this[opt](opts[opt]);
134
134
  }
135
135
  }
package/lib/cli/config.js CHANGED
@@ -21,6 +21,7 @@ const findUp = require('find-up');
21
21
  * @private
22
22
  */
23
23
  exports.CONFIG_FILES = [
24
+ '.mocharc.cjs',
24
25
  '.mocharc.js',
25
26
  '.mocharc.yaml',
26
27
  '.mocharc.yml',
@@ -75,7 +76,7 @@ exports.loadConfig = filepath => {
75
76
  try {
76
77
  if (ext === '.yml' || ext === '.yaml') {
77
78
  config = parsers.yaml(filepath);
78
- } else if (ext === '.js') {
79
+ } else if (ext === '.js' || ext === '.cjs') {
79
80
  config = parsers.js(filepath);
80
81
  } else {
81
82
  config = parsers.json(filepath);
@@ -265,7 +265,7 @@ module.exports.loadPkgRc = loadPkgRc;
265
265
  * Priority list:
266
266
  *
267
267
  * 1. Command-line args
268
- * 2. RC file (`.mocharc.js`, `.mocharc.ya?ml`, `mocharc.json`)
268
+ * 2. RC file (`.mocharc.c?js`, `.mocharc.ya?ml`, `mocharc.json`)
269
269
  * 3. `mocha` prop of `package.json`
270
270
  * 4. `mocha.opts`
271
271
  * 5. default configuration (`lib/mocharc.json`)
@@ -15,8 +15,6 @@ const collectFiles = require('./collect-files');
15
15
 
16
16
  const cwd = (exports.cwd = process.cwd());
17
17
 
18
- exports.watchRun = watchRun;
19
-
20
18
  /**
21
19
  * Exits Mocha when tests + code under test has finished execution (default)
22
20
  * @param {number} code - Exit code; typically # of failures
@@ -92,19 +90,21 @@ exports.handleRequires = (requires = []) => {
92
90
  };
93
91
 
94
92
  /**
95
- * Collect test files and run mocha instance.
93
+ * Collect and load test files, then run mocha instance.
96
94
  * @param {Mocha} mocha - Mocha instance
97
95
  * @param {Options} [opts] - Command line options
98
96
  * @param {boolean} [opts.exit] - Whether or not to force-exit after tests are complete
99
97
  * @param {Object} fileCollectParams - Parameters that control test
100
98
  * file collection. See `lib/cli/collect-files.js`.
101
- * @returns {Runner}
99
+ * @returns {Promise<Runner>}
102
100
  * @private
103
101
  */
104
- exports.singleRun = (mocha, {exit}, fileCollectParams) => {
102
+ const singleRun = async (mocha, {exit}, fileCollectParams) => {
105
103
  const files = collectFiles(fileCollectParams);
106
104
  debug('running tests with files', files);
107
105
  mocha.files = files;
106
+
107
+ await mocha.loadFilesAsync();
108
108
  return mocha.run(exit ? exitMocha : exitMochaLater);
109
109
  };
110
110
 
@@ -113,8 +113,9 @@ exports.singleRun = (mocha, {exit}, fileCollectParams) => {
113
113
  * @param {Mocha} mocha - Mocha instance
114
114
  * @param {Object} opts - Command line options
115
115
  * @private
116
+ * @returns {Promise}
116
117
  */
117
- exports.runMocha = (mocha, options) => {
118
+ exports.runMocha = async (mocha, options) => {
118
119
  const {
119
120
  watch = false,
120
121
  extension = [],
@@ -140,7 +141,7 @@ exports.runMocha = (mocha, options) => {
140
141
  if (watch) {
141
142
  watchRun(mocha, {watchFiles, watchIgnore}, fileCollectParams);
142
143
  } else {
143
- exports.singleRun(mocha, {exit}, fileCollectParams);
144
+ await singleRun(mocha, {exit}, fileCollectParams);
144
145
  }
145
146
  };
146
147
 
package/lib/cli/run.js CHANGED
@@ -87,7 +87,6 @@ exports.builder = yargs =>
87
87
  },
88
88
  extension: {
89
89
  default: defaults.extension,
90
- defaultDescription: 'js',
91
90
  description: 'File extension(s) to load',
92
91
  group: GROUPS.FILES,
93
92
  requiresArg: true,
@@ -299,8 +298,14 @@ exports.builder = yargs =>
299
298
  .number(types.number)
300
299
  .alias(aliases);
301
300
 
302
- exports.handler = argv => {
301
+ exports.handler = async function(argv) {
303
302
  debug('post-yargs config', argv);
304
303
  const mocha = new Mocha(argv);
305
- runMocha(mocha, argv);
304
+
305
+ try {
306
+ await runMocha(mocha, argv);
307
+ } catch (err) {
308
+ console.error('\n' + (err.stack || `Error: ${err.message || err}`));
309
+ process.exit(1);
310
+ }
306
311
  };
@@ -0,0 +1,31 @@
1
+ const url = require('url');
2
+ const path = require('path');
3
+
4
+ const requireOrImport = async file => {
5
+ file = path.resolve(file);
6
+
7
+ if (path.extname(file) === '.mjs') {
8
+ return import(url.pathToFileURL(file));
9
+ }
10
+ // This is currently the only known way of figuring out whether a file is CJS or ESM.
11
+ // If Node.js or the community establish a better procedure for that, we can fix this code.
12
+ // Another option here would be to always use `import()`, as this also supports CJS, but I would be
13
+ // wary of using it for _all_ existing test files, till ESM is fully stable.
14
+ try {
15
+ return require(file);
16
+ } catch (err) {
17
+ if (err.code === 'ERR_REQUIRE_ESM') {
18
+ return import(url.pathToFileURL(file));
19
+ } else {
20
+ throw err;
21
+ }
22
+ }
23
+ };
24
+
25
+ exports.loadFilesAsync = async (files, preLoadFunc, postLoadFunc) => {
26
+ for (const file of files) {
27
+ preLoadFunc(file);
28
+ const result = await requireOrImport(file);
29
+ postLoadFunc(file, result);
30
+ }
31
+ };
package/lib/mocha.js CHANGED
@@ -14,6 +14,7 @@ var utils = require('./utils');
14
14
  var mocharc = require('./mocharc.json');
15
15
  var errors = require('./errors');
16
16
  var Suite = require('./suite');
17
+ var esmUtils = utils.supportsEsModules() ? require('./esm-utils') : undefined;
17
18
  var createStatsCollector = require('./stats-collector');
18
19
  var createInvalidReporterError = errors.createInvalidReporterError;
19
20
  var createInvalidInterfaceError = errors.createInvalidInterfaceError;
@@ -290,16 +291,18 @@ Mocha.prototype.ui = function(ui) {
290
291
  };
291
292
 
292
293
  /**
293
- * Loads `files` prior to execution.
294
+ * Loads `files` prior to execution. Does not support ES Modules.
294
295
  *
295
296
  * @description
296
297
  * The implementation relies on Node's `require` to execute
297
298
  * the test interface functions and will be subject to its cache.
299
+ * Supports only CommonJS modules. To load ES modules, use Mocha#loadFilesAsync.
298
300
  *
299
301
  * @private
300
302
  * @see {@link Mocha#addFile}
301
303
  * @see {@link Mocha#run}
302
304
  * @see {@link Mocha#unloadFiles}
305
+ * @see {@link Mocha#loadFilesAsync}
303
306
  * @param {Function} [fn] - Callback invoked upon completion.
304
307
  */
305
308
  Mocha.prototype.loadFiles = function(fn) {
@@ -314,6 +317,49 @@ Mocha.prototype.loadFiles = function(fn) {
314
317
  fn && fn();
315
318
  };
316
319
 
320
+ /**
321
+ * Loads `files` prior to execution. Supports Node ES Modules.
322
+ *
323
+ * @description
324
+ * The implementation relies on Node's `require` and `import` to execute
325
+ * the test interface functions and will be subject to its cache.
326
+ * Supports both CJS and ESM modules.
327
+ *
328
+ * @public
329
+ * @see {@link Mocha#addFile}
330
+ * @see {@link Mocha#run}
331
+ * @see {@link Mocha#unloadFiles}
332
+ * @returns {Promise}
333
+ * @example
334
+ *
335
+ * // loads ESM (and CJS) test files asynchronously, then runs root suite
336
+ * mocha.loadFilesAsync()
337
+ * .then(() => mocha.run(failures => process.exitCode = failures ? 1 : 0))
338
+ * .catch(() => process.exitCode = 1);
339
+ */
340
+ Mocha.prototype.loadFilesAsync = function() {
341
+ var self = this;
342
+ var suite = this.suite;
343
+ this.loadAsync = true;
344
+
345
+ if (!esmUtils) {
346
+ return new Promise(function(resolve) {
347
+ self.loadFiles(resolve);
348
+ });
349
+ }
350
+
351
+ return esmUtils.loadFilesAsync(
352
+ this.files,
353
+ function(file) {
354
+ suite.emit(EVENT_FILE_PRE_REQUIRE, global, file, self);
355
+ },
356
+ function(file, resultModule) {
357
+ suite.emit(EVENT_FILE_REQUIRE, resultModule, file, self);
358
+ suite.emit(EVENT_FILE_POST_REQUIRE, global, file, self);
359
+ }
360
+ );
361
+ };
362
+
317
363
  /**
318
364
  * Removes a previously loaded file from Node's `require` cache.
319
365
  *
@@ -330,8 +376,9 @@ Mocha.unloadFile = function(file) {
330
376
  * Unloads `files` from Node's `require` cache.
331
377
  *
332
378
  * @description
333
- * This allows files to be "freshly" reloaded, providing the ability
379
+ * This allows required files to be "freshly" reloaded, providing the ability
334
380
  * to reuse a Mocha instance programmatically.
381
+ * Note: does not clear ESM module files from the cache
335
382
  *
336
383
  * <strong>Intended for consumers &mdash; not used internally</strong>
337
384
  *
@@ -842,10 +889,14 @@ Object.defineProperty(Mocha.prototype, 'version', {
842
889
  * @see {@link Mocha#unloadFiles}
843
890
  * @see {@link Runner#run}
844
891
  * @param {DoneCB} [fn] - Callback invoked when test execution completed.
845
- * @return {Runner} runner instance
892
+ * @returns {Runner} runner instance
893
+ * @example
894
+ *
895
+ * // exit with non-zero status if there were test failures
896
+ * mocha.run(failures => process.exitCode = failures ? 1 : 0);
846
897
  */
847
898
  Mocha.prototype.run = function(fn) {
848
- if (this.files.length) {
899
+ if (this.files.length && !this.loadAsync) {
849
900
  this.loadFiles();
850
901
  }
851
902
  var suite = this.suite;
package/lib/mocharc.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "diff": true,
3
- "extension": ["js"],
3
+ "extension": ["js", "cjs", "mjs"],
4
4
  "opts": "./test/mocha.opts",
5
5
  "package": "./package.json",
6
6
  "reporter": "spec",
package/lib/runner.js CHANGED
@@ -135,6 +135,11 @@ function Runner(suite, delay) {
135
135
  this.total = suite.total();
136
136
  this.failures = 0;
137
137
  this.on(constants.EVENT_TEST_END, function(test) {
138
+ if (test.retriedTest() && test.parent) {
139
+ var idx =
140
+ test.parent.tests && test.parent.tests.indexOf(test.retriedTest());
141
+ if (idx > -1) test.parent.tests[idx] = test;
142
+ }
138
143
  self.checkGlobals(test);
139
144
  });
140
145
  this.on(constants.EVENT_HOOK_END, function(hook) {
@@ -800,7 +805,8 @@ Runner.prototype.uncaught = function(err) {
800
805
  if (err instanceof Pending) {
801
806
  return;
802
807
  }
803
- if (this.allowUncaught) {
808
+ // browser does not exit script when throwing in global.onerror()
809
+ if (this.allowUncaught && !process.browser) {
804
810
  throw err;
805
811
  }
806
812
 
package/lib/test.js CHANGED
@@ -36,6 +36,18 @@ function Test(title, fn) {
36
36
  */
37
37
  utils.inherits(Test, Runnable);
38
38
 
39
+ /**
40
+ * Set or get retried test
41
+ *
42
+ * @private
43
+ */
44
+ Test.prototype.retriedTest = function(n) {
45
+ if (!arguments.length) {
46
+ return this._retriedTest;
47
+ }
48
+ this._retriedTest = n;
49
+ };
50
+
39
51
  Test.prototype.clone = function() {
40
52
  var test = new Test(this.title, this.fn);
41
53
  test.timeout(this.timeout());
@@ -43,6 +55,7 @@ Test.prototype.clone = function() {
43
55
  test.enableTimeouts(this.enableTimeouts());
44
56
  test.retries(this.retries());
45
57
  test.currentRetry(this.currentRetry());
58
+ test.retriedTest(this.retriedTest() || this);
46
59
  test.globals(this.globals());
47
60
  test.parent = this.parent;
48
61
  test.file = this.file;
package/lib/utils.js CHANGED
@@ -831,3 +831,25 @@ exports.defineConstants = function(obj) {
831
831
  }
832
832
  return Object.freeze(exports.createMap(obj));
833
833
  };
834
+
835
+ /**
836
+ * Whether current version of Node support ES modules
837
+ *
838
+ * @description
839
+ * Versions prior to 10 did not support ES Modules, and version 10 has an old incompatibile version of ESM.
840
+ * This function returns whether Node.JS has ES Module supports that is compatible with Mocha's needs,
841
+ * which is version >=12.11.
842
+ *
843
+ * @returns {Boolean} whether the current version of Node.JS supports ES Modules in a way that is compatible with Mocha
844
+ */
845
+ exports.supportsEsModules = function() {
846
+ if (!process.browser && process.versions && process.versions.node) {
847
+ var versionFields = process.versions.node.split('.');
848
+ var major = +versionFields[0];
849
+ var minor = +versionFields[1];
850
+
851
+ if (major >= 13 || (major === 12 && minor >= 11)) {
852
+ return true;
853
+ }
854
+ }
855
+ };
package/mocha.js CHANGED
@@ -62,7 +62,7 @@ process.on = function(e, fn) {
62
62
  if (e === 'uncaughtException') {
63
63
  global.onerror = function(err, url, line) {
64
64
  fn(new Error(err + ' (' + url + ':' + line + ')'));
65
- return !mocha.allowUncaught;
65
+ return !mocha.options.allowUncaught;
66
66
  };
67
67
  uncaughtExceptionHandlers.push(fn);
68
68
  }
@@ -131,7 +131,7 @@ mocha.setup = function(opts) {
131
131
  opts = {ui: opts};
132
132
  }
133
133
  for (var opt in opts) {
134
- if (opts.hasOwnProperty(opt)) {
134
+ if (Object.prototype.hasOwnProperty.call(opts, opt)) {
135
135
  this[opt](opts[opt]);
136
136
  }
137
137
  }
@@ -1408,6 +1408,7 @@ var utils = require('./utils');
1408
1408
  var mocharc = require('./mocharc.json');
1409
1409
  var errors = require('./errors');
1410
1410
  var Suite = require('./suite');
1411
+ var esmUtils = utils.supportsEsModules() ? require('./esm-utils') : undefined;
1411
1412
  var createStatsCollector = require('./stats-collector');
1412
1413
  var createInvalidReporterError = errors.createInvalidReporterError;
1413
1414
  var createInvalidInterfaceError = errors.createInvalidInterfaceError;
@@ -1684,16 +1685,18 @@ Mocha.prototype.ui = function(ui) {
1684
1685
  };
1685
1686
 
1686
1687
  /**
1687
- * Loads `files` prior to execution.
1688
+ * Loads `files` prior to execution. Does not support ES Modules.
1688
1689
  *
1689
1690
  * @description
1690
1691
  * The implementation relies on Node's `require` to execute
1691
1692
  * the test interface functions and will be subject to its cache.
1693
+ * Supports only CommonJS modules. To load ES modules, use Mocha#loadFilesAsync.
1692
1694
  *
1693
1695
  * @private
1694
1696
  * @see {@link Mocha#addFile}
1695
1697
  * @see {@link Mocha#run}
1696
1698
  * @see {@link Mocha#unloadFiles}
1699
+ * @see {@link Mocha#loadFilesAsync}
1697
1700
  * @param {Function} [fn] - Callback invoked upon completion.
1698
1701
  */
1699
1702
  Mocha.prototype.loadFiles = function(fn) {
@@ -1708,6 +1711,49 @@ Mocha.prototype.loadFiles = function(fn) {
1708
1711
  fn && fn();
1709
1712
  };
1710
1713
 
1714
+ /**
1715
+ * Loads `files` prior to execution. Supports Node ES Modules.
1716
+ *
1717
+ * @description
1718
+ * The implementation relies on Node's `require` and `import` to execute
1719
+ * the test interface functions and will be subject to its cache.
1720
+ * Supports both CJS and ESM modules.
1721
+ *
1722
+ * @public
1723
+ * @see {@link Mocha#addFile}
1724
+ * @see {@link Mocha#run}
1725
+ * @see {@link Mocha#unloadFiles}
1726
+ * @returns {Promise}
1727
+ * @example
1728
+ *
1729
+ * // loads ESM (and CJS) test files asynchronously, then runs root suite
1730
+ * mocha.loadFilesAsync()
1731
+ * .then(() => mocha.run(failures => process.exitCode = failures ? 1 : 0))
1732
+ * .catch(() => process.exitCode = 1);
1733
+ */
1734
+ Mocha.prototype.loadFilesAsync = function() {
1735
+ var self = this;
1736
+ var suite = this.suite;
1737
+ this.loadAsync = true;
1738
+
1739
+ if (!esmUtils) {
1740
+ return new Promise(function(resolve) {
1741
+ self.loadFiles(resolve);
1742
+ });
1743
+ }
1744
+
1745
+ return esmUtils.loadFilesAsync(
1746
+ this.files,
1747
+ function(file) {
1748
+ suite.emit(EVENT_FILE_PRE_REQUIRE, global, file, self);
1749
+ },
1750
+ function(file, resultModule) {
1751
+ suite.emit(EVENT_FILE_REQUIRE, resultModule, file, self);
1752
+ suite.emit(EVENT_FILE_POST_REQUIRE, global, file, self);
1753
+ }
1754
+ );
1755
+ };
1756
+
1711
1757
  /**
1712
1758
  * Removes a previously loaded file from Node's `require` cache.
1713
1759
  *
@@ -1724,8 +1770,9 @@ Mocha.unloadFile = function(file) {
1724
1770
  * Unloads `files` from Node's `require` cache.
1725
1771
  *
1726
1772
  * @description
1727
- * This allows files to be "freshly" reloaded, providing the ability
1773
+ * This allows required files to be "freshly" reloaded, providing the ability
1728
1774
  * to reuse a Mocha instance programmatically.
1775
+ * Note: does not clear ESM module files from the cache
1729
1776
  *
1730
1777
  * <strong>Intended for consumers &mdash; not used internally</strong>
1731
1778
  *
@@ -2236,10 +2283,14 @@ Object.defineProperty(Mocha.prototype, 'version', {
2236
2283
  * @see {@link Mocha#unloadFiles}
2237
2284
  * @see {@link Runner#run}
2238
2285
  * @param {DoneCB} [fn] - Callback invoked when test execution completed.
2239
- * @return {Runner} runner instance
2286
+ * @returns {Runner} runner instance
2287
+ * @example
2288
+ *
2289
+ * // exit with non-zero status if there were test failures
2290
+ * mocha.run(failures => process.exitCode = failures ? 1 : 0);
2240
2291
  */
2241
2292
  Mocha.prototype.run = function(fn) {
2242
- if (this.files.length) {
2293
+ if (this.files.length && !this.loadAsync) {
2243
2294
  this.loadFiles();
2244
2295
  }
2245
2296
  var suite = this.suite;
@@ -2282,10 +2333,10 @@ Mocha.prototype.run = function(fn) {
2282
2333
  };
2283
2334
 
2284
2335
  }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
2285
- },{"../package.json":90,"./context":5,"./errors":6,"./growl":2,"./hook":7,"./interfaces":11,"./mocharc.json":15,"./reporters":21,"./runnable":33,"./runner":34,"./stats-collector":35,"./suite":36,"./test":37,"./utils":38,"_process":69,"escape-string-regexp":49,"path":42}],15:[function(require,module,exports){
2336
+ },{"../package.json":90,"./context":5,"./errors":6,"./esm-utils":42,"./growl":2,"./hook":7,"./interfaces":11,"./mocharc.json":15,"./reporters":21,"./runnable":33,"./runner":34,"./stats-collector":35,"./suite":36,"./test":37,"./utils":38,"_process":69,"escape-string-regexp":49,"path":42}],15:[function(require,module,exports){
2286
2337
  module.exports={
2287
2338
  "diff": true,
2288
- "extension": ["js"],
2339
+ "extension": ["js", "cjs", "mjs"],
2289
2340
  "opts": "./test/mocha.opts",
2290
2341
  "package": "./package.json",
2291
2342
  "reporter": "spec",
@@ -5680,6 +5731,11 @@ function Runner(suite, delay) {
5680
5731
  this.total = suite.total();
5681
5732
  this.failures = 0;
5682
5733
  this.on(constants.EVENT_TEST_END, function(test) {
5734
+ if (test.retriedTest() && test.parent) {
5735
+ var idx =
5736
+ test.parent.tests && test.parent.tests.indexOf(test.retriedTest());
5737
+ if (idx > -1) test.parent.tests[idx] = test;
5738
+ }
5683
5739
  self.checkGlobals(test);
5684
5740
  });
5685
5741
  this.on(constants.EVENT_HOOK_END, function(hook) {
@@ -6345,7 +6401,8 @@ Runner.prototype.uncaught = function(err) {
6345
6401
  if (err instanceof Pending) {
6346
6402
  return;
6347
6403
  }
6348
- if (this.allowUncaught) {
6404
+ // browser does not exit script when throwing in global.onerror()
6405
+ if (this.allowUncaught && !process.browser) {
6349
6406
  throw err;
6350
6407
  }
6351
6408
 
@@ -7346,6 +7403,18 @@ function Test(title, fn) {
7346
7403
  */
7347
7404
  utils.inherits(Test, Runnable);
7348
7405
 
7406
+ /**
7407
+ * Set or get retried test
7408
+ *
7409
+ * @private
7410
+ */
7411
+ Test.prototype.retriedTest = function(n) {
7412
+ if (!arguments.length) {
7413
+ return this._retriedTest;
7414
+ }
7415
+ this._retriedTest = n;
7416
+ };
7417
+
7349
7418
  Test.prototype.clone = function() {
7350
7419
  var test = new Test(this.title, this.fn);
7351
7420
  test.timeout(this.timeout());
@@ -7353,6 +7422,7 @@ Test.prototype.clone = function() {
7353
7422
  test.enableTimeouts(this.enableTimeouts());
7354
7423
  test.retries(this.retries());
7355
7424
  test.currentRetry(this.currentRetry());
7425
+ test.retriedTest(this.retriedTest() || this);
7356
7426
  test.globals(this.globals());
7357
7427
  test.parent = this.parent;
7358
7428
  test.file = this.file;
@@ -8196,6 +8266,28 @@ exports.defineConstants = function(obj) {
8196
8266
  return Object.freeze(exports.createMap(obj));
8197
8267
  };
8198
8268
 
8269
+ /**
8270
+ * Whether current version of Node support ES modules
8271
+ *
8272
+ * @description
8273
+ * Versions prior to 10 did not support ES Modules, and version 10 has an old incompatibile version of ESM.
8274
+ * This function returns whether Node.JS has ES Module supports that is compatible with Mocha's needs,
8275
+ * which is version >=12.11.
8276
+ *
8277
+ * @returns {Boolean} whether the current version of Node.JS supports ES Modules in a way that is compatible with Mocha
8278
+ */
8279
+ exports.supportsEsModules = function() {
8280
+ if (!process.browser && process.versions && process.versions.node) {
8281
+ var versionFields = process.versions.node.split('.');
8282
+ var major = +versionFields[0];
8283
+ var minor = +versionFields[1];
8284
+
8285
+ if (major >= 13 || (major === 12 && minor >= 11)) {
8286
+ return true;
8287
+ }
8288
+ }
8289
+ };
8290
+
8199
8291
  }).call(this,require('_process'),require("buffer").Buffer)
8200
8292
  },{"./errors":6,"_process":69,"buffer":43,"fs":42,"glob":42,"he":54,"object.assign":65,"path":42,"util":89}],39:[function(require,module,exports){
8201
8293
  'use strict'
@@ -18077,7 +18169,7 @@ function hasOwnProperty(obj, prop) {
18077
18169
  },{"./support/isBuffer":88,"_process":69,"inherits":56}],90:[function(require,module,exports){
18078
18170
  module.exports={
18079
18171
  "name": "mocha",
18080
- "version": "7.0.1",
18172
+ "version": "7.1.0",
18081
18173
  "homepage": "https://mochajs.org/",
18082
18174
  "notifyLogo": "https://ibin.co/4QuRuGjXvl36.png"
18083
18175
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mocha",
3
- "version": "7.0.1",
3
+ "version": "7.1.0",
4
4
  "description": "simple, flexible, fun test framework",
5
5
  "keywords": [
6
6
  "mocha",
@@ -14,501 +14,6 @@
14
14
  "url": "https://opencollective.com/mochajs"
15
15
  },
16
16
  "author": "TJ Holowaychuk <tj@vision-media.ca>",
17
- "contributors": [
18
- "38elements <mh19820223@gmail.com>",
19
- "Aaron Brady <aaron@mori.com>",
20
- "Aaron Hamid <aaron.hamid@gmail.com>",
21
- "Aaron Heckmann <aaron.heckmann+github@gmail.com>",
22
- "Aaron Krause <aaronjkrause@gmail.com>",
23
- "Aaron Petcoff <hello@aaronpetcoff.me>",
24
- "abrkn <a@abrkn.com>",
25
- "Adam Crabtree <adam.crabtree@redrobotlabs.com>",
26
- "Adam Ginzberg <aginzberg@gmail.com>",
27
- "Adam Gruber <talknmime@gmail.com>",
28
- "Adrian Ludwig <me@adrianludwig.pl>",
29
- "Ahmad Bamieh <ahmadbamieh@gmail.com>",
30
- "airportyh <airportyh@gmail.com>",
31
- "Ajay Kodali <ajay.kodali@citrix.com>",
32
- "Al Scott <al.scott@atomicobject.com>",
33
- "Alex Bainter <metalex9@users.noreply.github.com>",
34
- "Alexander Early <alexander.early@gmail.com>",
35
- "Alexander Shepelin <Brightcor@gmail.com>",
36
- "Alhadis <gardnerjohng@gmail.com>",
37
- "amsul <reach@amsul.ca>",
38
- "Anders Olsen Sandvik <Andersos@users.noreply.github.com>",
39
- "Andreas Brekken <andreas@opuno.com>",
40
- "Andreas Lind <andreaslindpetersen@gmail.com>",
41
- "Andreas Lind Petersen <andreas@one.com>",
42
- "Andrew Bradley <abradley@brightcove.com>",
43
- "Andrew Bradley <cspotcode@gmail.com>",
44
- "Andrew Krawchyk <903716+akrawchyk@users.noreply.github.com>",
45
- "Andrew Nesbitt <andrewnez@gmail.com>",
46
- "Andrey Popp <8mayday@gmail.com>",
47
- "Andrii Shumada <eagleeyes91@gmail.com>",
48
- "andy matthews <andy@commadelimited.com>",
49
- "Angelica Valenta <angelicavalenta@gmail.com>",
50
- "Anis Safine <anis.safine.ext@francetv.fr>",
51
- "Anish Karandikar <anishkny@gmail.com>",
52
- "Anna Henningsen <github@addaleax.net>",
53
- "Anthony <keppi@o2.pl>",
54
- "Anton <anton.redfox@gmail.com>",
55
- "anton <anton.valickij@gmail.com>",
56
- "APerson <danielhglus@gmail.com>",
57
- "Arian Stolwijk <arian@aryweb.nl>",
58
- "Ariel Mashraki <ariel@mashraki.co.il>",
59
- "Arnaud Brousseau <arnaud.brousseau@gmail.com>",
60
- "Artem Govorov <artem.govorov@gmail.com>",
61
- "Atsuya Takagi <asoftonight@gmail.com>",
62
- "Attila Domokos <adomokos@gmail.com>",
63
- "Austin Birch <mraustinbirch@gmail.com>",
64
- "Avi Vahl <avi.vahl@wix.com>",
65
- "badunk <baduncaduncan@gmail.com>",
66
- "Bamieh <ahmadbamieh@gmail.com>",
67
- "Ben Bradley <ben@bradleyit.com>",
68
- "Ben Glassman <benglass@users.noreply.github.com>",
69
- "Ben Harris <benhdev@gmail.com>",
70
- "Ben Hutchison <ben@aldaviva.com>",
71
- "Ben Lindsey <ben.lindsey@vungle.com>",
72
- "Ben Noordhuis <info@bnoordhuis.nl>",
73
- "Ben Vinegar <ben@benv.ca>",
74
- "Benjamin Eidelman <beneidel@gmail.com>",
75
- "Benjie Gillam <benjie@jemjie.com>",
76
- "Benoit Larroque <zeta.ben@gmail.com>",
77
- "Benoît Zugmeyer <bzugmeyer@gmail.com>",
78
- "Benson Trent <bensontrent@gmail.com>",
79
- "Berker Peksag <berker.peksag@gmail.com>",
80
- "berni <berni@extensa.pl>",
81
- "Bjørge Næss <bjoerge@origo.no>",
82
- "Bjorn Stromberg <bjorn@bjornstar.com>",
83
- "Brendan Nee <brendan.nee@gmail.com>",
84
- "Brian Beck <exogen@gmail.com>",
85
- "Brian Lagerman <49239617+brian-lagerman@users.noreply.github.com>",
86
- "Brian Lalor <blalor@bravo5.org>",
87
- "Brian M. Carlson <brian.m.carlson@gmail.com>",
88
- "Brian Moore <guardbionic-github@yahoo.com>",
89
- "Brian Tomlin <tendonstrength@gmail.com>",
90
- "Brittany Moore <moore.brittanyann@gmail.com>",
91
- "Bryan Donovan <bdondo@gmail.com>",
92
- "Buck Doyle <b@chromatin.ca>",
93
- "C. Scott Ananian <cscott@cscott.net>",
94
- "Callum Macrae <callum@macr.ae>",
95
- "Can Oztokmak <can@zeplin.io>",
96
- "Capacitor Set <CapacitorSet@users.noreply.github.com>",
97
- "Carl-Erik Kopseng <carlerik@gmail.com>",
98
- "Casey Foster <casey@caseywebdev.com>",
99
- "Charles Lowell <cowboyd@frontside.io>",
100
- "Charles Merriam <charles.merriam@gmail.com>",
101
- "Charles Samborski <demurgos@demurgos.net>",
102
- "Charlie Rudolph <charles.w.rudolph@gmail.com>",
103
- "Chen Yangjian <252317+cyjake@users.noreply.github.com>",
104
- "Chris <chrisleck@users.noreply.github.com>",
105
- "Chris Buckley <chris@cmbuckley.co.uk>",
106
- "Chris Lamb <chris@chris-lamb.co.uk>",
107
- "Christian <me@rndm.de>",
108
- "Christian Holm <christian@peakon.com>",
109
- "Christoffer Hallas <christoffer.hallas@gmail.com>",
110
- "Christoph Neuroth <christoph.neuroth@gmail.com>",
111
- "Christopher Hiller <boneskull@boneskull.com>",
112
- "ChrisWren <cthewren@gmail.com>",
113
- "claudyus <claudyus@HEX.(none)>",
114
- "Connor Dunn <connorhd@gmail.com>",
115
- "Corey Butler <corey@coreybutler.com>",
116
- "Corey Farrell <git@cfware.com>",
117
- "Cory Thomas <cory.thomas@bazaarvoice.com>",
118
- "Craig Taub <craigtaub@gmail.com>",
119
- "Cube <maty21@gmail.com>",
120
- "Daniel Ruf <827205+DanielRuf@users.noreply.github.com>",
121
- "Daniel Ruf <daniel@daniel-ruf.de>",
122
- "Daniel St. Jules <danielst.jules@gmail.com>",
123
- "Daniel Stockman <daniel.stockman@gmail.com>",
124
- "Darryl Pogue <dvpdiner2@gmail.com>",
125
- "Dave McKenna <davemckenna01@gmail.com>",
126
- "David da Silva Contín <dasilvacontin@gmail.com>",
127
- "David Henderson <david.henderson@triggeredmessaging.com>",
128
- "David M. Lee <leedm777@yahoo.com>",
129
- "David Neubauer <davidneub@gmail.com>",
130
- "DavidLi119 <han.david.li@gmail.com>",
131
- "DavNej <davnej.dev@gmail.com>",
132
- "Denis Bardadym <bardadymchik@gmail.com>",
133
- "Devin Weaver <suki@tritarget.org>",
134
- "dfberry <dinaberry@outlook.com>",
135
- "Di Wu <dwu@palantir.com>",
136
- "Dina Berry <dfberry@users.noreply.github.com>",
137
- "Diogo Monteiro <diogo.gmt@gmail.com>",
138
- "Dmitrii Sorin <info@staypositive.ru>",
139
- "Dmitriy Simushev <simushevds@gmail.com>",
140
- "Dmitry Shirokov <deadrunk@gmail.com>",
141
- "Dmitry Sorin <info@staypositive.ru>",
142
- "Domenic Denicola <domenic@domenicdenicola.com>",
143
- "Dominic Barnes <dominic@dbarnes.info>",
144
- "Dominique Quatravaux <dominique@quatravaux.org>",
145
- "Douglas Christopher Wilson <doug@somethingdoug.com>",
146
- "Duncan Beevers <duncan@dweebd.com>",
147
- "eiji.ienaga <eiji.ienaga@gmail.com>",
148
- "elergy <elergy@yandex-team.ru>",
149
- "Eli Skeggs <skeggse@users.noreply.github.com>",
150
- "ELLIOTTCABLE <me@ell.io>",
151
- "Emanuele <my.burning@gmail.com>",
152
- "Enric Pallerols <enric@pallerols.cat>",
153
- "Erik Eng <mail@ptz0n.se>",
154
- "Eugene Tiutiunnyk <eugene.tiutiunnyk@lookout.com>",
155
- "EunChan Park <pec9399@naver.com>",
156
- "Fabio M. Costa <fabiomcosta@gmail.com>",
157
- "Fábio Santos <fabiosantosart@gmail.com>",
158
- "Fagner Brack <github3@fagnermartins.com>",
159
- "fargies <fargies@users.noreply.github.com>",
160
- "FARKAS Máté <mate.farkas@virtual-call-center.eu>",
161
- "fcrisci <fabio.crisci@amadeus.com>",
162
- "Fede Ramirez <i@2fd.me>",
163
- "Fedor Indutny <fedor.indutny@gmail.com>",
164
- "fengmk2 <fengmk2@gmail.com>",
165
- "Fin Chen <finfin@gmail.com>",
166
- "Florian Margaine <florian@margaine.com>",
167
- "FND <FND@users.noreply.github.com>",
168
- "fool2fish <fool2fish@gmail.com>",
169
- "Forbes Lindesay <forbes@lindesay.co.uk>",
170
- "Frank Leon Rose <frankleonrose@gmail.com>",
171
- "Frederico Silva <frederico.silva@gmail.com>",
172
- "Fredrik Enestad <fredrik@devloop.se>",
173
- "Fredrik Lindin <fredriklindin@gmail.com>",
174
- "Fumiaki MATSUSHIMA <mtsmfm@gmail.com>",
175
- "Gabe Gorelick <gabegorelick@gmail.com>",
176
- "Gabriel Silk <gabesilk@gmail.com>",
177
- "Gareth Aye <gaye@mozilla.com>",
178
- "Gareth Murphy <gareth.cpm@gmail.com>",
179
- "Gastón I. Silva <givanse@gmail.com>",
180
- "Gavin Mogan <GavinM@airg.com>",
181
- "gaye <gaye@mozilla.com>",
182
- "gigadude <gigadude@users.noreply.github.com>",
183
- "Giovanni Bassi <giggio@giggio.net>",
184
- "gizemkeser <44727928+gizemkeser@users.noreply.github.com>",
185
- "Glen Huang <curvedmark@gmail.com>",
186
- "Glen Mailer <glenjamin@gmail.com>",
187
- "grasGendarme <me@grasgendar.me>",
188
- "Greg Perkins <gregperkins@alum.mit.edu>",
189
- "Guangcong Luo <guangcongluo@gmail.com>",
190
- "Guillermo Rauch <rauchg@gmail.com>",
191
- "Guy Arye <arye.guy@gmail.com>",
192
- "Gyandeep Singh <gyandeeps@gmail.com>",
193
- "Harish <hyeluri@gmail.com>",
194
- "Harry Brundage <harry.brundage@gmail.com>",
195
- "Harry Sarson <harry.sarson@hotmail.co.uk>",
196
- "Harry Wolff <hswolff@users.noreply.github.com>",
197
- "Herman Junge <herman@geekli.st>",
198
- "hokaccha <k.hokamura@gmail.com>",
199
- "Honza Javorek <mail@honzajavorek.cz>",
200
- "Hugo Giraudel <hugo.giraudel@gmail.com>",
201
- "Hugo Kim <k7120792@gmail.com>",
202
- "HYUNSANG HAN <gustkd3@gmail.com>",
203
- "HyunSangHan <gustkd3@gmail.com>",
204
- "Ian Storm Taylor <ian@ianstormtaylor.com>",
205
- "Ian W. Remmel <design@ianwremmel.com>",
206
- "Ian Young <ian.greenleaf@gmail.com>",
207
- "Ian Zamojc <ian@thesecretlocation.net>",
208
- "Igwe Kalu <igwe.kalu@live.com>",
209
- "ImgBot <31427850+ImgBotApp@users.noreply.github.com>",
210
- "inxorable <inxorable@codewren.ch>",
211
- "Ivan <ivan@kinvey.com>",
212
- "Jaakko Salonen <jaakko.salonen@iki.fi>",
213
- "Jacob Wejendorp <jacob@wejendorp.dk>",
214
- "Jake Craige <james.craige@gmail.com>",
215
- "Jake Marsh <jakemmarsh@gmail.com>",
216
- "Jakob Krigovsky <jakob@krigovsky.com>",
217
- "Jakub Nešetřil <jakub@apiary.io>",
218
- "James Bowes <jbowes@repl.ca>",
219
- "James Carr <james.r.carr@gmail.com>",
220
- "James D. Rogers <jd2rogers2@gmail.com>",
221
- "James G. Kim <jgkim@jayg.org>",
222
- "James Lal <james@lightsofapollo.com>",
223
- "James Nylen <jnylen@gmail.com>",
224
- "Jan Kopriva <jan.kopriva@gooddata.com>",
225
- "Jan Krems <jan.krems@groupon.com>",
226
- "Jan Lehnardt <jan@apache.org>",
227
- "Jan-Philip Gehrcke <jgehrcke@googlemail.com>",
228
- "Jason Barry <jay@jcbarry.com>",
229
- "Jason Lai <jason@getpebble.com>",
230
- "Jason Leyba <jmleyba@gmail.com>",
231
- "Javier Aranda <javierav@javierav.com>",
232
- "Jayasankar <jayasankar.m@gmail.com>",
233
- "Jean Ponchon <gelule@gmail.com>",
234
- "Jeff Kunkle <jeff.kunkle@nearinfinity.com>",
235
- "Jeff Schilling <jeff.schilling@q2ebanking.com>",
236
- "JeongHoon Byun (aka Outsider) <outsideris@gmail.com>",
237
- "Jérémie Astori <jeremie@astori.fr>",
238
- "Jeremy Martin <jmar777@gmail.com>",
239
- "Jerry Muzsik <jerrymuzsik@icloud.com>",
240
- "Jesse Dailey <jesse.dailey@gmail.com>",
241
- "jimenglish81 <jimenglish81@gmail.com>",
242
- "Jimmy Cuadra <jimmy@jimmycuadra.com>",
243
- "Jo Liss <joliss42@gmail.com>",
244
- "Joao Moreno <mail@joaomoreno.com>",
245
- "Joel Kemp <mrjoelkemp@gmail.com>",
246
- "Joey Cozza <joey@grow.com>",
247
- "John Doty <jrhdoty@gmail.com>",
248
- "John Firebaugh <john.firebaugh@gmail.com>",
249
- "John Reeves <github@jonnyreeves.co.uk>",
250
- "Johnathon Sanders <outdooricon@gmail.com>",
251
- "Jon Surrell <jon.surrell@automattic.com>",
252
- "Jonas Dohse <jonas@mbr-targeting.com>",
253
- "Jonas Westerlund <jonas.westerlund@me.com>",
254
- "Jonathan Creamer <matrixhasyou2k4@gmail.com>",
255
- "Jonathan Delgado <jdelgado@rewip.com>",
256
- "Jonathan Kim <jkimbo@gmail.com>",
257
- "Jonathan Ong <jonathanrichardong@gmail.com>",
258
- "Jonathan Park <jpark@daptiv.com>",
259
- "Jonathan Rajavuori <jrajav@gmail.com>",
260
- "Jordan Sexton <jordan@jordansexton.com>",
261
- "Joseph Lin <josephlin55555@gmail.com>",
262
- "Josh Eversmann <josh.eversmann@gmail.com>",
263
- "Josh Lory <josh.lory@code.org>",
264
- "Josh Soref <jsoref@users.noreply.github.com>",
265
- "Joshua Appelman <jappelman@xebia.com>",
266
- "Joshua Krall <joshuakrall@pobox.com>",
267
- "JP Bochi <jpbochi@gmail.com>",
268
- "jsdevel <js.developer.undefined@gmail.com>",
269
- "Juerg B <44573692+juergba@users.noreply.github.com>",
270
- "juergba <filodron@gmail.com>",
271
- "Julien Wajsberg <felash@gmail.com>",
272
- "Jupp Müller <jupp0r@gmail.com>",
273
- "Jussi Virtanen <jussi.k.virtanen@gmail.com>",
274
- "Justin DuJardin <justin.dujardin@sococo.com>",
275
- "Juzer Ali <er.juzerali@gmail.com>",
276
- "Katie Gengler <katiegengler@gmail.com>",
277
- "kavun <kevin.a.reed@gmail.com>",
278
- "Kazuhito Hokamura <k.hokamura@gmail.com>",
279
- "Keith Cirkel <github@keithcirkel.co.uk>",
280
- "Kelong Wang <buaawkl@gmail.com>",
281
- "Kent C. Dodds <kent+github@doddsfamily.us>",
282
- "Kevin Burke <kev@inburke.com>",
283
- "Kevin Conway <kevinjacobconway@gmail.com>",
284
- "Kevin Kirsche <Kev.Kirsche+GitHub@gmail.com>",
285
- "Kevin Partington <platinum.azure@kernelpanicstudios.com>",
286
- "Kevin Wang <kevin@fossa.io>",
287
- "Kirill Korolyov <kirill.korolyov@gmail.com>",
288
- "klaemo <klaemo@fastmail.fm>",
289
- "Koen Punt <koen@koenpunt.nl>",
290
- "Konstantin Käfer <github@kkaefer.com>",
291
- "Kris Rasmussen <kristopher.rasmussen@gmail.com>",
292
- "Kunal Nagpal <kunagpal@users.noreply.github.com>",
293
- "Kyle Fuller <kyle@fuller.li>",
294
- "Kyle Mitchell <kyle@kemitchell.com>",
295
- "KyoungWan <kyngwan@gmail.com>",
296
- "lakmeer <lakmeerkravid@gmail.com>",
297
- "Lane Kelly <lanekelly16@gmail.com>",
298
- "László Bácsi <lackac@lackac.hu>",
299
- "Laurence Rowe <lrowe@netflix.com>",
300
- "Liam Newman <bitwiseman@gmail.com>",
301
- "Lindsay-Needs-Sleep <51773923+Lindsay-Needs-Sleep@users.noreply.github.com>",
302
- "Linus Unnebäck <linus@folkdatorn.se>",
303
- "lodr <salva@unoyunodiez.com>",
304
- "Long Ho <longlho@users.noreply.github.com>",
305
- "Maciej Małecki <maciej.malecki@notimplemented.org>",
306
- "Mal Graty <mal.graty@googlemail.com>",
307
- "Marais Rossouw <me@maraisr.com>",
308
- "Marc Kuo <kuomarc2@gmail.com>",
309
- "Marc Udoff <mlucool@gmail.com>",
310
- "Marcello Bastea-Forte <marcello@cellosoft.com>",
311
- "Mario Díaz Ceñera <46492068+MarioDiaz98@users.noreply.github.com>",
312
- "Mark Banner <standard8@mozilla.com>",
313
- "Mark Owsiak <mark.owsiak@gmail.com>",
314
- "Markus Tacker <m@coderbyheart.com>",
315
- "Martijn Cuppens <martijn.cuppens@intracto.com>",
316
- "Martin Marko <marcus@gratex.com>",
317
- "Mathieu Desvé <mathieudesve@MacBook-Pro-de-Mathieu.local>",
318
- "Matija Marohnić <matija.marohnic@gmail.com>",
319
- "Matt Bierner <mattbierner@gmail.com>",
320
- "Matt Giles <matt.giles@cerner.com>",
321
- "Matt Robenolt <matt@ydekproductions.com>",
322
- "Matt Smith <matthewgarysmith@gmail.com>",
323
- "Matthew Shanley <matthewshanley@littlesecretsrecords.com>",
324
- "Mattias Tidlund <mattias.tidlund@learningwell.se>",
325
- "Max Goodman <c@chromakode.com>",
326
- "Maximilian Antoni <mail@maxantoni.de>",
327
- "Merrick Christensen <merrick.christensen@gmail.com>",
328
- "Mia <miajeongdev@gmail.com>",
329
- "Michael Demmer <demmer@jut.io>",
330
- "Michael Jackson <mjijackson@gmail.com>",
331
- "Michael Olson <mwolson@member.fsf.org>",
332
- "Michael Riley <michael.riley@autodesk.com>",
333
- "Michael Schoonmaker <michael.r.schoonmaker@gmail.com>",
334
- "Michal Charemza <michalcharemza@gmail.com>",
335
- "Michiel de Jong <michiel@unhosted.org>",
336
- "Mick Brooks <mick.brooks@sinking.in>",
337
- "Mike Pennisi <mike@mikepennisi.com>",
338
- "Mislav Marohnić <mislav.marohnic@gmail.com>",
339
- "monowerker <monowerker@gmail.com>",
340
- "Moshe Kolodny <mkolodny@integralads.com>",
341
- "mrShturman <mrshturman@gmail.com>",
342
- "Nathan Alderson <nathan.alderson@adtran.com>",
343
- "Nathan Black <nathan@nathanblack.org>",
344
- "Nathan Bowser <nathan.bowser@spiderstrategies.com>",
345
- "Nathan Houle <nathan@nathanhoule.com>",
346
- "Nathan Rajlich <nathan@tootallnate.net>",
347
- "nexdrew <andrew.goode@nextraq.com>",
348
- "Nick Fitzgerald <fitzgen@gmail.com>",
349
- "Nicolas Girault <nic.girault@gmail.com>",
350
- "Nicolo Taddei <taddei.uk@gmail.com>",
351
- "Nik Nyby <nnyby@columbia.edu>",
352
- "Nikolaos Georgiou <Nikolaos.Georgiou@gmail.com>",
353
- "nishigori <Takuya_Nishigori@voyagegroup.com>",
354
- "Noshir Patel <nosh@blackpiano.com>",
355
- "not-an-aardvark <not-an-aardvark@users.noreply.github.com>",
356
- "OlegTsyba <oleg.tsyba.ua@gmail.com>",
357
- "Oliver Salzburg <oliver.salzburg@gmail.com>",
358
- "olsonpm <olsonpm@users.noreply.github.com>",
359
- "omardelarosa <thedelarosa@gmail.com>",
360
- "Oscar Godson <oscargodson@outlook.com>",
361
- "Outsider <outsideris@gmail.com>",
362
- "oveddan <stangogh@gmail.com>",
363
- "P. Roebuck <plroebuck@users.noreply.github.com>",
364
- "Panu Horsmalahti <panu.horsmalahti@iki.fi>",
365
- "Park Seong-beom <parkgds@gmail.com>",
366
- "Parker Moore <parkrmoore@gmail.com>",
367
- "Pascal <pascal@pascal.com>",
368
- "Pat Finnigan <patrick.k.finnigan@gmail.com>",
369
- "Paul Armstrong <paul@paularmstrongdesigns.com>",
370
- "Paul Miller <paul@paulmillr.com>",
371
- "Paul Roebuck <plroebuck@users.noreply.github.com>",
372
- "Pavel Zubkou <pavel.zubkou@gmail.com>",
373
- "Pete Hawkins <pete@petes-imac.frontinternal.net>",
374
- "Peter Müller <munter@fumle.dk>",
375
- "Peter Rust <peter@cornerstonenw.com>",
376
- "Peter Schmidt <peter@peterjs.com>",
377
- "Phil Sung <psung@dnanexus.com>",
378
- "Philip M. White <philip@mailworks.org>",
379
- "Piotr Kuczynski <piotr.kuczynski@gmail.com>",
380
- "PoppinL <poppinlp@gmail.com>",
381
- "Poprádi Árpád <popradi.arpad11@gmail.com>",
382
- "Prayag Verma <prayag.verma@gmail.com>",
383
- "qiuzuhui <qiuzuhui@users.noreply.github.com>",
384
- "Quang Van <quangvvv@gmail.com>",
385
- "Quanlong He <kyan.ql.he@gmail.com>",
386
- "R56 <rviskus@gmail.com>",
387
- "Raynos <raynos2@gmail.com>",
388
- "Refael Ackermann <refael@empeeric.com>",
389
- "Rens Groothuijsen <l.groothuijsen@alumni.maastrichtuniversity.nl>",
390
- "Rich Trott <rtrott@gmail.com>",
391
- "Richard Dingwall <rdingwall@gmail.com>",
392
- "Richard Knop <RichardKnop@users.noreply.github.com>",
393
- "Rico Sta. Cruz <rstacruz@users.noreply.github.com>",
394
- "rmacklin <richard.github@nrm.com>",
395
- "Rob Loach <robloach@gmail.com>",
396
- "Rob Raux <rraux@peachworks.com>",
397
- "Rob Wu <rob@robwu.nl>",
398
- "Robert Kieffer <robert@broofa.com>",
399
- "Robert Rossmann <rr.rossmann@me.com>",
400
- "Romain Prieto <romain.prieto@gmail.com>",
401
- "Roman Neuhauser <rneuhauser@suse.cz>",
402
- "Roman Shtylman <shtylman@gmail.com>",
403
- "Ross Warren <rosswarren4@gmail.com>",
404
- "rotemdan <rotemdan@gmail.com>",
405
- "Russ Bradberry <devdazed@me.com>",
406
- "Russell Munson <rmunson@github.com>",
407
- "Rustem Mustafin <mustafin.rustem@gmail.com>",
408
- "Ryan Hubbard <ryanmhubbard@gmail.com>",
409
- "Ryan Shaw <ryan.shaw@min.vc>",
410
- "Ryan Tablada <ryan.tablada@gmail.com>",
411
- "Ryunosuke SATO <tricknotes.rs@gmail.com>",
412
- "ryym <ryym.64@gmail.com>",
413
- "Saerom Bang <saerombang11@gmail.com>",
414
- "Salehen Shovon Rahman <salehen.rahman@gmail.com>",
415
- "Sam Mussell <smussell@gmail.com>",
416
- "samuel goldszmidt <samuel.goldszmidt@gmail.com>",
417
- "sarehag <joakim.sarehag@gmail.com>",
418
- "Sasha Koss <koss@nocorp.me>",
419
- "Scott Kao <Scottkao85@users.noreply.github.com>",
420
- "Scott Santucci <ScottFreeCode@users.noreply.github.com>",
421
- "ScottFreeCode <ScottFreeCode@users.noreply.github.com>",
422
- "Sean Lang <slang800@gmail.com>",
423
- "Sebastian Van Sande <sebastian@vansande.org>",
424
- "sebv <seb.vincent@gmail.com>",
425
- "Seiya Konno <nulltask@gmail.com>",
426
- "Sergey Simonchik <sergey.simonchik@jetbrains.com>",
427
- "Sergio Santoro <santoro.srg@gmail.com>",
428
- "Shaine Hatch <shaine@squidtree.com>",
429
- "Shawn Krisman <telaviv@github>",
430
- "SheetJSDev <dev@sheetjs.com>",
431
- "Shinnosuke Watanabe <snnskwtnb@gmail.com>",
432
- "silentcloud <rjmuqiang@gmail.com>",
433
- "Silvio Massari <silvio.massari@auth0.com>",
434
- "Simon Gaeremynck <gaeremyncks@gmail.com>",
435
- "Simon Goumaz <simon@attentif.ch>",
436
- "simov <simeonvelichkov@gmail.com>",
437
- "Sindre Sorhus <sindresorhus@gmail.com>",
438
- "Slobodan Mišković <slobodan@miskovic.ca>",
439
- "slyg <syl.faucherand@gmail.com>",
440
- "Soel <shachar.soel@sap.com>",
441
- "solodynamo <bittuf3@gmail.com>",
442
- "Sona Lee <mojosoeun@gmail.com>",
443
- "Soobin Bak <qls014738@gmail.com>",
444
- "Sorin Iclanzan <sorin@iclanzan.com>",
445
- "Standa Opichal <opichals@gmail.com>",
446
- "startswithaj <jake.mc@icloud.com>",
447
- "Stephen Hess <trescube@users.noreply.github.com>",
448
- "Stephen Mathieson <smath23@gmail.com>",
449
- "Steve Mason <stevem@brandwatch.com>",
450
- "Stewart Taylor <stewart.taylor1@gmail.com>",
451
- "Stone <baoshi.li@adleida.com>",
452
- "Sulabh Bista <sul4bh@gmail.com>",
453
- "Sune Simonsen <sune@we-knowhow.dk>",
454
- "Svetlana <39729453+Lana-Light@users.noreply.github.com>",
455
- "Sylvain <sstephant+github@gmail.com>",
456
- "Sylvester Keil <sylvester@keil.or.at>",
457
- "Szauka <33459309+Szauka@users.noreply.github.com>",
458
- "Tapiwa Kelvin <tapiwa@munzwa.tk>",
459
- "Ted Yavuzkurt <hello@TedY.io>",
460
- "Teddy Zeenny <teddyzeenny@gmail.com>",
461
- "tgautier@yahoo.com <tgautier@gmail.com>",
462
- "Thedark1337 <thedark1337@thedark1337.com>",
463
- "Thomas Broadley <buriedunderbooks@hotmail.com>",
464
- "Thomas Grainger <tagrain@gmail.com>",
465
- "Thomas Scholtes <thomas-scholtes@gmx.de>",
466
- "Thomas Vantuycom <thomasvantuycom@protonmail.com>",
467
- "Tim Ehat <timehat@gmail.com>",
468
- "Tim Harshman <goteamtim+git@gmail.com>",
469
- "Timo Tijhof <krinklemail@gmail.com>",
470
- "Timothy Gu <timothygu99@gmail.com>",
471
- "Tingan Ho <tingan87@gmail.com>",
472
- "tmont <tommy.mont@gmail.com>",
473
- "Tobias Bieniek <tobias.bieniek@gmail.com>",
474
- "Tobias Mollstam <tobias@mollstam.com>",
475
- "Todd Agulnick <tagulnick@onjack.com>",
476
- "Tom Coquereau <tom@thau.me>",
477
- "Tom Hughes <tom@compton.nu>",
478
- "Tomer Eskenazi <tomer.eskenazi@ironsrc.com>",
479
- "toyjhlee <toyjhlee@gmail.com>",
480
- "traleig1 <darkphoenix739@gmail.com>",
481
- "Travis Jeffery <tj@travisjeffery.com>",
482
- "tripu <t@tripu.info>",
483
- "Tyson Tate <tyson@tysontate.com>",
484
- "Vadim Nikitin <vnikiti@ncsu.edu>",
485
- "Valentin Agachi <github-com@agachi.name>",
486
- "Valeri Karpov <val@karpov.io>",
487
- "Victor <victor@turo.com>",
488
- "Victor Costan <costan@gmail.com>",
489
- "Ville Saukkonen <villesau@users.noreply.github.com>",
490
- "Vivek Ganesan <caliberoviv@gmail.com>",
491
- "vlad <iamvlad@gmail.com>",
492
- "Vlad Magdalin <vlad@webflow.com>",
493
- "Volker Buzek <volker.buzek@sap.com>",
494
- "Wanseob Lim <email@wanseob.com>",
495
- "Wil Moore III <wil.moore@wilmoore.com>",
496
- "Will Langstroth <will@langstroth.com>",
497
- "wsw <wsw0108@gmail.com>",
498
- "Xavier Antoviaque <xavier@antoviaque.org>",
499
- "Xavier Damman <xdamman@gmail.com>",
500
- "XhmikosR <xhmikosr@gmail.com>",
501
- "XhmikosR <xhmikosr@users.sourceforge.net>",
502
- "Yanis Wang <yanis.wang@gmail.com>",
503
- "yehiyam <yehiyam@users.noreply.github.com>",
504
- "Yoshiya Hinosawa <hinosawa@waku-2.com>",
505
- "Yuest Wang <yuestwang@gmail.com>",
506
- "yuitest <yuitest@cjhat.net>",
507
- "zhiyelee <zhiyelee@gmail.com>",
508
- "Zirak <zirakertan@gmail.com>",
509
- "Zsolt Takács <zsolt@takacs.cc>",
510
- "现充 <qixiang.cqx@alibaba-inc.com>"
511
- ],
512
17
  "license": "MIT",
513
18
  "repository": {
514
19
  "type": "git",
@@ -549,7 +54,7 @@
549
54
  "growl": "1.10.5",
550
55
  "he": "1.2.0",
551
56
  "js-yaml": "3.13.1",
552
- "log-symbols": "2.2.0",
57
+ "log-symbols": "3.0.0",
553
58
  "minimatch": "3.0.4",
554
59
  "mkdirp": "0.5.1",
555
60
  "ms": "2.1.1",
@@ -565,11 +70,11 @@
565
70
  },
566
71
  "devDependencies": {
567
72
  "@11ty/eleventy": "^0.8.3",
568
- "@mocha/contributors": "^1.0.4",
569
73
  "@mocha/docdash": "^2.1.2",
570
74
  "acorn": "^7.0.0",
571
75
  "assetgraph-builder": "^6.10.1",
572
76
  "autoprefixer": "^9.6.0",
77
+ "babel-eslint": "^10.0.3",
573
78
  "browserify": "^16.2.3",
574
79
  "browserify-package-json": "^1.0.1",
575
80
  "chai": "^4.2.0",
@@ -577,15 +82,15 @@
577
82
  "coveralls": "^3.0.3",
578
83
  "cross-env": "^5.2.0",
579
84
  "cross-spawn": "^6.0.5",
580
- "eslint": "^5.16.0",
581
- "eslint-config-prettier": "^3.6.0",
582
- "eslint-config-semistandard": "^13.0.0",
583
- "eslint-config-standard": "^12.0.0",
584
- "eslint-plugin-import": "^2.17.3",
585
- "eslint-plugin-node": "^8.0.1",
586
- "eslint-plugin-prettier": "^3.1.0",
587
- "eslint-plugin-promise": "^4.1.1",
588
- "eslint-plugin-standard": "^4.0.0",
85
+ "eslint": "^6.8.0",
86
+ "eslint-config-prettier": "^6.9.0",
87
+ "eslint-config-semistandard": "^15.0.0",
88
+ "eslint-config-standard": "^14.1.0",
89
+ "eslint-plugin-import": "^2.19.1",
90
+ "eslint-plugin-node": "^11.0.0",
91
+ "eslint-plugin-prettier": "^3.1.2",
92
+ "eslint-plugin-promise": "^4.2.1",
93
+ "eslint-plugin-standard": "^4.0.1",
589
94
  "fs-extra": "^8.0.1",
590
95
  "husky": "^1.3.1",
591
96
  "hyperlink": "^4.3.1",
@@ -655,13 +160,6 @@
655
160
  "endOfLine": "auto"
656
161
  },
657
162
  "gitter": "https://gitter.im/mochajs/mocha",
658
- "@mocha/contributors": {
659
- "exclude": [
660
- "greenkeeperio-bot <support@greenkeeper.io>",
661
- "greenkeeper[bot] <greenkeeper[bot]@users.noreply.github.com>",
662
- "TJ Holowaychuk <tj@vision-media.ca>"
663
- ]
664
- },
665
163
  "husky": {
666
164
  "hooks": {
667
165
  "pre-commit": "lint-staged"