From b71f396df7b9d74ef24262b6840df1593cad3798 Mon Sep 17 00:00:00 2001 From: Mark Wubben Date: Sat, 3 Oct 2020 18:05:47 +0200 Subject: [PATCH 1/8] shared-workers: Don't warn when too many message listeners are added Each test process using the shared worker will add a listener. There could be more than 10 processes using the worker concurrently. Disable the standard listener limit since the warning it prints is irrelevant. --- lib/plugin-support/shared-workers.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/plugin-support/shared-workers.js b/lib/plugin-support/shared-workers.js index 6fe45c9e6..619f7a9dc 100644 --- a/lib/plugin-support/shared-workers.js +++ b/lib/plugin-support/shared-workers.js @@ -34,6 +34,8 @@ function launchWorker({filename, initialData}) { initialData } }); + worker.setMaxListeners(0); + const launched = { statePromises: { available: waitForAvailable(worker), From dcd583171e30b92469e5bb6a387da5711703ad06 Mon Sep 17 00:00:00 2001 From: Luis Romero <6332263+luiscobits@users.noreply.github.com> Date: Wed, 28 Oct 2020 04:29:18 -0500 Subject: [PATCH 2/8] Remove link to avacasts --- readme.md | 1 - 1 file changed, 1 deletion(-) diff --git a/readme.md b/readme.md index 458f83381..08c41db88 100644 --- a/readme.md +++ b/readme.md @@ -205,7 +205,6 @@ It's the [Andromeda galaxy](https://simple.wikipedia.org/wiki/Andromeda_galaxy). - [AVA stickers, t-shirts, etc](https://www.redbubble.com/people/sindresorhus/works/30330590-ava-logo) - [Awesome list](https://github.com/avajs/awesome-ava) -- [AVA Casts](http://avacasts.com) - [Do you like AVA? Donate here!](https://opencollective.com/ava) - [More…](https://github.com/avajs/awesome-ava) From c3e43bf636ed13753a2135752d7138ddbd16a0a1 Mon Sep 17 00:00:00 2001 From: Mark Wubben Date: Sat, 31 Oct 2020 16:59:42 +0100 Subject: [PATCH 3/8] Test with Node.js 15 --- .github/workflows/ci.yml | 2 +- package.json | 2 +- test-tap/reporters/mini.edgecases.v15.log | 64 ++ test-tap/reporters/mini.failfast.v15.log | 27 + test-tap/reporters/mini.failfast2.v15.log | 27 + test-tap/reporters/mini.only.v15.log | 15 + test-tap/reporters/mini.regular.v15.log | 561 ++++++++++++++++++ test-tap/reporters/mini.watch.v15.log | 45 ++ test-tap/reporters/tap.edgecases.v15.log | 55 ++ test-tap/reporters/tap.failfast.v15.log | 20 + test-tap/reporters/tap.failfast2.v15.log | 22 + test-tap/reporters/tap.only.v15.log | 15 + test-tap/reporters/tap.regular.v15.log | 368 ++++++++++++ test-tap/reporters/verbose.edgecases.v15.log | 57 ++ test-tap/reporters/verbose.failfast.v15.log | 25 + test-tap/reporters/verbose.failfast2.v15.log | 25 + test-tap/reporters/verbose.only.v15.log | 10 + test-tap/reporters/verbose.regular.v15.log | 469 +++++++++++++++ .../verbose.timeoutinmultiplefiles.v15.log | 33 ++ .../verbose.timeoutinsinglefile.v15.log | 19 + .../verbose.timeoutwithmatch.v15.log | 17 + test-tap/reporters/verbose.watch.v15.log | 32 + 22 files changed, 1908 insertions(+), 2 deletions(-) create mode 100644 test-tap/reporters/mini.edgecases.v15.log create mode 100644 test-tap/reporters/mini.failfast.v15.log create mode 100644 test-tap/reporters/mini.failfast2.v15.log create mode 100644 test-tap/reporters/mini.only.v15.log create mode 100644 test-tap/reporters/mini.regular.v15.log create mode 100644 test-tap/reporters/mini.watch.v15.log create mode 100644 test-tap/reporters/tap.edgecases.v15.log create mode 100644 test-tap/reporters/tap.failfast.v15.log create mode 100644 test-tap/reporters/tap.failfast2.v15.log create mode 100644 test-tap/reporters/tap.only.v15.log create mode 100644 test-tap/reporters/tap.regular.v15.log create mode 100644 test-tap/reporters/verbose.edgecases.v15.log create mode 100644 test-tap/reporters/verbose.failfast.v15.log create mode 100644 test-tap/reporters/verbose.failfast2.v15.log create mode 100644 test-tap/reporters/verbose.only.v15.log create mode 100644 test-tap/reporters/verbose.regular.v15.log create mode 100644 test-tap/reporters/verbose.timeoutinmultiplefiles.v15.log create mode 100644 test-tap/reporters/verbose.timeoutinsinglefile.v15.log create mode 100644 test-tap/reporters/verbose.timeoutwithmatch.v15.log create mode 100644 test-tap/reporters/verbose.watch.v15.log diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 164c01b05..204c19d52 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,7 +15,7 @@ jobs: strategy: fail-fast: false matrix: - node-version: [^10.18.0, ^12.14.0, ^14.0.0] + node-version: [^10.18.0, ^12.14.0, ^14.0.0, ^15.0.0] os: [ubuntu-latest, windows-latest] steps: - uses: actions/checkout@v1 diff --git a/package.json b/package.json index 99e3b7c99..e5f9de1dc 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "homepage": "https://avajs.dev", "bin": "cli.js", "engines": { - "node": ">=10.18.0 <11 || >=12.14.0 <12.17.0 || >=12.17.0 <13 || >=14.0.0" + "node": ">=10.18.0 <11 || >=12.14.0 <12.17.0 || >=12.17.0 <13 || >=14.0.0 <15 || >=15" }, "scripts": { "test": "xo && tsd && c8 --report=none tap && c8 --report=none --no-clean test-ava && c8 report" diff --git a/test-tap/reporters/mini.edgecases.v15.log b/test-tap/reporters/mini.edgecases.v15.log new file mode 100644 index 000000000..124dfe144 --- /dev/null +++ b/test-tap/reporters/mini.edgecases.v15.log @@ -0,0 +1,64 @@ +[?25l---tty-stream-chunk-separator + +---tty-stream-chunk-separator +* ---tty-stream-chunk-separator +---tty-stream-chunk-separator +* ⚠ Could not parse ast-syntax-error.js for line number selection---tty-stream-chunk-separator +---tty-stream-chunk-separator +* ✖ Line numbers for ast-syntax-error.js did not match any tests---tty-stream-chunk-separator +---tty-stream-chunk-separator +* ✖ No tests found in ava-import-no-test-declaration.js---tty-stream-chunk-separator +---tty-stream-chunk-separator +* ✖ No tests found in no-ava-import.js, make sure to import "ava" at the top of your test file---tty-stream-chunk-separator +---tty-stream-chunk-separator +* ✖ Line numbers for test.js did not match any tests---tty-stream-chunk-separator +---tty-stream-chunk-separator +[?25h ✖ No tests found in no-ava-import.js, make sure to import "ava" at the top of your test file + ✖ No tests found in ava-import-no-test-declaration.js + ✖ No tests found in import-and-use-test-member.js + ✖ No tests found in throws.js + ⚠ Could not parse ast-syntax-error.js for line number selection + ✖ Line numbers for ast-syntax-error.js did not match any tests + ✖ Line numbers for test.js did not match any tests + + ─ + + Uncaught exception in import-and-use-test-member.js + + import-and-use-test-member.js:3 + + 2: +  3: test('pass', t => t.pass()); + 4: + + TypeError: test is not a function + + › Object. (test-tap/fixture/report/edgecases/import-and-use-test-member.js:3:1) + › Module._compile (node:internal/modules/cjs/loader:1083:30) + › Module.load (node:internal/modules/cjs/loader:948:32) + › Function.Module._load (node:internal/modules/cjs/loader:789:14) + › Module.require (node:internal/modules/cjs/loader:972:19) + › require (node:internal/modules/cjs/helpers:88:18) + + + + Uncaught exception in throws.js + + throws.js:1 + +  1: throw new Error('throws'); + 2: + + Error: throws + + › Object. (test-tap/fixture/report/edgecases/throws.js:1:7) + › Module._compile (node:internal/modules/cjs/loader:1083:30) + › Module.load (node:internal/modules/cjs/loader:948:32) + › Function.Module._load (node:internal/modules/cjs/loader:789:14) + › Module.require (node:internal/modules/cjs/loader:972:19) + › require (node:internal/modules/cjs/helpers:88:18) + + ─ + + 2 uncaught exceptions +---tty-stream-chunk-separator diff --git a/test-tap/reporters/mini.failfast.v15.log b/test-tap/reporters/mini.failfast.v15.log new file mode 100644 index 000000000..4678967e5 --- /dev/null +++ b/test-tap/reporters/mini.failfast.v15.log @@ -0,0 +1,27 @@ +[?25l---tty-stream-chunk-separator + +---tty-stream-chunk-separator +* ---tty-stream-chunk-separator +---tty-stream-chunk-separator +* a › fails + + 1 test failed---tty-stream-chunk-separator +---tty-stream-chunk-separator +[?25h a › fails + + a.js:3 + + 2: +  3: test('fails', t => t.fail()); + 4: + + Test failed via `t.fail()` + + › test-tap/fixture/report/failfast/a.js:3:22 + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + ─ + + `--fail-fast` is on. 1 test file was skipped. + 1 test failed +---tty-stream-chunk-separator diff --git a/test-tap/reporters/mini.failfast2.v15.log b/test-tap/reporters/mini.failfast2.v15.log new file mode 100644 index 000000000..37594f929 --- /dev/null +++ b/test-tap/reporters/mini.failfast2.v15.log @@ -0,0 +1,27 @@ +[?25l---tty-stream-chunk-separator + +---tty-stream-chunk-separator +* ---tty-stream-chunk-separator +---tty-stream-chunk-separator +* a › fails + + 1 test failed---tty-stream-chunk-separator +---tty-stream-chunk-separator +[?25h a › fails + + a.js:3 + + 2: +  3: test('fails', t => t.fail());  + 4: test('passes', t => t.pass()); + + Test failed via `t.fail()` + + › test-tap/fixture/report/failfast2/a.js:3:22 + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + ─ + + `--fail-fast` is on. At least 1 test was skipped, as well as 1 test file. + 1 test failed +---tty-stream-chunk-separator diff --git a/test-tap/reporters/mini.only.v15.log b/test-tap/reporters/mini.only.v15.log new file mode 100644 index 000000000..cef90482b --- /dev/null +++ b/test-tap/reporters/mini.only.v15.log @@ -0,0 +1,15 @@ +[?25l---tty-stream-chunk-separator + +---tty-stream-chunk-separator +* ---tty-stream-chunk-separator +---tty-stream-chunk-separator +* a › only + + 1 passed---tty-stream-chunk-separator +---tty-stream-chunk-separator +* b › passes + + 2 passed---tty-stream-chunk-separator +---tty-stream-chunk-separator +[?25h 2 tests passed +---tty-stream-chunk-separator diff --git a/test-tap/reporters/mini.regular.v15.log b/test-tap/reporters/mini.regular.v15.log new file mode 100644 index 000000000..5fdc1fe66 --- /dev/null +++ b/test-tap/reporters/mini.regular.v15.log @@ -0,0 +1,561 @@ +[?25l---tty-stream-chunk-separator + +---tty-stream-chunk-separator +* ---tty-stream-chunk-separator +---tty-stream-chunk-separator +* nested-objects › format with max depth 4 + + 1 test failed---tty-stream-chunk-separator +---tty-stream-chunk-separator +* nested-objects › format like with max depth 4 + + 2 tests failed---tty-stream-chunk-separator +---tty-stream-chunk-separator +* output-in-hook › passing test + + 1 passed + 2 tests failed---tty-stream-chunk-separator +---tty-stream-chunk-separator +* output-in-hook › failing test + + 1 passed + 3 tests failed---tty-stream-chunk-separator +---tty-stream-chunk-separator +* test › passes + + 2 passed + 3 tests failed + 1 skipped + 1 todo---tty-stream-chunk-separator +---tty-stream-chunk-separator +* test › fails + + 2 passed + 4 tests failed + 1 skipped + 1 todo---tty-stream-chunk-separator +---tty-stream-chunk-separator +* test › known failure + + 2 passed + 1 known failure + 4 tests failed + 1 skipped + 1 todo---tty-stream-chunk-separator +---tty-stream-chunk-separator +* test › no longer failing + + 2 passed + 1 known failure + 5 tests failed + 1 skipped + 1 todo---tty-stream-chunk-separator +---tty-stream-chunk-separator +* test › logs + + 2 passed + 1 known failure + 6 tests failed + 1 skipped + 1 todo---tty-stream-chunk-separator +---tty-stream-chunk-separator +* test › formatted + + 2 passed + 1 known failure + 7 tests failed + 1 skipped + 1 todo---tty-stream-chunk-separator +---tty-stream-chunk-separator +* test › power-assert + + 2 passed + 1 known failure + 8 tests failed + 1 skipped + 1 todo---tty-stream-chunk-separator +---tty-stream-chunk-separator +* test › bad throws + + 2 passed + 1 known failure + 9 tests failed + 1 skipped + 1 todo---tty-stream-chunk-separator +---tty-stream-chunk-separator +* test › bad notThrows + + 2 passed + 1 known failure + 10 tests failed + 1 skipped + 1 todo---tty-stream-chunk-separator +---tty-stream-chunk-separator +* test › implementation throws non-error + + 2 passed + 1 known failure + 11 tests failed + 1 skipped + 1 todo---tty-stream-chunk-separator +---tty-stream-chunk-separator +* traces-in-t-throws › throws + + 2 passed + 1 known failure + 12 tests failed + 1 skipped + 1 todo---tty-stream-chunk-separator +---tty-stream-chunk-separator +* traces-in-t-throws › notThrows + + 2 passed + 1 known failure + 13 tests failed + 1 skipped + 1 todo---tty-stream-chunk-separator +---tty-stream-chunk-separator +* traces-in-t-throws › notThrowsAsync + + 2 passed + 1 known failure + 14 tests failed + 1 skipped + 1 todo---tty-stream-chunk-separator +---tty-stream-chunk-separator +* traces-in-t-throws › throwsAsync + + 2 passed + 1 known failure + 15 tests failed + 1 skipped + 1 todo---tty-stream-chunk-separator +---tty-stream-chunk-separator +* traces-in-t-throws › throwsAsync different error + + 2 passed + 1 known failure + 16 tests failed + 1 skipped + 1 todo---tty-stream-chunk-separator +---tty-stream-chunk-separator +* uncaught-exception › passes + + 3 passed + 1 known failure + 16 tests failed + 1 skipped + 1 todo---tty-stream-chunk-separator +---tty-stream-chunk-separator +* unhandled-rejection › passes + + 4 passed + 1 known failure + 16 tests failed + 1 skipped + 1 todo---tty-stream-chunk-separator +---tty-stream-chunk-separator +* unhandled-rejection › unhandled non-error rejection + + 5 passed + 1 known failure + 16 tests failed + 1 skipped + 1 todo---tty-stream-chunk-separator +---tty-stream-chunk-separator +[?25h ✖ No tests found in bad-test-chain.js + + ─ + + nested-objects › format with max depth 4 + + nested-objects.js:28 + + 27: }; +  28: t.deepEqual(exp, act); + 29: }); + + Difference: + + { + a: { + b: { + foo: 'bar', + }, + }, + + c: { + + d: { + + e: { + + foo: 'bar', + + }, + + }, + + }, + } + + › test-tap/fixture/report/regular/nested-objects.js:28:4 + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + + + nested-objects › format like with max depth 4 + + nested-objects.js:54 + + 53: }; +  54: t.like(actual, pattern); + 55: }); + + Difference: + + { + a: { + b: { + - foo: 'bar', + + foo: 'qux', + }, + }, + } + + › test-tap/fixture/report/regular/nested-objects.js:54:4 + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + + + output-in-hook › failing test + + output-in-hook.js:34 + + 33: test('failing test', t => { +  34: t.fail();  + 35: }); + + Test failed via `t.fail()` + + › test-tap/fixture/report/regular/output-in-hook.js:34:4 + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + + + test › fails + + test.js:9 + + 8: +  9: test('fails', t => t.fail()); + 10: + + Test failed via `t.fail()` + + › test-tap/fixture/report/regular/test.js:9:22 + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + + + test › no longer failing + + Error: Test was expected to fail, but succeeded, you should stop marking the test as failing + + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + + + test › logs + + ℹ hello + ℹ world + + test.js:18 + + 17: t.log('world'); +  18: t.fail();  + 19: }); + + Test failed via `t.fail()` + + › test-tap/fixture/report/regular/test.js:18:4 + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + + + test › formatted + + test.js:22 + + 21: test('formatted', t => { +  22: t.deepEqual('foo', 'bar'); + 23: }); + + Difference: + + - 'foo' + + 'bar' + + › test-tap/fixture/report/regular/test.js:22:4 + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + + + test › power-assert + + test.js:27 + + 26: const foo = ''; +  27: t.assert(foo);  + 28: }); + + Value is not truthy: + + '' + + foo + => '' + + › test-tap/fixture/report/regular/test.js:27:4 + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + + + test › bad throws + + test.js:35 + + 34: +  35: t.throws(fn()); + 36: }); + + Improper usage of `t.throws()` detected + + The following error was thrown, possibly before `t.throws()` could be called: + + Error { + message: 'err', + } + + Try wrapping the first argument to `t.throws()` in a function: + + t.throws(() => { /* your code here */ }) + + Visit the following URL for more details: + + https://github.com/avajs/ava/blob/v1.0.0-beta.5.1/docs/03-assertions.md#throwsfn-expected-message + + › fn (test-tap/fixture/report/regular/test.js:32:9) + › test-tap/fixture/report/regular/test.js:35:11 + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + + + test › bad notThrows + + test.js:43 + + 42: +  43: t.notThrows(fn()); + 44: }); + + Improper usage of `t.notThrows()` detected + + The following error was thrown, possibly before `t.notThrows()` could be called: + + Error { + message: 'err', + } + + Try wrapping the first argument to `t.notThrows()` in a function: + + t.notThrows(() => { /* your code here */ }) + + Visit the following URL for more details: + + https://github.com/avajs/ava/blob/v1.0.0-beta.5.1/docs/03-assertions.md#throwsfn-expected-message + + › fn (test-tap/fixture/report/regular/test.js:40:9) + › test-tap/fixture/report/regular/test.js:43:14 + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + + + test › implementation throws non-error + + Error thrown in test: + + null + + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + + + traces-in-t-throws › throws + + traces-in-t-throws.js:12 + + 11: test('throws', t => { +  12: t.throws(() => throwError(), {instanceOf: TypeError}); + 13: }); + + Function threw unexpected exception: + + Error { + message: 'uh-oh', + } + + Expected instance of: + + Function TypeError {} + + › throwError (test-tap/fixture/report/regular/traces-in-t-throws.js:4:8) + › test-tap/fixture/report/regular/traces-in-t-throws.js:12:17 + › test-tap/fixture/report/regular/traces-in-t-throws.js:12:4 + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + + + traces-in-t-throws › notThrows + + traces-in-t-throws.js:16 + + 15: test('notThrows', t => { +  16: t.notThrows(() => throwError()); + 17: }); + + Function threw: + + Error { + message: 'uh-oh', + } + + › throwError (test-tap/fixture/report/regular/traces-in-t-throws.js:4:8) + › test-tap/fixture/report/regular/traces-in-t-throws.js:16:20 + › test-tap/fixture/report/regular/traces-in-t-throws.js:16:4 + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + + + traces-in-t-throws › notThrowsAsync + + traces-in-t-throws.js:20 + + 19: test('notThrowsAsync', t => { +  20: t.notThrowsAsync(() => throwError()); + 21: }); + + Function threw: + + Error { + message: 'uh-oh', + } + + › throwError (test-tap/fixture/report/regular/traces-in-t-throws.js:4:8) + › test-tap/fixture/report/regular/traces-in-t-throws.js:20:25 + › test-tap/fixture/report/regular/traces-in-t-throws.js:20:4 + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + + + traces-in-t-throws › throwsAsync + + traces-in-t-throws.js:24 + + 23: test('throwsAsync', t => { +  24: t.throwsAsync(() => throwError(), {instanceOf: TypeError}); + 25: }); + + Function threw synchronously. Use `t.throws()` instead: + + Error { + message: 'uh-oh', + } + + › throwError (test-tap/fixture/report/regular/traces-in-t-throws.js:4:8) + › t.throwsAsync.instanceOf (test-tap/fixture/report/regular/traces-in-t-throws.js:24:22) + › test-tap/fixture/report/regular/traces-in-t-throws.js:24:4 + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + + + traces-in-t-throws › throwsAsync different error + + traces-in-t-throws.js:28 + + 27: test('throwsAsync different error', t => { +  28: return t.throwsAsync(returnRejectedPromise, {instanceOf: TypeError}); + 29: }); + + Returned promise rejected with unexpected exception: + + Error { + message: 'uh-oh', + } + + Expected instance of: + + Function TypeError {} + + › returnRejectedPromise (test-tap/fixture/report/regular/traces-in-t-throws.js:8:24) + › test-tap/fixture/report/regular/traces-in-t-throws.js:28:11 + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + + + Uncaught exception in bad-test-chain.js + + bad-test-chain.js:3 + + 2: +  3: test.serial.test('passes', t => t.pass()); + 4: + + TypeError: test.serial.test is not a function + + › Object. (test-tap/fixture/report/regular/bad-test-chain.js:3:13) + › Module._compile (node:internal/modules/cjs/loader:1083:30) + › Module.load (node:internal/modules/cjs/loader:948:32) + › Function.Module._load (node:internal/modules/cjs/loader:789:14) + › Module.require (node:internal/modules/cjs/loader:972:19) + › require (node:internal/modules/cjs/helpers:88:18) + + + + Uncaught exception in uncaught-exception.js + + uncaught-exception.js:5 + + 4: setImmediate(() => { +  5: throw new Error('Can’t catch me'); + 6: }); + + Error: Can’t catch me + + › Immediate. (test-tap/fixture/report/regular/uncaught-exception.js:5:9) + › processImmediate (node:internal/timers:462:21) + + + + Unhandled rejection in unhandled-rejection.js + + unhandled-rejection.js:4 + + 3: const passes = t => { +  4: Promise.reject(new Error('Can’t catch me')); + 5: t.pass(); + + Error: Can’t catch me + + › passes (test-tap/fixture/report/regular/unhandled-rejection.js:4:17) + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + + + Unhandled rejection in unhandled-rejection.js + + null + + ─ + + 16 tests failed + 1 known failure + 1 test skipped + 1 test todo + 2 unhandled rejections + 2 uncaught exceptions +---tty-stream-chunk-separator diff --git a/test-tap/reporters/mini.watch.v15.log b/test-tap/reporters/mini.watch.v15.log new file mode 100644 index 000000000..9879da19c --- /dev/null +++ b/test-tap/reporters/mini.watch.v15.log @@ -0,0 +1,45 @@ +[?25l---tty-stream-chunk-separator + +---tty-stream-chunk-separator +* ---tty-stream-chunk-separator +---tty-stream-chunk-separator +* test › passes + + 1 passed [17:19:12]---tty-stream-chunk-separator +---tty-stream-chunk-separator +[?25h 1 test passed [17:19:12] + +---tty-stream-chunk-separator +──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── +---tty-stream-chunk-separator +[?25l---tty-stream-chunk-separator + +---tty-stream-chunk-separator +* test › passes + + 1 passed [17:19:12]---tty-stream-chunk-separator +---tty-stream-chunk-separator +* test › passes + + 1 passed [17:19:12]---tty-stream-chunk-separator +---tty-stream-chunk-separator +[?25h 1 test passed [17:19:12] + 2 previous failures in test files that were not rerun + +---tty-stream-chunk-separator +──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── +---tty-stream-chunk-separator +[?25l---tty-stream-chunk-separator + +---tty-stream-chunk-separator +* test › passes + + 1 passed [17:19:12]---tty-stream-chunk-separator +---tty-stream-chunk-separator +* test › passes + + 1 passed [17:19:12]---tty-stream-chunk-separator +---tty-stream-chunk-separator +[?25h 1 test passed [17:19:12] + +---tty-stream-chunk-separator diff --git a/test-tap/reporters/tap.edgecases.v15.log b/test-tap/reporters/tap.edgecases.v15.log new file mode 100644 index 000000000..dd59a4684 --- /dev/null +++ b/test-tap/reporters/tap.edgecases.v15.log @@ -0,0 +1,55 @@ +TAP version 13 +---tty-stream-chunk-separator +# No tests found in ava-import-no-test-declaration.js +not ok 1 - No tests found in ava-import-no-test-declaration.js +---tty-stream-chunk-separator +# TypeError: test is not a function +not ok 2 - TypeError: test is not a function + --- + name: TypeError + message: test is not a function + at: >- + Object. + (test-tap/fixture/report/edgecases/import-and-use-test-member.js:3:1) + + Module._compile (node:internal/modules/cjs/loader:1083:30) + + Module.load (node:internal/modules/cjs/loader:948:32) + + Function.Module._load (node:internal/modules/cjs/loader:789:14) + + Module.require (node:internal/modules/cjs/loader:972:19) + + require (node:internal/modules/cjs/helpers:88:18) + ... +---tty-stream-chunk-separator +# import-and-use-test-member.js exited with a non-zero exit code: 1 +not ok 3 - import-and-use-test-member.js exited with a non-zero exit code: 1 +---tty-stream-chunk-separator +# No tests found in no-ava-import.js, make sure to import "ava" at the top of your test file +not ok 4 - No tests found in no-ava-import.js, make sure to import "ava" at the top of your test file +---tty-stream-chunk-separator +# Error: throws +not ok 5 - Error: throws + --- + name: Error + message: throws + at: |- + Object. (test-tap/fixture/report/edgecases/throws.js:1:7) + Module._compile (node:internal/modules/cjs/loader:1083:30) + Module.load (node:internal/modules/cjs/loader:948:32) + Function.Module._load (node:internal/modules/cjs/loader:789:14) + Module.require (node:internal/modules/cjs/loader:972:19) + require (node:internal/modules/cjs/helpers:88:18) + ... +---tty-stream-chunk-separator +# throws.js exited with a non-zero exit code: 1 +not ok 6 - throws.js exited with a non-zero exit code: 1 +---tty-stream-chunk-separator + +1..0 +# tests 0 +# pass 0 +# fail 6 + +---tty-stream-chunk-separator diff --git a/test-tap/reporters/tap.failfast.v15.log b/test-tap/reporters/tap.failfast.v15.log new file mode 100644 index 000000000..40838e261 --- /dev/null +++ b/test-tap/reporters/tap.failfast.v15.log @@ -0,0 +1,20 @@ +TAP version 13 +---tty-stream-chunk-separator +# a › fails +not ok 1 - a › fails + --- + name: AssertionError + message: Test failed via `t.fail()` + assertion: fail + at: |- + test-tap/fixture/report/failfast/a.js:3:22 + processTicksAndRejections (node:internal/process/task_queues:93:5) + ... +---tty-stream-chunk-separator + +1..1 +# tests 1 +# pass 0 +# fail 1 + +---tty-stream-chunk-separator diff --git a/test-tap/reporters/tap.failfast2.v15.log b/test-tap/reporters/tap.failfast2.v15.log new file mode 100644 index 000000000..0c29e6fb9 --- /dev/null +++ b/test-tap/reporters/tap.failfast2.v15.log @@ -0,0 +1,22 @@ +TAP version 13 +---tty-stream-chunk-separator +# a › fails +not ok 1 - a › fails + --- + name: AssertionError + message: Test failed via `t.fail()` + assertion: fail + at: |- + test-tap/fixture/report/failfast2/a.js:3:22 + processTicksAndRejections (node:internal/process/task_queues:93:5) + ... +---tty-stream-chunk-separator +# 1 test remaining in a.js +---tty-stream-chunk-separator + +1..2 +# tests 2 +# pass 0 +# fail 2 + +---tty-stream-chunk-separator diff --git a/test-tap/reporters/tap.only.v15.log b/test-tap/reporters/tap.only.v15.log new file mode 100644 index 000000000..4df4b8c60 --- /dev/null +++ b/test-tap/reporters/tap.only.v15.log @@ -0,0 +1,15 @@ +TAP version 13 +---tty-stream-chunk-separator +# a › only +ok 1 - a › only +---tty-stream-chunk-separator +# b › passes +ok 2 - b › passes +---tty-stream-chunk-separator + +1..2 +# tests 2 +# pass 2 +# fail 0 + +---tty-stream-chunk-separator diff --git a/test-tap/reporters/tap.regular.v15.log b/test-tap/reporters/tap.regular.v15.log new file mode 100644 index 000000000..8debcc8b8 --- /dev/null +++ b/test-tap/reporters/tap.regular.v15.log @@ -0,0 +1,368 @@ +TAP version 13 +---tty-stream-chunk-separator +# TypeError: test.serial.test is not a function +not ok 1 - TypeError: test.serial.test is not a function + --- + name: TypeError + message: test.serial.test is not a function + at: |- + Object. (test-tap/fixture/report/regular/bad-test-chain.js:3:13) + Module._compile (node:internal/modules/cjs/loader:1083:30) + Module.load (node:internal/modules/cjs/loader:948:32) + Function.Module._load (node:internal/modules/cjs/loader:789:14) + Module.require (node:internal/modules/cjs/loader:972:19) + require (node:internal/modules/cjs/helpers:88:18) + ... +---tty-stream-chunk-separator +# bad-test-chain.js exited with a non-zero exit code: 1 +not ok 2 - bad-test-chain.js exited with a non-zero exit code: 1 +---tty-stream-chunk-separator +# nested-objects › format with max depth 4 +not ok 3 - nested-objects › format with max depth 4 + --- + name: AssertionError + assertion: deepEqual + values: + 'Difference:': |2- + { + a: { + b: { + foo: 'bar', + }, + }, + + c: { + + d: { + + e: { + + foo: 'bar', + + }, + + }, + + }, + } + at: |- + test-tap/fixture/report/regular/nested-objects.js:28:4 + processTicksAndRejections (node:internal/process/task_queues:93:5) + ... +---tty-stream-chunk-separator +# nested-objects › format like with max depth 4 +not ok 4 - nested-objects › format like with max depth 4 + --- + name: AssertionError + assertion: like + values: + 'Difference:': |2- + { + a: { + b: { + - foo: 'bar', + + foo: 'qux', + }, + }, + } + at: |- + test-tap/fixture/report/regular/nested-objects.js:54:4 + processTicksAndRejections (node:internal/process/task_queues:93:5) + ... +---tty-stream-chunk-separator +# output-in-hook › before hook +---tty-stream-chunk-separator +# output-in-hook › before hook +---tty-stream-chunk-separator + # before +---tty-stream-chunk-separator +# output-in-hook › beforeEach hook for passing test +---tty-stream-chunk-separator + # beforeEach +---tty-stream-chunk-separator +# output-in-hook › beforeEach hook for failing test +---tty-stream-chunk-separator + # beforeEach +---tty-stream-chunk-separator +# output-in-hook › passing test +ok 5 - output-in-hook › passing test +---tty-stream-chunk-separator +# output-in-hook › failing test +not ok 6 - output-in-hook › failing test + --- + name: AssertionError + message: Test failed via `t.fail()` + assertion: fail + at: |- + test-tap/fixture/report/regular/output-in-hook.js:34:4 + processTicksAndRejections (node:internal/process/task_queues:93:5) + ... +---tty-stream-chunk-separator +# output-in-hook › afterEach hook for passing test +---tty-stream-chunk-separator + # afterEach +---tty-stream-chunk-separator +# output-in-hook › afterEach.always hook for failing test +---tty-stream-chunk-separator + # afterEachAlways +---tty-stream-chunk-separator +# output-in-hook › afterEach.always hook for passing test +---tty-stream-chunk-separator + # afterEachAlways +---tty-stream-chunk-separator +# output-in-hook › cleanup +---tty-stream-chunk-separator + # afterAlways +---tty-stream-chunk-separator +# test › skip +ok 7 - test › skip # SKIP +---tty-stream-chunk-separator +# test › todo +not ok 8 - test › todo # TODO +---tty-stream-chunk-separator +# test › passes +ok 9 - test › passes +---tty-stream-chunk-separator +# test › fails +not ok 10 - test › fails + --- + name: AssertionError + message: Test failed via `t.fail()` + assertion: fail + at: |- + test-tap/fixture/report/regular/test.js:9:22 + processTicksAndRejections (node:internal/process/task_queues:93:5) + ... +---tty-stream-chunk-separator +# test › known failure +ok 11 - test › known failure +---tty-stream-chunk-separator +# test › no longer failing +not ok 12 - test › no longer failing + --- + name: Error + message: >- + Test was expected to fail, but succeeded, you should stop marking the test as + failing + at: 'processTicksAndRejections (node:internal/process/task_queues:93:5)' + ... +---tty-stream-chunk-separator +# test › logs +not ok 13 - test › logs + * hello + * world + --- + name: AssertionError + message: Test failed via `t.fail()` + assertion: fail + at: |- + test-tap/fixture/report/regular/test.js:18:4 + processTicksAndRejections (node:internal/process/task_queues:93:5) + ... +---tty-stream-chunk-separator +# test › formatted +not ok 14 - test › formatted + --- + name: AssertionError + assertion: deepEqual + values: + 'Difference:': |- + - 'foo' + + 'bar' + at: |- + test-tap/fixture/report/regular/test.js:22:4 + processTicksAndRejections (node:internal/process/task_queues:93:5) + ... +---tty-stream-chunk-separator +# test › power-assert +not ok 15 - test › power-assert + --- + name: AssertionError + assertion: assert + operator: '!!' + values: + 'Value is not truthy:': '''''' + at: |- + test-tap/fixture/report/regular/test.js:27:4 + processTicksAndRejections (node:internal/process/task_queues:93:5) + ... +---tty-stream-chunk-separator +# test › bad throws +not ok 16 - test › bad throws + --- + name: AssertionError + message: Improper usage of `t.throws()` detected + assertion: throws + values: + 'The following error was thrown, possibly before `t.throws()` could be called:': |- + Error { + message: 'err', + } + at: |- + fn (test-tap/fixture/report/regular/test.js:32:9) + test-tap/fixture/report/regular/test.js:35:11 + processTicksAndRejections (node:internal/process/task_queues:93:5) + ... +---tty-stream-chunk-separator +# test › bad notThrows +not ok 17 - test › bad notThrows + --- + name: AssertionError + message: Improper usage of `t.notThrows()` detected + assertion: notThrows + values: + 'The following error was thrown, possibly before `t.notThrows()` could be called:': |- + Error { + message: 'err', + } + at: |- + fn (test-tap/fixture/report/regular/test.js:40:9) + test-tap/fixture/report/regular/test.js:43:14 + processTicksAndRejections (node:internal/process/task_queues:93:5) + ... +---tty-stream-chunk-separator +# test › implementation throws non-error +not ok 18 - test › implementation throws non-error + --- + name: AssertionError + message: Error thrown in test + values: + 'Error thrown in test:': 'null' + at: 'processTicksAndRejections (node:internal/process/task_queues:93:5)' + ... +---tty-stream-chunk-separator +# traces-in-t-throws › throws +not ok 19 - traces-in-t-throws › throws + --- + name: AssertionError + assertion: throws + values: + 'Function threw unexpected exception:': |- + Error { + message: 'uh-oh', + } + 'Expected instance of:': 'Function TypeError {}' + at: |- + throwError (test-tap/fixture/report/regular/traces-in-t-throws.js:4:8) + test-tap/fixture/report/regular/traces-in-t-throws.js:12:17 + test-tap/fixture/report/regular/traces-in-t-throws.js:12:4 + processTicksAndRejections (node:internal/process/task_queues:93:5) + ... +---tty-stream-chunk-separator +# traces-in-t-throws › notThrows +not ok 20 - traces-in-t-throws › notThrows + --- + name: AssertionError + assertion: notThrows + values: + 'Function threw:': |- + Error { + message: 'uh-oh', + } + at: |- + throwError (test-tap/fixture/report/regular/traces-in-t-throws.js:4:8) + test-tap/fixture/report/regular/traces-in-t-throws.js:16:20 + test-tap/fixture/report/regular/traces-in-t-throws.js:16:4 + processTicksAndRejections (node:internal/process/task_queues:93:5) + ... +---tty-stream-chunk-separator +# traces-in-t-throws › notThrowsAsync +not ok 21 - traces-in-t-throws › notThrowsAsync + --- + name: AssertionError + assertion: notThrowsAsync + values: + 'Function threw:': |- + Error { + message: 'uh-oh', + } + at: |- + throwError (test-tap/fixture/report/regular/traces-in-t-throws.js:4:8) + test-tap/fixture/report/regular/traces-in-t-throws.js:20:25 + test-tap/fixture/report/regular/traces-in-t-throws.js:20:4 + processTicksAndRejections (node:internal/process/task_queues:93:5) + ... +---tty-stream-chunk-separator +# traces-in-t-throws › throwsAsync +not ok 22 - traces-in-t-throws › throwsAsync + --- + name: AssertionError + assertion: throwsAsync + values: + 'Function threw synchronously. Use `t.throws()` instead:': |- + Error { + message: 'uh-oh', + } + at: >- + throwError (test-tap/fixture/report/regular/traces-in-t-throws.js:4:8) + + t.throwsAsync.instanceOf + (test-tap/fixture/report/regular/traces-in-t-throws.js:24:22) + + test-tap/fixture/report/regular/traces-in-t-throws.js:24:4 + + processTicksAndRejections (node:internal/process/task_queues:93:5) + ... +---tty-stream-chunk-separator +# traces-in-t-throws › throwsAsync different error +not ok 23 - traces-in-t-throws › throwsAsync different error + --- + name: AssertionError + assertion: throwsAsync + values: + 'Returned promise rejected with unexpected exception:': |- + Error { + message: 'uh-oh', + } + 'Expected instance of:': 'Function TypeError {}' + at: >- + returnRejectedPromise + (test-tap/fixture/report/regular/traces-in-t-throws.js:8:24) + + test-tap/fixture/report/regular/traces-in-t-throws.js:28:11 + + processTicksAndRejections (node:internal/process/task_queues:93:5) + ... +---tty-stream-chunk-separator +# uncaught-exception › passes +ok 24 - uncaught-exception › passes +---tty-stream-chunk-separator +# Error: Can’t catch me +not ok 25 - Error: Can’t catch me + --- + name: Error + message: Can’t catch me + at: >- + Immediate. + (test-tap/fixture/report/regular/uncaught-exception.js:5:9) + + processImmediate (node:internal/timers:462:21) + ... +---tty-stream-chunk-separator +# uncaught-exception.js exited with a non-zero exit code: 1 +not ok 26 - uncaught-exception.js exited with a non-zero exit code: 1 +---tty-stream-chunk-separator +# unhandled-rejection › passes +ok 27 - unhandled-rejection › passes +---tty-stream-chunk-separator +# unhandled-rejection › unhandled non-error rejection +ok 28 - unhandled-rejection › unhandled non-error rejection +---tty-stream-chunk-separator +# Error: Can’t catch me +not ok 29 - Error: Can’t catch me + --- + name: Error + message: Can’t catch me + at: |- + passes (test-tap/fixture/report/regular/unhandled-rejection.js:4:17) + processTicksAndRejections (node:internal/process/task_queues:93:5) + ... +---tty-stream-chunk-separator +# unhandled-rejection +not ok 30 - unhandled-rejection + --- + message: Non-error object + formatted: 'null' + ... +---tty-stream-chunk-separator + +1..24 +# tests 23 +# pass 6 +# skip 1 +# fail 23 + +---tty-stream-chunk-separator diff --git a/test-tap/reporters/verbose.edgecases.v15.log b/test-tap/reporters/verbose.edgecases.v15.log new file mode 100644 index 000000000..a06541e2a --- /dev/null +++ b/test-tap/reporters/verbose.edgecases.v15.log @@ -0,0 +1,57 @@ + +---tty-stream-chunk-separator + ⚠ Could not parse ast-syntax-error.js for line number selection +---tty-stream-chunk-separator + ✖ Line numbers for ast-syntax-error.js did not match any tests +---tty-stream-chunk-separator + ✖ No tests found in ava-import-no-test-declaration.js +---tty-stream-chunk-separator + + Uncaught exception in import-and-use-test-member.js + + import-and-use-test-member.js:3 + + 2: +  3: test('pass', t => t.pass()); + 4: + + TypeError: test is not a function + + › Object. (test-tap/fixture/report/edgecases/import-and-use-test-member.js:3:1) + › Module._compile (node:internal/modules/cjs/loader:1083:30) + › Module.load (node:internal/modules/cjs/loader:948:32) + › Function.Module._load (node:internal/modules/cjs/loader:789:14) + › Module.require (node:internal/modules/cjs/loader:972:19) + › require (node:internal/modules/cjs/helpers:88:18) + +---tty-stream-chunk-separator + ✖ import-and-use-test-member.js exited with a non-zero exit code: 1 +---tty-stream-chunk-separator + ✖ No tests found in no-ava-import.js, make sure to import "ava" at the top of your test file +---tty-stream-chunk-separator + ✖ Line numbers for test.js did not match any tests +---tty-stream-chunk-separator + + Uncaught exception in throws.js + + throws.js:1 + +  1: throw new Error('throws'); + 2: + + Error: throws + + › Object. (test-tap/fixture/report/edgecases/throws.js:1:7) + › Module._compile (node:internal/modules/cjs/loader:1083:30) + › Module.load (node:internal/modules/cjs/loader:948:32) + › Function.Module._load (node:internal/modules/cjs/loader:789:14) + › Module.require (node:internal/modules/cjs/loader:972:19) + › require (node:internal/modules/cjs/helpers:88:18) + +---tty-stream-chunk-separator + ✖ throws.js exited with a non-zero exit code: 1 +---tty-stream-chunk-separator + ─ + + 2 uncaught exceptions +---tty-stream-chunk-separator diff --git a/test-tap/reporters/verbose.failfast.v15.log b/test-tap/reporters/verbose.failfast.v15.log new file mode 100644 index 000000000..086c6f180 --- /dev/null +++ b/test-tap/reporters/verbose.failfast.v15.log @@ -0,0 +1,25 @@ + +---tty-stream-chunk-separator + ✖ a › fails Test failed via `t.fail()` +---tty-stream-chunk-separator + ─ + + a › fails + + a.js:3 + + 2: +  3: test('fails', t => t.fail()); + 4: + + Test failed via `t.fail()` + + › test-tap/fixture/report/failfast/a.js:3:22 + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + ─ + + `--fail-fast` is on. 1 test file was skipped. + + 1 test failed +---tty-stream-chunk-separator diff --git a/test-tap/reporters/verbose.failfast2.v15.log b/test-tap/reporters/verbose.failfast2.v15.log new file mode 100644 index 000000000..b288fbda0 --- /dev/null +++ b/test-tap/reporters/verbose.failfast2.v15.log @@ -0,0 +1,25 @@ + +---tty-stream-chunk-separator + ✖ a › fails Test failed via `t.fail()` +---tty-stream-chunk-separator + ─ + + a › fails + + a.js:3 + + 2: +  3: test('fails', t => t.fail());  + 4: test('passes', t => t.pass()); + + Test failed via `t.fail()` + + › test-tap/fixture/report/failfast2/a.js:3:22 + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + ─ + + `--fail-fast` is on. At least 1 test was skipped, as well as 1 test file. + + 1 test failed +---tty-stream-chunk-separator diff --git a/test-tap/reporters/verbose.only.v15.log b/test-tap/reporters/verbose.only.v15.log new file mode 100644 index 000000000..f01706e56 --- /dev/null +++ b/test-tap/reporters/verbose.only.v15.log @@ -0,0 +1,10 @@ + +---tty-stream-chunk-separator + ✔ a › only +---tty-stream-chunk-separator + ✔ b › passes +---tty-stream-chunk-separator + ─ + + 2 tests passed +---tty-stream-chunk-separator diff --git a/test-tap/reporters/verbose.regular.v15.log b/test-tap/reporters/verbose.regular.v15.log new file mode 100644 index 000000000..25a299067 --- /dev/null +++ b/test-tap/reporters/verbose.regular.v15.log @@ -0,0 +1,469 @@ + +---tty-stream-chunk-separator + Uncaught exception in bad-test-chain.js + + bad-test-chain.js:3 + + 2: +  3: test.serial.test('passes', t => t.pass()); + 4: + + TypeError: test.serial.test is not a function + + › Object. (test-tap/fixture/report/regular/bad-test-chain.js:3:13) + › Module._compile (node:internal/modules/cjs/loader:1083:30) + › Module.load (node:internal/modules/cjs/loader:948:32) + › Function.Module._load (node:internal/modules/cjs/loader:789:14) + › Module.require (node:internal/modules/cjs/loader:972:19) + › require (node:internal/modules/cjs/helpers:88:18) + +---tty-stream-chunk-separator + ✖ bad-test-chain.js exited with a non-zero exit code: 1 +---tty-stream-chunk-separator + ✖ nested-objects › format with max depth 4 +---tty-stream-chunk-separator + ✖ nested-objects › format like with max depth 4 +---tty-stream-chunk-separator + output-in-hook › before hook + ℹ before +---tty-stream-chunk-separator + output-in-hook › beforeEach hook for passing test + ℹ beforeEach +---tty-stream-chunk-separator + output-in-hook › beforeEach hook for failing test + ℹ beforeEach +---tty-stream-chunk-separator + ✔ output-in-hook › passing test +---tty-stream-chunk-separator + ✖ output-in-hook › failing test Test failed via `t.fail()` +---tty-stream-chunk-separator + output-in-hook › afterEach hook for passing test + ℹ afterEach +---tty-stream-chunk-separator + output-in-hook › afterEach.always hook for failing test + ℹ afterEachAlways +---tty-stream-chunk-separator + output-in-hook › afterEach.always hook for passing test + ℹ afterEachAlways +---tty-stream-chunk-separator + output-in-hook › cleanup + ℹ afterAlways +---tty-stream-chunk-separator + - test › skip +---tty-stream-chunk-separator + - test › todo +---tty-stream-chunk-separator + ✔ test › passes +---tty-stream-chunk-separator + ✖ test › fails Test failed via `t.fail()` +---tty-stream-chunk-separator + ✔ test › known failure +---tty-stream-chunk-separator + ✖ test › no longer failing Test was expected to fail, but succeeded, you should stop marking the test as failing +---tty-stream-chunk-separator + ✖ test › logs Test failed via `t.fail()` + ℹ hello + ℹ world +---tty-stream-chunk-separator + ✖ test › formatted +---tty-stream-chunk-separator + ✖ test › power-assert +---tty-stream-chunk-separator + ✖ test › bad throws Improper usage of `t.throws()` detected +---tty-stream-chunk-separator + ✖ test › bad notThrows Improper usage of `t.notThrows()` detected +---tty-stream-chunk-separator + ✖ test › implementation throws non-error Error thrown in test +---tty-stream-chunk-separator + ✖ traces-in-t-throws › throws +---tty-stream-chunk-separator + ✖ traces-in-t-throws › notThrows +---tty-stream-chunk-separator + ✖ traces-in-t-throws › notThrowsAsync +---tty-stream-chunk-separator + ✖ traces-in-t-throws › throwsAsync +---tty-stream-chunk-separator + ✖ traces-in-t-throws › throwsAsync different error +---tty-stream-chunk-separator + ✔ uncaught-exception › passes +---tty-stream-chunk-separator + + Uncaught exception in uncaught-exception.js + + uncaught-exception.js:5 + + 4: setImmediate(() => { +  5: throw new Error('Can’t catch me'); + 6: }); + + Error: Can’t catch me + + › Immediate. (test-tap/fixture/report/regular/uncaught-exception.js:5:9) + › processImmediate (node:internal/timers:462:21) + +---tty-stream-chunk-separator + ✖ uncaught-exception.js exited with a non-zero exit code: 1 +---tty-stream-chunk-separator + ✔ unhandled-rejection › passes +---tty-stream-chunk-separator + ✔ unhandled-rejection › unhandled non-error rejection +---tty-stream-chunk-separator + + Unhandled rejection in unhandled-rejection.js + + unhandled-rejection.js:4 + + 3: const passes = t => { +  4: Promise.reject(new Error('Can’t catch me')); + 5: t.pass(); + + Error: Can’t catch me + + › passes (test-tap/fixture/report/regular/unhandled-rejection.js:4:17) + › processTicksAndRejections (node:internal/process/task_queues:93:5) + +---tty-stream-chunk-separator + Unhandled rejection in unhandled-rejection.js + + null + +---tty-stream-chunk-separator + ─ + + nested-objects › format with max depth 4 + + nested-objects.js:28 + + 27: }; +  28: t.deepEqual(exp, act); + 29: }); + + Difference: + + { + a: { + b: { + foo: 'bar', + }, + }, + + c: { + + d: { + + e: { + + foo: 'bar', + + }, + + }, + + }, + } + + › test-tap/fixture/report/regular/nested-objects.js:28:4 + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + + + nested-objects › format like with max depth 4 + + nested-objects.js:54 + + 53: }; +  54: t.like(actual, pattern); + 55: }); + + Difference: + + { + a: { + b: { + - foo: 'bar', + + foo: 'qux', + }, + }, + } + + › test-tap/fixture/report/regular/nested-objects.js:54:4 + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + + + output-in-hook › failing test + + output-in-hook.js:34 + + 33: test('failing test', t => { +  34: t.fail();  + 35: }); + + Test failed via `t.fail()` + + › test-tap/fixture/report/regular/output-in-hook.js:34:4 + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + + + test › fails + + test.js:9 + + 8: +  9: test('fails', t => t.fail()); + 10: + + Test failed via `t.fail()` + + › test-tap/fixture/report/regular/test.js:9:22 + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + + + test › no longer failing + + Error: Test was expected to fail, but succeeded, you should stop marking the test as failing + + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + + + test › logs + + ℹ hello + ℹ world + + test.js:18 + + 17: t.log('world'); +  18: t.fail();  + 19: }); + + Test failed via `t.fail()` + + › test-tap/fixture/report/regular/test.js:18:4 + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + + + test › formatted + + test.js:22 + + 21: test('formatted', t => { +  22: t.deepEqual('foo', 'bar'); + 23: }); + + Difference: + + - 'foo' + + 'bar' + + › test-tap/fixture/report/regular/test.js:22:4 + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + + + test › power-assert + + test.js:27 + + 26: const foo = ''; +  27: t.assert(foo);  + 28: }); + + Value is not truthy: + + '' + + foo + => '' + + › test-tap/fixture/report/regular/test.js:27:4 + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + + + test › bad throws + + test.js:35 + + 34: +  35: t.throws(fn()); + 36: }); + + Improper usage of `t.throws()` detected + + The following error was thrown, possibly before `t.throws()` could be called: + + Error { + message: 'err', + } + + Try wrapping the first argument to `t.throws()` in a function: + + t.throws(() => { /* your code here */ }) + + Visit the following URL for more details: + + https://github.com/avajs/ava/blob/v1.0.0-beta.5.1/docs/03-assertions.md#throwsfn-expected-message + + › fn (test-tap/fixture/report/regular/test.js:32:9) + › test-tap/fixture/report/regular/test.js:35:11 + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + + + test › bad notThrows + + test.js:43 + + 42: +  43: t.notThrows(fn()); + 44: }); + + Improper usage of `t.notThrows()` detected + + The following error was thrown, possibly before `t.notThrows()` could be called: + + Error { + message: 'err', + } + + Try wrapping the first argument to `t.notThrows()` in a function: + + t.notThrows(() => { /* your code here */ }) + + Visit the following URL for more details: + + https://github.com/avajs/ava/blob/v1.0.0-beta.5.1/docs/03-assertions.md#throwsfn-expected-message + + › fn (test-tap/fixture/report/regular/test.js:40:9) + › test-tap/fixture/report/regular/test.js:43:14 + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + + + test › implementation throws non-error + + Error thrown in test: + + null + + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + + + traces-in-t-throws › throws + + traces-in-t-throws.js:12 + + 11: test('throws', t => { +  12: t.throws(() => throwError(), {instanceOf: TypeError}); + 13: }); + + Function threw unexpected exception: + + Error { + message: 'uh-oh', + } + + Expected instance of: + + Function TypeError {} + + › throwError (test-tap/fixture/report/regular/traces-in-t-throws.js:4:8) + › test-tap/fixture/report/regular/traces-in-t-throws.js:12:17 + › test-tap/fixture/report/regular/traces-in-t-throws.js:12:4 + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + + + traces-in-t-throws › notThrows + + traces-in-t-throws.js:16 + + 15: test('notThrows', t => { +  16: t.notThrows(() => throwError()); + 17: }); + + Function threw: + + Error { + message: 'uh-oh', + } + + › throwError (test-tap/fixture/report/regular/traces-in-t-throws.js:4:8) + › test-tap/fixture/report/regular/traces-in-t-throws.js:16:20 + › test-tap/fixture/report/regular/traces-in-t-throws.js:16:4 + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + + + traces-in-t-throws › notThrowsAsync + + traces-in-t-throws.js:20 + + 19: test('notThrowsAsync', t => { +  20: t.notThrowsAsync(() => throwError()); + 21: }); + + Function threw: + + Error { + message: 'uh-oh', + } + + › throwError (test-tap/fixture/report/regular/traces-in-t-throws.js:4:8) + › test-tap/fixture/report/regular/traces-in-t-throws.js:20:25 + › test-tap/fixture/report/regular/traces-in-t-throws.js:20:4 + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + + + traces-in-t-throws › throwsAsync + + traces-in-t-throws.js:24 + + 23: test('throwsAsync', t => { +  24: t.throwsAsync(() => throwError(), {instanceOf: TypeError}); + 25: }); + + Function threw synchronously. Use `t.throws()` instead: + + Error { + message: 'uh-oh', + } + + › throwError (test-tap/fixture/report/regular/traces-in-t-throws.js:4:8) + › t.throwsAsync.instanceOf (test-tap/fixture/report/regular/traces-in-t-throws.js:24:22) + › test-tap/fixture/report/regular/traces-in-t-throws.js:24:4 + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + + + traces-in-t-throws › throwsAsync different error + + traces-in-t-throws.js:28 + + 27: test('throwsAsync different error', t => { +  28: return t.throwsAsync(returnRejectedPromise, {instanceOf: TypeError}); + 29: }); + + Returned promise rejected with unexpected exception: + + Error { + message: 'uh-oh', + } + + Expected instance of: + + Function TypeError {} + + › returnRejectedPromise (test-tap/fixture/report/regular/traces-in-t-throws.js:8:24) + › test-tap/fixture/report/regular/traces-in-t-throws.js:28:11 + › processTicksAndRejections (node:internal/process/task_queues:93:5) + + ─ + + 16 tests failed + 1 known failure + 1 test skipped + 1 test todo + 2 unhandled rejections + 2 uncaught exceptions +---tty-stream-chunk-separator diff --git a/test-tap/reporters/verbose.timeoutinmultiplefiles.v15.log b/test-tap/reporters/verbose.timeoutinmultiplefiles.v15.log new file mode 100644 index 000000000..50f1f1e5a --- /dev/null +++ b/test-tap/reporters/verbose.timeoutinmultiplefiles.v15.log @@ -0,0 +1,33 @@ + +---tty-stream-chunk-separator + ✔ a › a passes +---tty-stream-chunk-separator + ✔ a › a passes two +---tty-stream-chunk-separator +  + ✖ Timed out while running tests + + 2 tests were pending in a.js + + ◌ a › a slow + ◌ a › a slow two + +---tty-stream-chunk-separator + ✔ b › b passes +---tty-stream-chunk-separator + ✔ b › b passes two +---tty-stream-chunk-separator +  + ✖ Timed out while running tests + + 3 tests were pending in b.js + + ◌ b › b slow + ◌ b › b slow two + ◌ b › b slow three + +---tty-stream-chunk-separator + ─ + + 4 tests passed +---tty-stream-chunk-separator diff --git a/test-tap/reporters/verbose.timeoutinsinglefile.v15.log b/test-tap/reporters/verbose.timeoutinsinglefile.v15.log new file mode 100644 index 000000000..edc7e415d --- /dev/null +++ b/test-tap/reporters/verbose.timeoutinsinglefile.v15.log @@ -0,0 +1,19 @@ + +---tty-stream-chunk-separator + ✔ passes +---tty-stream-chunk-separator + ✔ passes two +---tty-stream-chunk-separator +  + ✖ Timed out while running tests + + 2 tests were pending in a.js + + ◌ slow + ◌ slow two + +---tty-stream-chunk-separator + ─ + + 2 tests passed +---tty-stream-chunk-separator diff --git a/test-tap/reporters/verbose.timeoutwithmatch.v15.log b/test-tap/reporters/verbose.timeoutwithmatch.v15.log new file mode 100644 index 000000000..b40ca5cf8 --- /dev/null +++ b/test-tap/reporters/verbose.timeoutwithmatch.v15.log @@ -0,0 +1,17 @@ + +---tty-stream-chunk-separator + ✔ passes needle +---tty-stream-chunk-separator +  + ✖ Timed out while running tests + + 2 tests were pending in a.js + + ◌ slow needle + ◌ slow three needle + +---tty-stream-chunk-separator + ─ + + 1 test passed +---tty-stream-chunk-separator diff --git a/test-tap/reporters/verbose.watch.v15.log b/test-tap/reporters/verbose.watch.v15.log new file mode 100644 index 000000000..ae2dea44b --- /dev/null +++ b/test-tap/reporters/verbose.watch.v15.log @@ -0,0 +1,32 @@ + +---tty-stream-chunk-separator + ✔ test › passes +---tty-stream-chunk-separator + ─ + + 1 test passed [17:19:12] + +---tty-stream-chunk-separator +──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── +---tty-stream-chunk-separator + +---tty-stream-chunk-separator + ✔ test › passes +---tty-stream-chunk-separator + ─ + + 1 test passed [17:19:12] + 2 previous failures in test files that were not rerun + +---tty-stream-chunk-separator +──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── +---tty-stream-chunk-separator + +---tty-stream-chunk-separator + ✔ test › passes +---tty-stream-chunk-separator + ─ + + 1 test passed [17:19:12] + +---tty-stream-chunk-separator From 09c5568d4268e6e4a382bbb3a956a52c44a5bf94 Mon Sep 17 00:00:00 2001 From: Mark Wubben Date: Sun, 1 Nov 2020 17:07:05 +0100 Subject: [PATCH 4/8] Document shared workers --- docs/recipes/shared-workers.md | 258 +++++++++++++++++++++++++++++++++ readme.md | 1 + 2 files changed, 259 insertions(+) create mode 100644 docs/recipes/shared-workers.md diff --git a/docs/recipes/shared-workers.md b/docs/recipes/shared-workers.md new file mode 100644 index 000000000..f7c7effc9 --- /dev/null +++ b/docs/recipes/shared-workers.md @@ -0,0 +1,258 @@ +# Extending AVA using shared workers + +Shared workers are a new, powerful (and experimental) AVA feature. A program can be loaded in a [worker thread](https://nodejs.org/docs/latest/api/worker_threads.html) in AVA's main process and then communicate with code running in the test workers. This enables your tests to better utilize shared resources during a test run, as well as providing opportunities to set up these resources before tests start (or clean them up after). + +When you use watch mode, shared workers remain loaded across runs. + +## Enabling the experiment + +Shared workers are available when you use AVA with Node.js 12.17.0 or newer. AVA 3.13.0 or newer is required. It is an experimental feature so you need to enable it in your AVA configuration: + +`ava.config.js`: + +```js +export default { + nonSemVerExperiments: { + sharedWorkers: true + } +}; +``` + +## Available plugins + +* [`@ava/get-port`](https://github.com/avajs/get-port) works like [`get-port`](https://github.com/sindresorhus/get-port), but ensures the port is locked across all test files. +* [`@ava/cooperate`](https://github.com/avajs/cooperate) implements locking and value reservation functionality. + +## Writing plugins + +You can write your own plugins. They can be high-level, like [`@ava/get-port`](https://github.com/avajs/get-port) which is built using [`@ava/cooperate`](https://github.com/avajs/cooperate), or low-level like [`@ava/cooperate`](https://github.com/avajs/cooperate) itself. + +Here we'll discuss building low-level plugins. + +### Registering a shared worker + +Plugins are registered inside test workers. They'll provide the path for the main program, which AVA will load in a [worker thread](https://nodejs.org/docs/latest/api/worker_threads.html) in its main process. For each unique path one worker thread is started. + +Plugins communicate with their main program using a *protocol*. Protocols are versioned independently from AVA itself. This allows us to make improvements without breaking existing plugins. Protocols are only removed in major AVA releases. + +Plugins can be compatible with multiple protocols. AVA will select the best protocol it supports. If AVA does not support any of the specified protocols it'll throw an error. The selected protocol is available on the returned worker object. + +**While shared workers are experimental, there is only an unversioned *experimental* protocol. Breaking changes may occur with any AVA release.** + +```js +const {registerSharedWorker} = require('ava/plugin'); + +const shared = registerSharedWorker({ + filename: path.resolve(__dirname, 'worker.js'), + supportedProtocols: ['experimental'] +}); +``` + +Within a test process you can only register one worker for each `filename`. Filenames are compared as-is, without normalization. If you call `registerSharedWorker()` a second time, the same worker instance is returned. + +You can supply a `teardown()` function which will be called after all tests have finished. If you call `registerSharedWorker()` multiple times then the `teardown()` function will be invoked for each registration, even though you only got one worker instance. The most recently registered `teardown()` function is called first, and so forth. `teardown()` functions execute sequentially. + +```js +const worker = registerSharedWorker({ + filename: path.resolve(__dirname, 'worker.js'), + supportedProtocols: ['experimental'], + teardown () { + // Perform any clean-up within the test process itself. + } +}); +``` + +You can also provide some data passed to the main program when it is loaded. Of course, it is only loaded once, so this is only useful in limited circumstances: + +```js +const shared = registerSharedWorker({ + filename: path.resolve(__dirname, 'worker.js'), + initialData: {hello: 'world'}, + supportedProtocols: ['experimental'] +}); +``` + +On this `shared` object, `protocol` is set to the selected protocol. Since the main program is loaded asynchronously, `available` provides a promise that fulfils when the main program first becomes available. `currentlyAvailable` reflects whether the worker is, well, currently available. + +There are two more methods available on the `shared` object, which we'll get to soon. + +#### Initializing the main program + +AVA loads the main program (as identified through the `filename` option) in a worker thread. The program must export a factory method. For CJS programs this can be done by assigning `module.exports` or `exports.default`. For ESM programs you must use `export default`. If the `filename` to an ESM program is an absolute path it must be specified using the `file:` protocol. + +Like when calling `registerSharedWorker()`, the factory method must negotiate a protocol: + +```js +exports.default = ({negotiateProtocol}) => { + const main = negotiateProtocol(['experimental']); +}; +``` + +On this `main` object, `protocol` is set to the selected protocol. `initialData` holds the data provided when the worker was first registered. + +When you're done initializing the main program you must call `main.ready()`. This makes the worker available in test workers. You can call `main.ready()` asynchronously. + +Any errors thrown by the factory method will crash the worker thread and make the worker unavailable in test workers. The same goes for unhandled rejections. The factory method may return a promise. + +### Communicating between test workers and the worker thread + +AVA's low-level shared worker infrastructure is primarily about communication. You can send messages from test workers to the shared worker thread, and the other way around. Higher-level logic can be implemented on top of this message passing infrastructure. + +Message data is serialized using the [V8 Serialization API](https://nodejs.org/docs/latest-v12.x/api/v8.html#v8_serialization_api). Please read up on some [important limitations](https://nodejs.org/docs/latest-v12.x/api/worker_threads.html#worker_threads_port_postmessage_value_transferlist). + +In the main program you can subscribe to messages from test workers: + +```js +exports.default = async ({negotiateProtocol}) => { + const main = negotiateProtocol(['experimental']).ready(); + + for await (const message of main.subscribe()) { + // … + } +}; +``` + +Messages have IDs that are unique for the main AVA process. Across AVA runs you may see the same ID. Access the ID using the `id` property. + +Access message data using the `data` property. + +You can reply to a received message by calling `reply()`. This publishes a message to the test process the message originated from. You can then subscribe to replies to *that* message using `replies()`. + +To illustrate this here's a "game" of Marco Polo: + +```js +exports.default = ({negotiateProtocol}) => { + const main = negotiateProtocol(['experimental']).ready(); + + play(main.subscribe()); +}; + +const play = async (messages) => { + for await (const message of messages) { + if (message.data === 'Marco') { + const response = message.reply('Polo'); + play(response.replies()); + } + } +}; +``` + +(Of course this sets up many reply listeners which is rather inefficient.) + +You can also broadcast messages to all connected test workers: + +```js +exports.default = async ({negotiateProtocol}) => { + const main = negotiateProtocol(['experimental']).ready(); + + for await (const message of main.subscribe()) { + if (message.data === 'Bingo!') { + main.broadcast('Bingo!'); + } + } +}; +``` + +Like with `reply()`, `broadcast()` returns a published message which can receive replies. Call `replies()` to get an asynchronous iterator for reply messages. + +Each received message has a `testWorker` property to represent the test worker that the message originated from. All messages from the same test worker have the same value for this property. + +These test workers have a unique ID (which, like message IDs, is unique for the main process). Access it using the `id` property. The path of the test file is available through the `file` property. Use `publish()` to send messages directly to the test worker, and `subscribe()` to receive messages from the test worker. This works the same as `main.subscribe()`. + +Of course you don't need to wait for a message *from* a test worker to access this object. Use `main.testWorkers()` to get an asynchronous iterator which produces each newly connected test worker: + +```js +exports.default = async ({negotiateProtocol}) => { + const main = negotiateProtocol(['experimental']).ready(); + + for await (const testWorker of main.testWorkers()) { + main.broadcast(`New test file: ${testWorker.file}`); + } +}; +``` + +Within test workers, once the shared worker is available, you can publish messages: + +```js +shared.publish('Marco'); +``` + +Or subscribe to messages: + +```js +(async () => { + for await (const message of shared.subscribe()) { + if (message.data === 'Polo') { + message.reply('Marco'); + } + } +})(); +``` + +`publish()` throws when the shared worker is not yet available. `publish()` and `subscribe()` throw when the worker has crashed. + +Message IDs are available and are unique for the main AVA process. + +Messages are always produced in their own turn of the event loop. This means you can use `async`/`await` to process a previous message or subscribe to replies and you'll be guaranteed to receive them. + +### Cleaning up resources + +Test workers come and go while the worker thread remains. It's therefore important to clean up resources. + +Messages are subscribed to using async iterators. These return when the test worker exits. + +You can register teardown functions to be run when the test worker exits: + +```js +exports.default = async ({negotiateProtocol}) => { + const main = negotiateProtocol(['experimental']).ready(); + + for await (const testWorker of main.testWorkers()) { + testWorker.teardown(() => { + // Bye bye… + }); + } +}; +``` + +The most recently registered function is called first, and so forth. Functions execute sequentially. + +More interestingly, a wrapped teardown function is returned so that you can call it manually. AVA still ensures the function only runs once. + +```js +exports.default = ({negotiateProtocol}) => { + const main = negotiateProtocol(['experimental']).ready(); + + for await (const worker of testWorkers) { + counters.set(worker, 0); + const teardown = worker.teardown(() => { + counters.delete(worker); + }); + + waitForTen(worker.subscribe(), teardown); + } +}; + +const counters = new WeakMap(); + +const waitForTen = async (messages, teardown) => { + for await (const {testWorker} of messages) { + const count = counters.get(testWorker) + 1; + if (count === 10) { + teardown(); + } else { + counters.set(testWorker, count); + } + } +}; +``` + +## Now it's your turn + +We're pretty excited about this feature! But we need more real-world experience in building AVA plugins before we can make it generally available. Please give feedback and build plugins. We'd be more than happy to promote them. + +Not sure what to build? Previously folks have expressed a desire for mutexes, managing Puppeteer instances, starting (database) servers and so forth. + +We could also extend the shared worker implementation in AVA itself. Perhaps so you can run code before a new test run, even with watch mode. Or so you can initialize a shared worker based on the AVA configuration, not when a test file runs. + +Please [comment here](https://github.com/avajs/ava/issues/2605) with ideas, questions and feedback. diff --git a/readme.md b/readme.md index 08c41db88..9f619ac1d 100644 --- a/readme.md +++ b/readme.md @@ -143,6 +143,7 @@ We have a growing list of [common pitfalls](docs/08-common-pitfalls.md) you may ### Recipes +- [Shared workers](docs/recipes/shared-workers.md) - [Test setup](docs/recipes/test-setup.md) - [Code coverage](docs/recipes/code-coverage.md) - [Watch mode](docs/recipes/watch-mode.md) From 73015e57f6447fed0135355f2a9cf5b126675454 Mon Sep 17 00:00:00 2001 From: Mark Wubben Date: Mon, 30 Nov 2020 16:27:48 +0100 Subject: [PATCH 5/8] Update dependencies & fix reporter tests * Fix reporter tests under Node.js 15 Fixes #2616. * Update dev dependencies * Update XO * Update TypeScript * Update dependencies * Rebuild package lock * Churn reporter logs --- .github/workflows/ci.yml | 2 +- lib/api.js | 14 +- lib/cli.js | 27 +- lib/concordance-options.js | 2 +- lib/globs.js | 6 +- lib/plugin-support/shared-worker-loader.js | 2 +- lib/plugin-support/shared-workers.js | 2 +- lib/test.js | 13 +- package-lock.json | 1421 +++++++++-------- package.json | 38 +- plugin.d.ts | 2 - test-d/macros.ts | 6 +- test-tap/code-excerpt.js | 2 +- .../fixture/report/regular/nested-objects.js | 2 +- test-tap/reporters/mini.edgecases.v15.log | 10 - test-tap/reporters/mini.failfast.v10.log | 1 - test-tap/reporters/mini.failfast.v15.log | 1 - test-tap/reporters/mini.failfast2.v10.log | 1 - test-tap/reporters/mini.failfast2.v15.log | 1 - test-tap/reporters/mini.regular.v10.log | 19 - test-tap/reporters/mini.regular.v12.log | 1 - test-tap/reporters/mini.regular.v14.log | 1 - test-tap/reporters/mini.regular.v15.log | 25 - test-tap/reporters/tap.edgecases.v15.log | 18 +- test-tap/reporters/tap.failfast.v10.log | 4 +- test-tap/reporters/tap.failfast.v15.log | 4 +- test-tap/reporters/tap.failfast2.v10.log | 4 +- test-tap/reporters/tap.failfast2.v15.log | 4 +- test-tap/reporters/tap.regular.v10.log | 46 +- test-tap/reporters/tap.regular.v12.log | 2 - test-tap/reporters/tap.regular.v14.log | 2 - test-tap/reporters/tap.regular.v15.log | 55 +- test-tap/reporters/verbose.edgecases.v15.log | 10 - test-tap/reporters/verbose.failfast.v10.log | 1 - test-tap/reporters/verbose.failfast.v15.log | 1 - test-tap/reporters/verbose.failfast2.v10.log | 1 - test-tap/reporters/verbose.failfast2.v15.log | 1 - test-tap/reporters/verbose.regular.v10.log | 19 - test-tap/reporters/verbose.regular.v12.log | 1 - test-tap/reporters/verbose.regular.v14.log | 1 - test-tap/reporters/verbose.regular.v15.log | 25 - xo.config.js | 8 + 42 files changed, 854 insertions(+), 952 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 204c19d52..2da6efc0a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,7 +41,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - ts-version: [~3.7.5, ~3.8, ~3.9, ~4.0] + ts-version: [~3.7.5, ~3.8, ~3.9, ~4.0, ~4.1] steps: - uses: actions/checkout@v1 with: diff --git a/lib/api.js b/lib/api.js index a4f855d00..12bf420d3 100644 --- a/lib/api.js +++ b/lib/api.js @@ -117,15 +117,11 @@ class Api extends Emittery { cacheDir = this._createCacheDir(); testFiles = await globs.findTests({cwd: this.options.projectDir, ...apiOptions.globs}); if (selectedFiles.length === 0) { - if (filter.length === 0) { - selectedFiles = testFiles; - } else { - selectedFiles = globs.applyTestFileFilter({ - cwd: this.options.projectDir, - filter: filter.map(({pattern}) => pattern), - testFiles - }); - } + selectedFiles = filter.length === 0 ? testFiles : globs.applyTestFileFilter({ + cwd: this.options.projectDir, + filter: filter.map(({pattern}) => pattern), + testFiles + }); } } catch (error) { selectedFiles = []; diff --git a/lib/cli.js b/lib/cli.js index e6ee88d49..f98c713bb 100644 --- a/lib/cli.js +++ b/lib/cli.js @@ -409,22 +409,17 @@ exports.run = async () => { // eslint-disable-line complexity workerArgv: argv['--'] }); - let reporter; - if (combined.tap && !combined.watch && debug === null) { - reporter = new TapReporter({ - projectDir, - reportStream: process.stdout, - stdStream: process.stderr - }); - } else { - reporter = new DefaultReporter({ - projectDir, - reportStream: process.stdout, - stdStream: process.stderr, - watching: combined.watch, - verbose: debug !== null || combined.verbose || isCi || !process.stdout.isTTY - }); - } + const reporter = combined.tap && !combined.watch && debug === null ? new TapReporter({ + projectDir, + reportStream: process.stdout, + stdStream: process.stderr + }) : new DefaultReporter({ + projectDir, + reportStream: process.stdout, + stdStream: process.stderr, + watching: combined.watch, + verbose: debug !== null || combined.verbose || isCi || !process.stdout.isTTY + }); api.on('run', plan => { reporter.startRun(plan); diff --git a/lib/concordance-options.js b/lib/concordance-options.js index c40dbacfc..05eb30abf 100644 --- a/lib/concordance-options.js +++ b/lib/concordance-options.js @@ -1,5 +1,5 @@ 'use strict'; -const util = require('util'); +const util = require('util'); // eslint-disable-line unicorn/import-style const ansiStyles = require('ansi-styles'); const stripAnsi = require('strip-ansi'); const cloneDeepWith = require('lodash/cloneDeepWith'); diff --git a/lib/globs.js b/lib/globs.js index 4b51c59f5..2e03d312f 100644 --- a/lib/globs.js +++ b/lib/globs.js @@ -82,11 +82,7 @@ function normalizeGlobs({extensions, files: filePatterns, ignoredByWatcher: igno filePatterns = defaultTestPatterns; } - if (ignoredByWatcherPatterns) { - ignoredByWatcherPatterns = [...defaultIgnoredByWatcherPatterns, ...normalizePatterns(ignoredByWatcherPatterns)]; - } else { - ignoredByWatcherPatterns = [...defaultIgnoredByWatcherPatterns]; - } + ignoredByWatcherPatterns = ignoredByWatcherPatterns ? [...defaultIgnoredByWatcherPatterns, ...normalizePatterns(ignoredByWatcherPatterns)] : [...defaultIgnoredByWatcherPatterns]; for (const {level, main} of providers) { if (level >= providerManager.levels.pathRewrites) { diff --git a/lib/plugin-support/shared-worker-loader.js b/lib/plugin-support/shared-worker-loader.js index e431cda8e..1453f0e39 100644 --- a/lib/plugin-support/shared-worker-loader.js +++ b/lib/plugin-support/shared-worker-loader.js @@ -1,6 +1,6 @@ const {EventEmitter, on} = require('events'); const v8 = require('v8'); -const {workerData, parentPort} = require('worker_threads'); // eslint-disable-line node/no-unsupported-features/node-builtins +const {workerData, parentPort} = require('worker_threads'); const pkg = require('../../package.json'); // Used to forward messages received over the `parentPort`. Every subscription diff --git a/lib/plugin-support/shared-workers.js b/lib/plugin-support/shared-workers.js index 619f7a9dc..5e7ba41e6 100644 --- a/lib/plugin-support/shared-workers.js +++ b/lib/plugin-support/shared-workers.js @@ -3,7 +3,7 @@ const serializeError = require('../serialize-error'); let Worker; try { - ({Worker} = require('worker_threads')); // eslint-disable-line node/no-unsupported-features/node-builtins + ({Worker} = require('worker_threads')); } catch {} const LOADER = require.resolve('./shared-worker-loader'); diff --git a/lib/test.js b/lib/test.js index e18b78ce2..e8058b115 100644 --- a/lib/test.js +++ b/lib/test.js @@ -298,11 +298,8 @@ class Test { }; } - if (this.metadata.inline) { - throw new Error('`t.end()` is not supported inside `t.try()`'); - } else { - throw new Error('`t.end()` is not supported in this context. To use `t.end()` as a callback, you must use "callback mode" via `test.cb(testName, fn)`'); - } + const error_ = this.metadata.inline ? new Error('`t.end()` is not supported inside `t.try()`') : new Error('`t.end()` is not supported in this context. To use `t.end()` as a callback, you must use "callback mode" via `test.cb(testName, fn)`'); + throw error_; } endCallback(error, savedError) { @@ -736,11 +733,7 @@ class Test { if (this.metadata.failing) { passed = !passed; - if (passed) { - error = null; - } else { - error = new Error('Test was expected to fail, but succeeded, you should stop marking the test as failing'); - } + error = passed ? null : new Error('Test was expected to fail, but succeeded, you should stop marking the test as failing'); } return { diff --git a/package-lock.json b/package-lock.json index 406b82ccf..e311ba8e0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -107,9 +107,9 @@ } }, "@ava/v3": { - "version": "npm:ava@3.12.1", - "resolved": "https://registry.npmjs.org/ava/-/ava-3.12.1.tgz", - "integrity": "sha512-cS41+X+UfrcPed+CIgne/YV/6eWxaUjHEPH+W8WvNSqWTWku5YitjZGE5cMHFuJxwHELdR541xTBRn8Uwi4PSw==", + "version": "npm:ava@3.13.0", + "resolved": "https://registry.npmjs.org/ava/-/ava-3.13.0.tgz", + "integrity": "sha512-yzky+gark5PdsFFlZ4CnBVxm/OgBUWtn9vAsSSnuooVJNOk5ER17HJXVeUzy63LIt06Zy34oThcn+2ZqgMs7SA==", "dev": true, "requires": { "@concordance/react": "^2.0.0", @@ -132,8 +132,8 @@ "concordance": "^5.0.1", "convert-source-map": "^1.7.0", "currently-unhandled": "^0.4.1", - "debug": "^4.1.1", - "del": "^5.1.0", + "debug": "^4.2.0", + "del": "^6.0.0", "emittery": "^0.7.1", "equal-length": "^1.0.0", "figures": "^3.2.0", @@ -142,19 +142,20 @@ "import-local": "^3.0.2", "indent-string": "^4.0.0", "is-error": "^2.2.2", - "is-plain-object": "^4.1.1", + "is-plain-object": "^5.0.0", "is-promise": "^4.0.0", "lodash": "^4.17.20", "matcher": "^3.0.0", "md5-hex": "^3.0.1", - "mem": "^6.1.0", + "mem": "^6.1.1", "ms": "^2.1.2", - "ora": "^5.0.0", + "ora": "^5.1.0", + "p-event": "^4.2.0", "p-map": "^4.0.0", "picomatch": "^2.2.2", "pkg-conf": "^3.1.0", "plur": "^4.0.0", - "pretty-ms": "^7.0.0", + "pretty-ms": "^7.0.1", "read-pkg": "^5.2.0", "resolve-cwd": "^3.0.0", "slash": "^3.0.0", @@ -166,114 +167,63 @@ "trim-off-newlines": "^1.0.1", "update-notifier": "^4.1.1", "write-file-atomic": "^3.0.3", - "yargs": "^15.4.1" + "yargs": "^16.0.3" }, "dependencies": { - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "is-npm": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", + "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", + "dev": true + }, + "mem": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/mem/-/mem-6.1.1.tgz", + "integrity": "sha512-Ci6bIfq/UgcxPTYa8dQQ5FY3BzKkT894bwXWXxC/zqs0XgMO2cT20CGkOqda7gZNkmK5VP4x89IGZ6K7hfbn3Q==", "dev": true, "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" + "map-age-cleaner": "^0.1.3", + "mimic-fn": "^3.0.0" } }, - "del": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/del/-/del-5.1.0.tgz", - "integrity": "sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==", - "dev": true, - "requires": { - "globby": "^10.0.1", - "graceful-fs": "^4.2.2", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.1", - "p-map": "^3.0.0", - "rimraf": "^3.0.0", - "slash": "^3.0.0" + "mimic-fn": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", + "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", + "dev": true + }, + "update-notifier": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", + "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==", + "dev": true, + "requires": { + "boxen": "^4.2.0", + "chalk": "^3.0.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.3.1", + "is-npm": "^4.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.0.0", + "pupa": "^2.0.1", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" }, "dependencies": { - "globby": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", - "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.0.3", - "glob": "^7.1.3", - "ignore": "^5.1.1", - "merge2": "^1.2.3", - "slash": "^3.0.0" - } - }, - "p-map": { + "chalk": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "dev": true, "requires": { - "aggregate-error": "^3.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } } } - }, - "is-plain-object": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-4.1.1.tgz", - "integrity": "sha512-5Aw8LLVsDlZsETVMhoMXzqsXwQqr/0vlnBYzIXJbYo2F4yYlhLHs+Ez7Bod7IIQKWkJbJfxrWD7pA1Dw1TKrwA==", - "dev": true - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", - "dev": true - }, - "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - } - }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } } } }, @@ -286,19 +236,19 @@ } }, "@babel/core": { - "version": "7.11.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.6.tgz", - "integrity": "sha512-Wpcv03AGnmkgm6uS6k8iwhIwTrcP0m17TL1n1sy7qD0qelDu4XNeW0dN0mHfa+Gei211yDaLoEe/VlbXQzM4Bg==", + "version": "7.12.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", + "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", "dev": true, "requires": { "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.6", - "@babel/helper-module-transforms": "^7.11.0", - "@babel/helpers": "^7.10.4", - "@babel/parser": "^7.11.5", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.11.5", - "@babel/types": "^7.11.5", + "@babel/generator": "^7.12.5", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.5", + "@babel/parser": "^7.12.7", + "@babel/template": "^7.12.7", + "@babel/traverse": "^7.12.9", + "@babel/types": "^7.12.7", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.1", @@ -324,12 +274,12 @@ } }, "@babel/generator": { - "version": "7.11.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.6.tgz", - "integrity": "sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.5.tgz", + "integrity": "sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==", "dev": true, "requires": { - "@babel/types": "^7.11.5", + "@babel/types": "^7.12.5", "jsesc": "^2.5.1", "source-map": "^0.5.0" }, @@ -363,45 +313,47 @@ } }, "@babel/helper-member-expression-to-functions": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz", - "integrity": "sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q==", + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz", + "integrity": "sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw==", "dev": true, "requires": { - "@babel/types": "^7.11.0" + "@babel/types": "^7.12.7" } }, "@babel/helper-module-imports": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", - "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", "dev": true, "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.12.5" } }, "@babel/helper-module-transforms": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz", - "integrity": "sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", + "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-simple-access": "^7.10.4", + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-simple-access": "^7.12.1", "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/helper-validator-identifier": "^7.10.4", "@babel/template": "^7.10.4", - "@babel/types": "^7.11.0", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", "lodash": "^4.17.19" } }, "@babel/helper-optimise-call-expression": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", - "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.7.tgz", + "integrity": "sha512-I5xc9oSJ2h59OwyUqjv95HRyzxj53DAubUERgQMrpcCEYQyToeHA+NEcUEsVWB4j53RDeskeBJ0SgRAYHDBckw==", "dev": true, "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.12.7" } }, "@babel/helper-plugin-utils": { @@ -411,34 +363,33 @@ "dev": true }, "@babel/helper-replace-supers": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", - "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz", + "integrity": "sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.12.1", "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" } }, "@babel/helper-simple-access": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", - "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", + "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", "dev": true, "requires": { - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/types": "^7.12.1" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz", - "integrity": "sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", "dev": true, "requires": { - "@babel/types": "^7.11.0" + "@babel/types": "^7.12.1" } }, "@babel/helper-split-export-declaration": { @@ -456,14 +407,14 @@ "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" }, "@babel/helpers": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz", - "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", + "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", "dev": true, "requires": { "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" } }, "@babel/highlight": { @@ -523,25 +474,25 @@ } }, "@babel/parser": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz", - "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==", + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.7.tgz", + "integrity": "sha512-oWR02Ubp4xTLCAqPRiNIuMVgNO5Aif/xpXtabhzW2HWUD47XJsAB4Zd/Rg30+XeQA3juXigV7hlquOTmwqLiwg==", "dev": true }, "@babel/plugin-proposal-do-expressions": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-do-expressions/-/plugin-proposal-do-expressions-7.10.4.tgz", - "integrity": "sha512-Gcc2wLVeMceRdP6m9tdDygP01lbUVmaQGBRoIRJZxzPfB5VTiUgmn1jGfORgqbEVgUpG0IQm/z4q5Y/qzG+8JQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-do-expressions/-/plugin-proposal-do-expressions-7.12.1.tgz", + "integrity": "sha512-bpJ6Bfrzvdzb0vG6zBSNh3HLgFKh+S2CBpNmaLRjg2u7cNkzRPIqBjVURCmpG6pvPfKyxkizwbrXwpYtW3a9cw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-do-expressions": "^7.10.4" + "@babel/plugin-syntax-do-expressions": "^7.12.1" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz", - "integrity": "sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", + "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", @@ -549,9 +500,9 @@ } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz", - "integrity": "sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", + "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", @@ -559,20 +510,20 @@ } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz", - "integrity": "sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA==", + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.7.tgz", + "integrity": "sha512-4ovylXZ0PWmwoOvhU2vhnzVNnm88/Sm9nx7V8BPgMvAzn5zDou3/Awy0EjglyubVHasJj+XCEkr/r1X3P5elCA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", "@babel/plugin-syntax-optional-chaining": "^7.8.0" } }, "@babel/plugin-syntax-do-expressions": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-do-expressions/-/plugin-syntax-do-expressions-7.10.4.tgz", - "integrity": "sha512-HyvaTg1aiwGo2I+Pu0nyurRMjIP7J89GpuZ2mcQ0fhO6Jt3BnyhEPbNJFG1hRE99NAPNfPYh93/7HO+GPVkTKg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-do-expressions/-/plugin-syntax-do-expressions-7.12.1.tgz", + "integrity": "sha512-a9TknRXkzfetNjOWSWnPIG/Y7x+elzcmKng2Qpvh8QaqdPo0OABizTjco8YO8r5xZNQfE58YHq7lWR+PKwHyxg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" @@ -606,49 +557,49 @@ } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz", - "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", + "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-module-transforms": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-simple-access": "^7.10.4", + "@babel/helper-simple-access": "^7.12.1", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/template": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", - "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.7.tgz", + "integrity": "sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==", "dev": true, "requires": { "@babel/code-frame": "^7.10.4", - "@babel/parser": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/parser": "^7.12.7", + "@babel/types": "^7.12.7" } }, "@babel/traverse": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.5.tgz", - "integrity": "sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ==", + "version": "7.12.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.9.tgz", + "integrity": "sha512-iX9ajqnLdoU1s1nHt36JDI9KG4k+vmI8WgjK5d+aDTwQbL2fUnzedNedssA645Ede3PM2ma1n8Q4h2ohwXgMXw==", "dev": true, "requires": { "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.5", + "@babel/generator": "^7.12.5", "@babel/helper-function-name": "^7.10.4", "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.11.5", - "@babel/types": "^7.11.5", + "@babel/parser": "^7.12.7", + "@babel/types": "^7.12.7", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.19" } }, "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.7.tgz", + "integrity": "sha512-MNyI92qZq6jrQkXvtIiykvl4WtoRrVV9MPn+ZfsoEENjiWcBQ3ZSHrkxnJWgWtLX3XXqX5hrSQ+X69wkmesXuQ==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.10.4", @@ -678,9 +629,9 @@ } }, "@eslint/eslintrc": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.1.3.tgz", - "integrity": "sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.1.tgz", + "integrity": "sha512-XRUeBZ5zBWLYgSANMpThFddrZZkEbGHgUdt5UJjZfnlN9BGCiUBrf+nvbRupSjMvqzwnQN0qwCmOxITt1cfywA==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -797,9 +748,9 @@ } }, "@sinonjs/samsam": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-5.1.0.tgz", - "integrity": "sha512-42nyaQOVunX5Pm6GRJobmzbS7iLI+fhERITnETXzzwDZh+TtDr/Au3yAvXVjFmZ4wEUaE4Y3NFZfKv0bV0cbtg==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-5.3.0.tgz", + "integrity": "sha512-hXpcfx3aq+ETVBwPlRFICld5EnrkexXuXDwqUNhDdr5L8VjvMeSRwyOa0qL7XFmR+jVWR4rUZtnxlG7RX72sBg==", "dev": true, "requires": { "@sinonjs/commons": "^1.6.0", @@ -821,17 +772,6 @@ "defer-to-connect": "^1.0.1" } }, - "@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" - }, - "@types/eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", - "dev": true - }, "@types/glob": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", @@ -873,15 +813,15 @@ "dev": true }, "@types/minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz", + "integrity": "sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==", "dev": true }, "@types/node": { - "version": "14.11.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.11.2.tgz", - "integrity": "sha512-jiE3QIxJ8JLNcb1Ps6rDbysDhN4xa8DJJvuC9prr6w+1tIh+QAbYyNF3tyiZNLDBIuBCf4KEcV2UvQm/V60xfA==", + "version": "14.14.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.10.tgz", + "integrity": "sha512-J32dgx2hw8vXrSbu4ZlVhn1Nm3GbeCFNw2FWL8S5QKucHGY0cyNwjdQdO+KMBZ4wpmC7KhLCiNsdk1RFRIYUQQ==", "dev": true }, "@types/normalize-package-data": { @@ -896,12 +836,13 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.10.1.tgz", - "integrity": "sha512-PQg0emRtzZFWq6PxBcdxRH3QIQiyFO3WCVpRL3fgj5oQS3CDs3AeAKfv4DxNhzn8ITdNJGJ4D3Qw8eAJf3lXeQ==", + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.8.2.tgz", + "integrity": "sha512-gQ06QLV5l1DtvYtqOyFLXD9PdcILYqlrJj2l+CGDlPtmgLUzc1GpqciJFIRvyfvgLALpnxYINFuw+n9AZhPBKQ==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "3.10.1", + "@typescript-eslint/experimental-utils": "4.8.2", + "@typescript-eslint/scope-manager": "4.8.2", "debug": "^4.1.1", "functional-red-black-tree": "^1.0.1", "regexpp": "^3.0.0", @@ -910,47 +851,57 @@ } }, "@typescript-eslint/experimental-utils": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz", - "integrity": "sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw==", + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.8.2.tgz", + "integrity": "sha512-hpTw6o6IhBZEsQsjuw/4RWmceRyESfAiEzAEnXHKG1X7S5DXFaZ4IO1JO7CW1aQ604leQBzjZmuMI9QBCAJX8Q==", "dev": true, "requires": { "@types/json-schema": "^7.0.3", - "@typescript-eslint/types": "3.10.1", - "@typescript-eslint/typescript-estree": "3.10.1", + "@typescript-eslint/scope-manager": "4.8.2", + "@typescript-eslint/types": "4.8.2", + "@typescript-eslint/typescript-estree": "4.8.2", "eslint-scope": "^5.0.0", "eslint-utils": "^2.0.0" } }, "@typescript-eslint/parser": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-3.10.1.tgz", - "integrity": "sha512-Ug1RcWcrJP02hmtaXVS3axPPTTPnZjupqhgj+NnZ6BCkwSImWk/283347+x9wN+lqOdK9Eo3vsyiyDHgsmiEJw==", + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.8.2.tgz", + "integrity": "sha512-u0leyJqmclYr3KcXOqd2fmx6SDGBO0MUNHHAjr0JS4Crbb3C3d8dwAdlazy133PLCcPn+aOUFiHn72wcuc5wYw==", "dev": true, "requires": { - "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "3.10.1", - "@typescript-eslint/types": "3.10.1", - "@typescript-eslint/typescript-estree": "3.10.1", - "eslint-visitor-keys": "^1.1.0" + "@typescript-eslint/scope-manager": "4.8.2", + "@typescript-eslint/types": "4.8.2", + "@typescript-eslint/typescript-estree": "4.8.2", + "debug": "^4.1.1" + } + }, + "@typescript-eslint/scope-manager": { + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.8.2.tgz", + "integrity": "sha512-qHQ8ODi7mMin4Sq2eh/6eu03uVzsf5TX+J43xRmiq8ujng7ViQSHNPLOHGw/Wr5dFEoxq/ubKhzClIIdQy5q3g==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.8.2", + "@typescript-eslint/visitor-keys": "4.8.2" } }, "@typescript-eslint/types": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.10.1.tgz", - "integrity": "sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ==", + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.8.2.tgz", + "integrity": "sha512-z1/AVcVF8ju5ObaHe2fOpZYEQrwHyZ7PTOlmjd3EoFeX9sv7UekQhfrCmgUO7PruLNfSHrJGQvrW3Q7xQ8EoAw==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz", - "integrity": "sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w==", + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.8.2.tgz", + "integrity": "sha512-HToGNwI6fekH0dOw3XEVESUm71Onfam0AKin6f26S2FtUmO7o3cLlWgrIaT1q3vjB3wCTdww3Dx2iGq5wtUOCg==", "dev": true, "requires": { - "@typescript-eslint/types": "3.10.1", - "@typescript-eslint/visitor-keys": "3.10.1", + "@typescript-eslint/types": "4.8.2", + "@typescript-eslint/visitor-keys": "4.8.2", "debug": "^4.1.1", - "glob": "^7.1.6", + "globby": "^11.0.1", "is-glob": "^4.0.1", "lodash": "^4.17.15", "semver": "^7.3.2", @@ -958,12 +909,13 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz", - "integrity": "sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ==", + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.8.2.tgz", + "integrity": "sha512-Vg+/SJTMZJEKKGHW7YC21QxgKJrSbxoYYd3MEUGtW7zuytHuEcksewq0DUmo4eh/CTNrVJGSdIY9AtRb6riWFw==", "dev": true, "requires": { - "eslint-visitor-keys": "^1.1.0" + "@typescript-eslint/types": "4.8.2", + "eslint-visitor-keys": "^2.0.0" } }, "abbrev": { @@ -973,9 +925,9 @@ "dev": true }, "acorn": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.0.1.tgz", - "integrity": "sha512-dmKn4pqZ29iQl2Pvze1zTrps2luvls2PBY//neO2WJ0s10B3AxJXshN+Ph7B4GrhfGhHXrl4dnUwyNNXQcnWGQ==" + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.0.4.tgz", + "integrity": "sha512-XNP0PqF1XD19ZlLKvB7cMmnZswW4C/03pRHgirB30uSJTaS3A3V1/P4sS3HPvFmjoriPCJQs+JDSbm4bL1TxGQ==" }, "acorn-jsx": { "version": "5.3.1", @@ -998,9 +950,9 @@ } }, "ajv": { - "version": "6.12.5", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.5.tgz", - "integrity": "sha512-lRF8RORchjpKG50/WFf8xmg7sgCLFiYNNnqdKflk63whMQcWR5ngGjiSXkL9bjxy6B2npOK2HSMN49jEBMSkag==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -1081,11 +1033,10 @@ "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" }, "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "requires": { - "@types/color-name": "^1.1.1", "color-convert": "^2.0.1" } }, @@ -1157,31 +1108,34 @@ "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" }, "array-includes": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", - "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.2.tgz", + "integrity": "sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw==", "dev": true, "requires": { + "call-bind": "^1.0.0", "define-properties": "^1.1.3", - "es-abstract": "^1.17.0", + "es-abstract": "^1.18.0-next.1", + "get-intrinsic": "^1.0.1", "is-string": "^1.0.5" }, "dependencies": { "es-abstract": { - "version": "1.17.6", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", - "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", "object-keys": "^1.1.1", - "object.assign": "^4.1.0", + "object.assign": "^4.1.1", "string.prototype.trimend": "^1.0.1", "string.prototype.trimstart": "^1.0.1" } @@ -1206,30 +1160,32 @@ "dev": true }, "array.prototype.flat": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", - "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", + "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", "dev": true, "requires": { + "call-bind": "^1.0.0", "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" + "es-abstract": "^1.18.0-next.1" }, "dependencies": { "es-abstract": { - "version": "1.17.6", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", - "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", "object-keys": "^1.1.1", - "object.assign": "^4.1.0", + "object.assign": "^4.1.1", "string.prototype.trimend": "^1.0.1", "string.prototype.trimstart": "^1.0.1" } @@ -1353,9 +1309,9 @@ "dev": true }, "aws4": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.1.tgz", - "integrity": "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", "dev": true }, "babel-eslint": { @@ -1370,6 +1326,14 @@ "@babel/types": "^7.7.0", "eslint-visitor-keys": "^1.0.0", "resolve": "^1.12.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } } }, "babel-plugin-dynamic-import-node": { @@ -1457,9 +1421,9 @@ } }, "base64-js": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "dev": true }, "bcrypt-pbkdf": { @@ -1591,21 +1555,13 @@ } }, "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", "dev": true, "requires": { - "bn.js": "^4.1.0", + "bn.js": "^5.0.0", "randombytes": "^2.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", - "dev": true - } } }, "browserify-sign": { @@ -1696,9 +1652,9 @@ "dev": true }, "c8": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/c8/-/c8-7.3.1.tgz", - "integrity": "sha512-GXddMEWjNkw6OHQx0bRc+4Sk65beqQq9gBHLJxEYlmu3q+yIIBQpOjBApPyRcFjLTJHsWdWtrOMjLJkX7q7irQ==", + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/c8/-/c8-7.3.5.tgz", + "integrity": "sha512-VNiZoxnInBJLW8uUuyLkiqMKWh1OAsYS+DjWsMhvcrfGPrVx3vwqD9627/7ZhFSF86MCBINDi+PD6Midw0KHRg==", "dev": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", @@ -1711,7 +1667,7 @@ "istanbul-reports": "^3.0.2", "rimraf": "^3.0.0", "test-exclude": "^6.0.0", - "v8-to-istanbul": "^5.0.0", + "v8-to-istanbul": "^7.0.0", "yargs": "^16.0.0", "yargs-parser": "^20.0.0" }, @@ -1736,12 +1692,12 @@ } }, "p-limit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.0.2.tgz", - "integrity": "sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "requires": { - "p-try": "^2.0.0" + "yocto-queue": "^0.1.0" } }, "p-locate": { @@ -1869,6 +1825,16 @@ } } }, + "call-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", + "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.0" + } + }, "call-matcher": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/call-matcher/-/call-matcher-1.1.0.tgz", @@ -1930,9 +1896,9 @@ } }, "chokidar": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.2.tgz", - "integrity": "sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", + "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", "requires": { "anymatch": "~3.1.1", "braces": "~3.0.2", @@ -1941,7 +1907,7 @@ "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", - "readdirp": "~3.4.0" + "readdirp": "~3.5.0" } }, "chunkd": { @@ -2025,9 +1991,9 @@ } }, "cli-spinners": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.4.0.tgz", - "integrity": "sha512-sJAofoarcm76ZGpuooaO0eDy8saEy+YoZBLjC4h8srt4jeBnkYeOgqxgsJQTpyt2LjI5PTfLJHSL+41Yu4fEJA==" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.5.0.tgz", + "integrity": "sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ==" }, "cli-truncate": { "version": "2.1.0", @@ -2039,9 +2005,9 @@ } }, "cliui": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.1.tgz", - "integrity": "sha512-rcvHOWyGyid6I1WjT/3NatKj2kDt9OdSHSXpyLXaMWFbKpGACNW8pRhhdPUq9MWUOdwn8Rz9AVETjF4105rZZQ==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -2217,9 +2183,9 @@ } }, "core-js": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", - "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", "dev": true }, "core-util-is": { @@ -2405,9 +2371,9 @@ } }, "debug": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", - "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "requires": { "ms": "2.1.2" } @@ -2694,9 +2660,9 @@ } }, "emittery": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.1.tgz", - "integrity": "sha512-d34LN4L6h18Bzz9xpoku2nPwKxCPlPMr3EEKTkoEBi+1/+b0lcRkRJ1UVyyZaKNeqGR3swcGl6s390DNO4YVgQ==" + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", + "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==" }, "emoji-regex": { "version": "8.0.0", @@ -2770,21 +2736,20 @@ } }, "es-abstract": { - "version": "1.18.0-next.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.0.tgz", - "integrity": "sha512-elZXTZXKn51hUBdJjSZGYRujuzilgXo8vSPQzjGYXLvSlGiCo8VO8ZGV3kjo9a0WNJJ57hENagwbtlRuHuzkcQ==", + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-negative-zero": "^2.0.0", + "is-callable": "^1.2.2", "is-regex": "^1.1.1", "object-inspect": "^1.8.0", "object-keys": "^1.1.1", - "object.assign": "^4.1.0", + "object.assign": "^4.1.1", "string.prototype.trimend": "^1.0.1", "string.prototype.trimstart": "^1.0.1" } @@ -2807,9 +2772,9 @@ "dev": true }, "escalade": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.0.tgz", - "integrity": "sha512-mAk+hPSO8fLDkhV7V0dXazH5pDc6MrjBTPyD3VeKzxnVFjH1MIxbCdqGZB9O8+EwWakZs3ZCbDS4IpRt79V1ig==" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" }, "escape-goat": { "version": "2.1.1", @@ -2822,13 +2787,13 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "eslint": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.10.0.tgz", - "integrity": "sha512-BDVffmqWl7JJXqCjAK6lWtcQThZB/aP1HXSH1JKwGwv0LQEdvpR7qzNrUT487RM39B5goWuboFad5ovMBmD8yA==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.14.0.tgz", + "integrity": "sha512-5YubdnPXrlrYAFCKybPuHIAH++PINe1pmKNc5wQRB9HSbqIK1ywAnntE3Wwua4giKu0bjligf1gLF6qxMGOYRA==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@eslint/eslintrc": "^0.1.3", + "@eslint/eslintrc": "^0.2.1", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -2837,7 +2802,7 @@ "enquirer": "^2.3.5", "eslint-scope": "^5.1.1", "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^1.3.0", + "eslint-visitor-keys": "^2.0.0", "espree": "^7.3.0", "esquery": "^1.2.0", "esutils": "^2.0.2", @@ -2906,9 +2871,9 @@ } }, "eslint-config-prettier": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.12.0.tgz", - "integrity": "sha512-9jWPlFlgNwRUYVoujvWTQ1aMO8o6648r+K7qU7K5Jmkbyqav1fuEZC0COYpGBxyiAJb65Ra9hrmFx19xRGwXWw==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz", + "integrity": "sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==", "dev": true, "requires": { "get-stdin": "^6.0.0" @@ -2923,18 +2888,18 @@ } }, "eslint-config-xo": { - "version": "0.32.1", - "resolved": "https://registry.npmjs.org/eslint-config-xo/-/eslint-config-xo-0.32.1.tgz", - "integrity": "sha512-achnYLilUTtljR1CGRikVj9HRAf5GplJeGgeyQMvph7mKo+AqTkNuig4EO/IrNOChcjoazgw9YT4cW/3+69i3Q==", + "version": "0.33.1", + "resolved": "https://registry.npmjs.org/eslint-config-xo/-/eslint-config-xo-0.33.1.tgz", + "integrity": "sha512-ZdnT4Q/m3CLCX0o3nKKW3Q8CfNiRy/ojkeffLtz8f0EQJMHP/9fJyncIvI0mik1wE61EI6PHrXdLeAbeb62cZw==", "dev": true, "requires": { "confusing-browser-globals": "1.0.9" } }, "eslint-config-xo-typescript": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/eslint-config-xo-typescript/-/eslint-config-xo-typescript-0.32.0.tgz", - "integrity": "sha512-GCYR9wXNATh6/yB9s9PvKia7tlv86ZsrN3CYk/qfcTJhFSO41fagBgA8G8H1j0CACC4AHaRpgbTEu4+W0p9hkw==", + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/eslint-config-xo-typescript/-/eslint-config-xo-typescript-0.36.0.tgz", + "integrity": "sha512-wze9CboL9XHj4KRfqFedXjsJ9yM7iiJJnnVgiXJWdwzPXewFfdIUWHQVRoEYjGZ94cA8kVBkKnTCp8pi3EU3HQ==", "dev": true }, "eslint-formatter-pretty": { @@ -2980,9 +2945,9 @@ } }, "eslint-import-resolver-webpack": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.12.2.tgz", - "integrity": "sha512-7Jnm4YAoNNkvqPaZkKdIHsKGmv8/uNnYC5QsXkiSodvX4XEEfH2AKOna98FK52fCDXm3q4HzuX+7pRMKkJ64EQ==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.13.0.tgz", + "integrity": "sha512-hZWGcmjaJZK/WSCYGI/y4+FMGQZT+cwW/1E/P4rDwFj2PbanlQHISViw4ccDJ+2wxAqjgwBfxwy3seABbVKDEw==", "dev": true, "requires": { "array-find": "^1.0.0", @@ -3106,14 +3071,15 @@ } }, "eslint-plugin-ava": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-ava/-/eslint-plugin-ava-10.5.0.tgz", - "integrity": "sha512-2I0Ze8ZtwbSlLdnzms4bsa6PxxOxGMIJ9d4yy7aRy3yc5zEO2wHJLic8l3Lrct73hb5ML+PLt5VRqvdV87xWdQ==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-ava/-/eslint-plugin-ava-11.0.0.tgz", + "integrity": "sha512-UMGedfl/gIKx1tzjGtAsTSJgowyAEZU2VWmpoWXYcuuV4B2H4Cu90yuMgMPEVt1mQlIZ21L7YM2CSpHUFJo/LQ==", "dev": true, "requires": { "deep-strict-equal": "^0.2.0", "enhance-visitors": "^1.0.0", - "espree": "^7.1.0", + "eslint-utils": "^2.1.0", + "espree": "^7.2.0", "espurify": "^2.0.1", "import-modules": "^2.0.0", "micro-spelling-correcter": "^1.1.1", @@ -3150,9 +3116,9 @@ } }, "eslint-plugin-import": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.0.tgz", - "integrity": "sha512-66Fpf1Ln6aIS5Gr/55ts19eUuoDhAbZgnr6UxK5hbDx6l/QgQgx61AePq+BV4PP2uXQFClgMVzep5zZ94qqsxg==", + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", + "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==", "dev": true, "requires": { "array-includes": "^3.1.1", @@ -3160,7 +3126,7 @@ "contains-path": "^0.1.0", "debug": "^2.6.9", "doctrine": "1.5.0", - "eslint-import-resolver-node": "^0.3.3", + "eslint-import-resolver-node": "^0.3.4", "eslint-module-utils": "^2.6.0", "has": "^1.0.3", "minimatch": "^3.0.4", @@ -3359,18 +3325,18 @@ "dev": true }, "eslint-plugin-unicorn": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-21.0.0.tgz", - "integrity": "sha512-S8v7+v4gZTQPj4pKKvexhgSUaLQSyItvxW2SVZDaX9Iu5IjlAmF2eni+L6w8a2aqshxgU8Lle4FIAVDtuejSKQ==", + "version": "23.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-23.0.0.tgz", + "integrity": "sha512-Vabo3cjl6cjyhcf+76CdQEY6suOFzK0Xh3xo0uL9VDYrDJP5+B6PjV0tHTYm82WZmFWniugFJM3ywHSNYTi/ZQ==", "dev": true, "requires": { "ci-info": "^2.0.0", "clean-regexp": "^1.0.0", "eslint-ast-utils": "^1.1.0", - "eslint-template-visitor": "^2.0.0", + "eslint-template-visitor": "^2.2.1", "eslint-utils": "^2.1.0", "import-modules": "^2.0.0", - "lodash": "^4.17.15", + "lodash": "^4.17.20", "pluralize": "^8.0.0", "read-pkg-up": "^7.0.1", "regexp-tree": "^0.1.21", @@ -3399,9 +3365,9 @@ } }, "eslint-rule-docs": { - "version": "1.1.209", - "resolved": "https://registry.npmjs.org/eslint-rule-docs/-/eslint-rule-docs-1.1.209.tgz", - "integrity": "sha512-a0mg7IWKvV47HEuMLdk91Qq+cMl7BPUQ1WHtAk6XfSNqdWsm9Zfx4DptHWWZ2XcaGowIflO6tIv9nM8fLFZRcQ==", + "version": "1.1.215", + "resolved": "https://registry.npmjs.org/eslint-rule-docs/-/eslint-rule-docs-1.1.215.tgz", + "integrity": "sha512-lADlvFuceJvlU/NhD9gpnCt2lfdfpkz2BizeJNy7bkTr0VQA4w+vW3Nh4G569w6a8SPQczKL4PDB83s6j5i++A==", "dev": true }, "eslint-scope": { @@ -3424,6 +3390,14 @@ "eslint-visitor-keys": "^1.3.0", "esquery": "^1.3.1", "multimap": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } } }, "eslint-utils": { @@ -3433,12 +3407,20 @@ "dev": true, "requires": { "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } } }, "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", "dev": true }, "esm": { @@ -3479,9 +3461,15 @@ }, "dependencies": { "acorn": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz", - "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true } } @@ -3568,9 +3556,9 @@ } }, "execa": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.0.3.tgz", - "integrity": "sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", "dev": true, "requires": { "cross-spawn": "^7.0.0", @@ -3789,9 +3777,9 @@ "dev": true }, "fastq": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz", - "integrity": "sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.9.0.tgz", + "integrity": "sha512-i7FVWL8HhVY+CTkwFxkN2mk3h+787ixS5S63eb78diVRc1MCssarHq3W5cj0av7YDSwmaV928RNag+U1etRQ7w==", "requires": { "reusify": "^1.0.4" } @@ -3953,18 +3941,18 @@ "dev": true }, "flow-parser": { - "version": "0.134.0", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.134.0.tgz", - "integrity": "sha512-VmRba5YXKmVqIH3xNzUJ4pNobxXEOl6h36m+0f5dZ6/av9YlRpls/yBnPESQ4qBUbyyp7iqoc1Feo1lFw3u1YQ==", + "version": "0.138.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.138.0.tgz", + "integrity": "sha512-LFnTyjrv39UvCWl8NOcpByr/amj8a5k5z7isO2wv4T43nNrUnHQwX3rarTz9zcpHXkDAQv6X4MfQ4ZzJUptpbw==", "dev": true }, "flow-remove-types": { - "version": "2.134.0", - "resolved": "https://registry.npmjs.org/flow-remove-types/-/flow-remove-types-2.134.0.tgz", - "integrity": "sha512-NVtghveE8GbU+980DRZQ0NZYGE7l7FIZm/UU8Ft7QoFgpsU8Tauv/WRLX+Exj4WT+GbAndmyUWZFOtcBfeT+gg==", + "version": "2.138.0", + "resolved": "https://registry.npmjs.org/flow-remove-types/-/flow-remove-types-2.138.0.tgz", + "integrity": "sha512-gWZYpCAcpX5SD7j1S5DrWLWm+ir5LXkkRTrCokTdO5aW6M1cqQmHN5lxwoQTqkP8PfgXI8ILD810TL9CvexpgA==", "dev": true, "requires": { - "flow-parser": "^0.134.0", + "flow-parser": "^0.138.0", "pirates": "^3.0.2", "vlq": "^0.2.1" } @@ -4043,8 +4031,7 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "function-loop": { "version": "1.0.2", @@ -4069,9 +4056,9 @@ } }, "gensync": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", - "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true }, "get-caller-file": { @@ -4079,6 +4066,17 @@ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, + "get-intrinsic": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz", + "integrity": "sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, "get-set-props": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-set-props/-/get-set-props-0.1.0.tgz", @@ -4225,7 +4223,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -4339,9 +4336,9 @@ } }, "hasha": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.1.tgz", - "integrity": "sha512-x15jnRSHTi3VmH+oHtVb9kgU/HuKOK8mjK8iCL3dPQXh4YJlUb9YSI8ZLiiqLAIvY2wuDIlZYZppy8vB2XISkQ==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", + "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", "dev": true, "requires": { "is-stream": "^2.0.0", @@ -4407,9 +4404,9 @@ "dev": true }, "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "dev": true }, "ignore": { @@ -4423,9 +4420,9 @@ "integrity": "sha512-+mQSgMRiFD3L3AOxLYOCxjIq4OnAmo5CIuC+lj5ehCJcPtV++QacEV7FdpzvYxH6DaOySWzQU6RR0lPLy37ckA==" }, "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.2.tgz", + "integrity": "sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -4569,6 +4566,14 @@ "ci-info": "^2.0.0" } }, + "is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "requires": { + "has": "^1.0.3" + } + }, "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -4689,9 +4694,9 @@ "dev": true }, "is-npm": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", - "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==" }, "is-number": { "version": "7.0.0", @@ -5243,13 +5248,21 @@ } }, "jsonfile": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", - "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, "requires": { "graceful-fs": "^4.1.6", - "universalify": "^1.0.0" + "universalify": "^2.0.0" + }, + "dependencies": { + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } } }, "jsprim": { @@ -5520,12 +5533,12 @@ } }, "mem": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/mem/-/mem-6.1.1.tgz", - "integrity": "sha512-Ci6bIfq/UgcxPTYa8dQQ5FY3BzKkT894bwXWXxC/zqs0XgMO2cT20CGkOqda7gZNkmK5VP4x89IGZ6K7hfbn3Q==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-8.0.0.tgz", + "integrity": "sha512-qrcJOe6uD+EW8Wrci1Vdiua/15Xw3n/QnaNXE7varnB6InxSk7nu3/i5jfy3S6kWxr8WYJ6R1o0afMUtvorTsA==", "requires": { "map-age-cleaner": "^0.1.3", - "mimic-fn": "^3.0.0" + "mimic-fn": "^3.1.0" }, "dependencies": { "mimic-fn": { @@ -6312,34 +6325,13 @@ "dev": true }, "object-is": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", - "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.4.tgz", + "integrity": "sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.6", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", - "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - } + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" } }, "object-keys": { @@ -6358,13 +6350,13 @@ } }, "object.assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.1.tgz", - "integrity": "sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "dev": true, "requires": { + "call-bind": "^1.0.0", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.0", "has-symbols": "^1.0.1", "object-keys": "^1.1.1" } @@ -6379,32 +6371,33 @@ } }, "object.values": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", - "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.2.tgz", + "integrity": "sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag==", "dev": true, "requires": { + "call-bind": "^1.0.0", "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", + "es-abstract": "^1.18.0-next.1", "has": "^1.0.3" }, "dependencies": { "es-abstract": { - "version": "1.17.6", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", - "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", "object-keys": "^1.1.1", - "object.assign": "^4.1.0", + "object.assign": "^4.1.1", "string.prototype.trimend": "^1.0.1", "string.prototype.trimstart": "^1.0.1" } @@ -6819,9 +6812,9 @@ "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" }, "prettier": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.4.tgz", - "integrity": "sha512-SVJIQ51spzFDvh4fIbCLvciiDMCrRhlN3mbZvv/+ycjvmF5E73bKdGfU8QDLNmjYJf+lsGnDBC4UUnvTe5OO0w==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz", + "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==", "dev": true }, "prettier-linter-helpers": { @@ -6937,9 +6930,9 @@ "dev": true }, "pupa": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.0.1.tgz", - "integrity": "sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", "requires": { "escape-goat": "^2.0.0" } @@ -6999,9 +6992,9 @@ } }, "react": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", - "integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==", + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", "dev": true, "requires": { "loose-envify": "^1.1.0", @@ -7016,9 +7009,9 @@ "dev": true }, "react-test-renderer": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.13.1.tgz", - "integrity": "sha512-Sn2VRyOK2YJJldOqoh8Tn/lWQ+ZiKhyZTPtaO0Q6yNj+QDbmRkVFap6pZPy3YQk8DScRDfyqm/KxKYP9gCMRiQ==", + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.14.0.tgz", + "integrity": "sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg==", "dev": true, "requires": { "object-assign": "^4.1.1", @@ -7173,9 +7166,9 @@ } }, "readdirp": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", - "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", "requires": { "picomatch": "^2.2.1" } @@ -7225,27 +7218,6 @@ "requires": { "define-properties": "^1.1.3", "es-abstract": "^1.17.0-next.1" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.6", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", - "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - } } }, "regexpp": { @@ -7255,9 +7227,9 @@ "dev": true }, "registry-auth-token": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.0.tgz", - "integrity": "sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", + "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", "requires": { "rc": "^1.2.8" } @@ -7343,10 +7315,11 @@ "dev": true }, "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", "requires": { + "is-core-module": "^2.1.0", "path-parse": "^1.0.6" } }, @@ -7416,9 +7389,9 @@ } }, "run-parallel": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", - "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==" + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz", + "integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==" }, "safe-buffer": { "version": "5.1.2", @@ -7550,15 +7523,15 @@ "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" }, "sinon": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.0.3.tgz", - "integrity": "sha512-IKo9MIM111+smz9JGwLmw5U1075n1YXeAq8YeSFlndCLhAL5KGn6bLgu7b/4AYHTV/LcEMcRm2wU2YiL55/6Pg==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.1.tgz", + "integrity": "sha512-naPfsamB5KEE1aiioaoqJ6MEhdUs/2vtI5w1hPAXX/UwvoPjXcwh1m5HiKx0HGgKR8lQSoFIgY5jM6KK8VrS9w==", "dev": true, "requires": { - "@sinonjs/commons": "^1.7.2", + "@sinonjs/commons": "^1.8.1", "@sinonjs/fake-timers": "^6.0.1", "@sinonjs/formatio": "^5.0.1", - "@sinonjs/samsam": "^5.1.0", + "@sinonjs/samsam": "^5.2.0", "diff": "^4.0.2", "nise": "^4.0.4", "supports-color": "^7.1.0" @@ -7824,9 +7797,9 @@ } }, "spdx-license-ids": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz", - "integrity": "sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw==" + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", + "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==" }, "split-string": { "version": "3.1.0", @@ -7860,9 +7833,9 @@ } }, "stack-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.2.tgz", - "integrity": "sha512-0H7QK2ECz3fyZMzQ8rH0j2ykpfbnd20BFtfg/SqVC2+sCTtcw0aDTGB7dk+de4U4uUeuz6nOtJcrkFFLG1B0Rg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==", "requires": { "escape-string-regexp": "^2.0.0" }, @@ -7929,65 +7902,23 @@ } }, "string.prototype.trimend": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", - "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", + "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.6", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", - "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - } + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" } }, "string.prototype.trimstart": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", - "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", + "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.6", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", - "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - } + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" } }, "string_decoder": { @@ -8198,9 +8129,9 @@ } }, "tap": { - "version": "14.10.8", - "resolved": "https://registry.npmjs.org/tap/-/tap-14.10.8.tgz", - "integrity": "sha512-aamkWefJ0G8GGf9t5LWFtrNF5tfVd8ut/tDUianLF6N4621ERITIl0qkocWCVEnsM6hZnaMKa+SggSAaBlC2tA==", + "version": "14.11.0", + "resolved": "https://registry.npmjs.org/tap/-/tap-14.11.0.tgz", + "integrity": "sha512-z8qnNFVyIjLh/bNoTLFRkEk09XZUDAZbCkz/BjvHHly3ao5H+y60gPnedALfheEjA6dA4tpp/mrKq2NWlMuq0A==", "dev": true, "requires": { "@types/react": "^16.9.16", @@ -8233,7 +8164,7 @@ "rimraf": "^2.7.1", "signal-exit": "^3.0.0", "source-map-support": "^0.5.16", - "stack-utils": "^1.0.2", + "stack-utils": "^1.0.3", "tap-mocha-reporter": "^5.0.0", "tap-parser": "^10.0.1", "tap-yaml": "^1.0.0", @@ -9168,10 +9099,21 @@ } }, "stack-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", - "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==", - "dev": true + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.4.tgz", + "integrity": "sha512-IPDJfugEGbfizBwBZRZ3xpccMdRyP5lqsBWXGQWimVjua/ccLCeMOAVjlc1R7LxFjo5sEDhyNIXd8mo/AiDS9w==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } }, "string-length": { "version": "3.1.0", @@ -9490,9 +9432,9 @@ } }, "tempy": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.7.1.tgz", - "integrity": "sha512-vXPxwOyaNVi9nyczO16mxmHGpl6ASC5/TVhRRHpqeYHvKQm58EaWNvZXxAhR0lYYnBOQFjXjhzeLsaXdjxLjRg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.0.tgz", + "integrity": "sha512-eLXG5B1G0mRPHmgH2WydPl5v4jH35qEn3y/rA/aahKhIa91Pn119SsU7n7v/433gtT9ONzC8ISvNHIh2JSTm0w==", "dev": true, "requires": { "del": "^6.0.0", @@ -9511,9 +9453,9 @@ } }, "term-size": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz", - "integrity": "sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw==" + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", + "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==" }, "test-exclude": { "version": "6.0.0", @@ -9538,9 +9480,9 @@ "integrity": "sha1-mcW/VZWJZq9tBtg73zgA3IL67F0=" }, "timers-browserify": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", - "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", "dev": true, "requires": { "setimmediate": "^1.0.4" @@ -9710,6 +9652,22 @@ "update-notifier": "^4.1.0" }, "dependencies": { + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "is-npm": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", + "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", + "dev": true + }, "read-pkg-up": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", @@ -9726,13 +9684,34 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true + }, + "update-notifier": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", + "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==", + "dev": true, + "requires": { + "boxen": "^4.2.0", + "chalk": "^3.0.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.3.1", + "is-npm": "^4.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.0.0", + "pupa": "^2.0.1", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + } } } }, "tslib": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, "tsutils": { @@ -9794,9 +9773,9 @@ } }, "typescript": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.3.tgz", - "integrity": "sha512-tEu6DGxGgRJPb/mVPIZ48e69xCn2yRmCgYmDugAVwmJ6o+0u1RI18eO7E7WBTLYLaEVVOhwQmcdhQHweux/WPg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.2.tgz", + "integrity": "sha512-thGloWsGH3SOxv1SoY7QojKi0tc+8FnOmiarEGMbd/lar7QOEd3hvlx3Fp5y6FlDUGl9L+pd4n2e+oToGMmhRQ==", "dev": true }, "unc-path-regex": { @@ -9905,34 +9884,24 @@ } }, "update-notifier": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.1.tgz", - "integrity": "sha512-9y+Kds0+LoLG6yN802wVXoIfxYEwh3FlZwzMwpCZp62S2i1/Jzeqb9Eeeju3NSHccGGasfGlK5/vEHbAifYRDg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.0.1.tgz", + "integrity": "sha512-BuVpRdlwxeIOvmc32AGYvO1KVdPlsmqSh8KDDBxS6kDE5VR7R8OMP1d8MdhaVBvxl4H3551k9akXr0Y1iIB2Wg==", "requires": { "boxen": "^4.2.0", - "chalk": "^3.0.0", + "chalk": "^4.1.0", "configstore": "^5.0.1", "has-yarn": "^2.1.0", "import-lazy": "^2.1.0", "is-ci": "^2.0.0", - "is-installed-globally": "^0.3.1", - "is-npm": "^4.0.0", + "is-installed-globally": "^0.3.2", + "is-npm": "^5.0.0", "is-yarn-global": "^0.3.0", - "latest-version": "^5.0.0", - "pupa": "^2.0.1", + "latest-version": "^5.1.0", + "pupa": "^2.1.1", + "semver": "^7.3.2", "semver-diff": "^3.1.1", "xdg-basedir": "^4.0.0" - }, - "dependencies": { - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } } }, "uri-js": { @@ -10012,15 +9981,15 @@ "dev": true }, "v8-compile-cache": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", - "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", + "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", "dev": true }, "v8-to-istanbul": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-5.0.1.tgz", - "integrity": "sha512-mbDNjuDajqYe3TXFk5qxcQy8L1msXNE37WTlLoqqpBfRsimbNcrlhQlDPntmECEcUvdC+AQ8CyMMf6EUx1r74Q==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.0.0.tgz", + "integrity": "sha512-fLL2rFuQpMtm9r8hrAV2apXX/WqHJ6+IC4/eQVdMDGBUgH/YMV4Gv3duk3kjmyg6uiQWBAA9nJwue4iJUOkHeA==", "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.1", @@ -10151,33 +10120,33 @@ "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" }, "xo": { - "version": "0.33.1", - "resolved": "https://registry.npmjs.org/xo/-/xo-0.33.1.tgz", - "integrity": "sha512-kH/qjKzvhkXPRwFnf4WpiGb2509eyk1J1791Jtxpr7LlGiGtOtSo5PQpHaUrvRusAbAv967wGMBtG48j3eGLQA==", + "version": "0.35.0", + "resolved": "https://registry.npmjs.org/xo/-/xo-0.35.0.tgz", + "integrity": "sha512-0k9m8pHilTzAYqw3L7qEXxuo3X87M2pYDBSzLvFD5aIpXEydZvSHLR7xbGrXKpK+sWGi825lL7+iEC1s/XZCRQ==", "dev": true, "requires": { - "@typescript-eslint/eslint-plugin": "^3.9.0", - "@typescript-eslint/parser": "^3.9.0", + "@typescript-eslint/eslint-plugin": "^4.8.1", + "@typescript-eslint/parser": "^4.8.1", "arrify": "^2.0.1", "cosmiconfig": "^7.0.0", - "debug": "^4.1.1", - "eslint": "^7.6.0", - "eslint-config-prettier": "^6.11.0", - "eslint-config-xo": "^0.32.1", - "eslint-config-xo-typescript": "^0.32.0", + "debug": "^4.3.1", + "eslint": "^7.13.0", + "eslint-config-prettier": "^6.15.0", + "eslint-config-xo": "^0.33.1", + "eslint-config-xo-typescript": "^0.36.0", "eslint-formatter-pretty": "^4.0.0", - "eslint-import-resolver-webpack": "^0.12.1", - "eslint-plugin-ava": "^10.5.0", + "eslint-import-resolver-webpack": "^0.13.0", + "eslint-plugin-ava": "^11.0.0", "eslint-plugin-eslint-comments": "^3.2.0", - "eslint-plugin-import": "^2.20.2", + "eslint-plugin-import": "^2.22.1", "eslint-plugin-no-use-extend-native": "^0.5.0", "eslint-plugin-node": "^11.1.0", - "eslint-plugin-prettier": "^3.1.3", + "eslint-plugin-prettier": "^3.1.4", "eslint-plugin-promise": "^4.2.1", - "eslint-plugin-unicorn": "^21.0.0", + "eslint-plugin-unicorn": "^23.0.0", "find-cache-dir": "^3.3.1", - "find-up": "^4.1.0", - "fs-extra": "^9.0.0", + "find-up": "^5.0.0", + "fs-extra": "^9.0.1", "get-stdin": "^8.0.0", "globby": "^9.0.0", "has-flag": "^4.0.0", @@ -10185,20 +10154,20 @@ "is-path-inside": "^3.0.2", "json-stable-stringify-without-jsonify": "^1.0.1", "json5": "^2.1.3", - "lodash": "^4.17.19", - "meow": "^7.0.1", + "lodash": "^4.17.20", + "meow": "^8.0.0", "micromatch": "^4.0.2", "open-editor": "^2.0.1", "p-reduce": "^2.1.0", "path-exists": "^4.0.0", - "prettier": "2.0.4", + "prettier": "^2.1.2", "resolve-cwd": "^3.0.0", "resolve-from": "^5.0.0", "semver": "^7.3.2", "slash": "^3.0.0", "to-absolute-glob": "^2.0.2", - "typescript": "^3.9.7", - "update-notifier": "^4.1.0" + "typescript": "^4.1.2", + "update-notifier": "^5.0.1" }, "dependencies": { "@nodelib/fs.stat": { @@ -10325,6 +10294,16 @@ "pkg-dir": "^4.1.0" } }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, "glob-parent": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", @@ -10370,6 +10349,15 @@ } } }, + "hosted-git-info": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.7.tgz", + "integrity": "sha512-fWqc0IcuXs+BmE9orLDyVykAG9GJtGLGuZAAqgcckPgv5xad4AcXGIv8galtQvlwutxSlaMcdw7BUtq2EIvqCQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", @@ -10396,6 +10384,73 @@ } } }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "meow": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.0.0.tgz", + "integrity": "sha512-nbsTRz2fwniJBFgUkcdISq8y/q9n9VbiHYbfwklFh5V4V2uAcxtKQkDc0yCLPM/kP0d+inZBewn3zJqewHE7kg==", + "dev": true, + "requires": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + } + }, + "normalize-package-data": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.0.tgz", + "integrity": "sha512-6lUjEI0d3v6kFrtgA/lOx4zHCWULXsFNIjHolnZCKCTLA6m/G625cdn3O7eNmT0iD3jfo6HZ9cdImGZwf21prw==", + "dev": true, + "requires": { + "hosted-git-info": "^3.0.6", + "resolve": "^1.17.0", + "semver": "^7.3.2", + "validate-npm-package-license": "^3.0.1" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, "path-type": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", @@ -10413,6 +10468,62 @@ } } }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, "to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", @@ -10423,10 +10534,16 @@ "repeat-string": "^1.6.1" } }, - "typescript": { - "version": "3.9.7", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", - "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==", + "type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true } } @@ -10438,9 +10555,9 @@ "dev": true }, "y18n": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.1.tgz", - "integrity": "sha512-/jJ831jEs4vGDbYPQp4yGKDYPSCCEQ45uZWJHE1AoYBzqdZi8+LDWas0z4HrmJXmKdpFsTiowSHXdxyFhpmdMg==" + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", + "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==" }, "yallist": { "version": "2.1.2", @@ -10461,23 +10578,23 @@ "dev": true }, "yargs": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.0.3.tgz", - "integrity": "sha512-6+nLw8xa9uK1BOEOykaiYAJVh6/CjxWXK/q9b5FpRgNslt8s22F2xMBqVIKgCRjNgGvGPBy8Vog7WN7yh4amtA==", + "version": "16.1.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.1.1.tgz", + "integrity": "sha512-hAD1RcFP/wfgfxgMVswPE+z3tlPFtxG8/yWUrG2i17sTWGCGqWnxKcLTF4cUKDUK8fzokwsmO9H0TDkRbMHy8w==", "requires": { - "cliui": "^7.0.0", - "escalade": "^3.0.2", + "cliui": "^7.0.2", + "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.0", - "y18n": "^5.0.1", - "yargs-parser": "^20.0.0" + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" } }, "yargs-parser": { - "version": "20.2.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.0.tgz", - "integrity": "sha512-2agPoRFPoIcFzOIp6656gcvsg2ohtscpw2OINr/q46+Sq41xz2OYLqx5HRHabmFU1OARIPAYH5uteICE7mn/5A==" + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==" }, "yn": { "version": "3.1.1", @@ -10485,6 +10602,12 @@ "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + }, "zen-observable": { "version": "0.8.15", "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", diff --git a/package.json b/package.json index e5f9de1dc..63963d8a8 100644 --- a/package.json +++ b/package.json @@ -57,14 +57,14 @@ ], "dependencies": { "@concordance/react": "^2.0.0", - "acorn": "^8.0.1", + "acorn": "^8.0.4", "acorn-walk": "^8.0.0", - "ansi-styles": "^4.2.1", + "ansi-styles": "^4.3.0", "arrgv": "^1.0.2", "arrify": "^2.0.1", "callsites": "^3.1.0", "chalk": "^4.1.0", - "chokidar": "^3.4.2", + "chokidar": "^3.4.3", "chunkd": "^2.0.1", "ci-info": "^2.0.0", "ci-parallel-vars": "^1.0.1", @@ -76,9 +76,9 @@ "concordance": "^5.0.1", "convert-source-map": "^1.7.0", "currently-unhandled": "^0.4.1", - "debug": "^4.2.0", + "debug": "^4.3.1", "del": "^6.0.0", - "emittery": "^0.7.1", + "emittery": "^0.7.2", "equal-length": "^1.0.0", "figures": "^3.2.0", "globby": "^11.0.1", @@ -91,7 +91,7 @@ "lodash": "^4.17.20", "matcher": "^3.0.0", "md5-hex": "^3.0.1", - "mem": "^6.1.1", + "mem": "^8.0.0", "ms": "^2.1.2", "ora": "^5.1.0", "p-event": "^4.2.0", @@ -104,40 +104,40 @@ "resolve-cwd": "^3.0.0", "slash": "^3.0.0", "source-map-support": "^0.5.19", - "stack-utils": "^2.0.2", + "stack-utils": "^2.0.3", "strip-ansi": "^6.0.0", "supertap": "^1.0.0", "temp-dir": "^2.0.0", "trim-off-newlines": "^1.0.1", - "update-notifier": "^4.1.1", + "update-notifier": "^5.0.1", "write-file-atomic": "^3.0.3", - "yargs": "^16.0.3" + "yargs": "^16.1.1" }, "devDependencies": { "@ava/babel": "^1.0.1", "@ava/test": "github:avajs/test", - "@babel/plugin-proposal-do-expressions": "^7.10.4", + "@babel/plugin-proposal-do-expressions": "^7.12.1", "@sinonjs/fake-timers": "^6.0.1", "ansi-escapes": "^4.3.1", - "c8": "^7.3.1", + "c8": "^7.3.5", "delay": "^4.4.0", "esm": "^3.2.25", - "execa": "^4.0.3", + "execa": "^4.1.0", "get-stream": "^6.0.0", "it-first": "^1.0.4", "proxyquire": "^2.1.3", - "react": "^16.13.1", - "react-test-renderer": "^16.13.1", + "react": "^16.14.0", + "react-test-renderer": "^16.14.0", "replace-string": "^3.1.0", - "sinon": "^9.0.3", + "sinon": "^9.2.1", "source-map-fixtures": "^2.1.0", - "tap": "^14.10.8", + "tap": "^14.11.0", "temp-write": "^4.0.0", - "tempy": "^0.7.1", + "tempy": "^1.0.0", "touch": "^3.1.0", "tsd": "^0.13.1", - "typescript": "^4.0.3", - "xo": "^0.33.1", + "typescript": "^4.1.2", + "xo": "^0.35.0", "zen-observable": "^0.8.15" } } diff --git a/plugin.d.ts b/plugin.d.ts index 0993f4fce..522bf35c8 100644 --- a/plugin.d.ts +++ b/plugin.d.ts @@ -1,12 +1,10 @@ export namespace SharedWorker { export type ProtocolIdentifier = 'experimental'; - /* eslint-disable @typescript-eslint/method-signature-style */ export type FactoryOptions = { negotiateProtocol (supported: readonly ['experimental']): Experimental.Protocol; // Add overloads for additional protocols. }; - /* eslint-enable @typescript-eslint/method-signature-style */ export type Factory = (options: FactoryOptions) => void; diff --git a/test-d/macros.ts b/test-d/macros.ts index f8a9cf28d..230130d5a 100644 --- a/test-d/macros.ts +++ b/test-d/macros.ts @@ -39,13 +39,13 @@ import test, {ExecutionContext, Macro} from '..'; // No arguments { - const pass: Macro<[]> = (t, ...args) => { - expectType<[]>(args); + const pass: Macro<[]> = (t, ...args) => { // eslint-disable-line @typescript-eslint/ban-types + expectType<[]>(args); // eslint-disable-line @typescript-eslint/ban-types }; pass.title = (providedTitle, ...args) => { expectType(providedTitle); - expectType<[]>(args); + expectType<[]>(args); // eslint-disable-line @typescript-eslint/ban-types return ''; }; diff --git a/test-tap/code-excerpt.js b/test-tap/code-excerpt.js index cff1b3c48..e47d52678 100644 --- a/test-tap/code-excerpt.js +++ b/test-tap/code-excerpt.js @@ -3,7 +3,7 @@ require('../lib/chalk').set({level: 1}); const fs = require('fs'); const tempWrite = require('temp-write'); -const {Instance: ChalkInstance} = require('chalk'); +const {Instance: ChalkInstance} = require('chalk'); // eslint-disable-line unicorn/import-style const {test} = require('tap'); const codeExcerpt = require('../lib/code-excerpt'); diff --git a/test-tap/fixture/report/regular/nested-objects.js b/test-tap/fixture/report/regular/nested-objects.js index 3acef04c2..7354dbbec 100644 --- a/test-tap/fixture/report/regular/nested-objects.js +++ b/test-tap/fixture/report/regular/nested-objects.js @@ -1,5 +1,5 @@ const test = require('../../../..'); -const util = require('util'); +const util = require('util'); // eslint-disable-line unicorn/import-style util.inspect.defaultOptions.depth = 4; diff --git a/test-tap/reporters/mini.edgecases.v15.log b/test-tap/reporters/mini.edgecases.v15.log index 124dfe144..e3e8c408d 100644 --- a/test-tap/reporters/mini.edgecases.v15.log +++ b/test-tap/reporters/mini.edgecases.v15.log @@ -34,11 +34,6 @@ TypeError: test is not a function › Object. (test-tap/fixture/report/edgecases/import-and-use-test-member.js:3:1) - › Module._compile (node:internal/modules/cjs/loader:1083:30) - › Module.load (node:internal/modules/cjs/loader:948:32) - › Function.Module._load (node:internal/modules/cjs/loader:789:14) - › Module.require (node:internal/modules/cjs/loader:972:19) - › require (node:internal/modules/cjs/helpers:88:18) @@ -52,11 +47,6 @@ Error: throws › Object. (test-tap/fixture/report/edgecases/throws.js:1:7) - › Module._compile (node:internal/modules/cjs/loader:1083:30) - › Module.load (node:internal/modules/cjs/loader:948:32) - › Function.Module._load (node:internal/modules/cjs/loader:789:14) - › Module.require (node:internal/modules/cjs/loader:972:19) - › require (node:internal/modules/cjs/helpers:88:18) ─ diff --git a/test-tap/reporters/mini.failfast.v10.log b/test-tap/reporters/mini.failfast.v10.log index a2928249b..b27400463 100644 --- a/test-tap/reporters/mini.failfast.v10.log +++ b/test-tap/reporters/mini.failfast.v10.log @@ -18,7 +18,6 @@ Test failed via `t.fail()` › t (test-tap/fixture/report/failfast/a.js:3:22) - › process._tickCallback (internal/process/next_tick.js:68:7) ─ diff --git a/test-tap/reporters/mini.failfast.v15.log b/test-tap/reporters/mini.failfast.v15.log index 4678967e5..6aa34aec6 100644 --- a/test-tap/reporters/mini.failfast.v15.log +++ b/test-tap/reporters/mini.failfast.v15.log @@ -18,7 +18,6 @@ Test failed via `t.fail()` › test-tap/fixture/report/failfast/a.js:3:22 - › processTicksAndRejections (node:internal/process/task_queues:93:5) ─ diff --git a/test-tap/reporters/mini.failfast2.v10.log b/test-tap/reporters/mini.failfast2.v10.log index baddb59e4..5045b56f7 100644 --- a/test-tap/reporters/mini.failfast2.v10.log +++ b/test-tap/reporters/mini.failfast2.v10.log @@ -18,7 +18,6 @@ Test failed via `t.fail()` › t (test-tap/fixture/report/failfast2/a.js:3:22) - › process._tickCallback (internal/process/next_tick.js:68:7) ─ diff --git a/test-tap/reporters/mini.failfast2.v15.log b/test-tap/reporters/mini.failfast2.v15.log index 37594f929..6f96c428e 100644 --- a/test-tap/reporters/mini.failfast2.v15.log +++ b/test-tap/reporters/mini.failfast2.v15.log @@ -18,7 +18,6 @@ Test failed via `t.fail()` › test-tap/fixture/report/failfast2/a.js:3:22 - › processTicksAndRejections (node:internal/process/task_queues:93:5) ─ diff --git a/test-tap/reporters/mini.regular.v10.log b/test-tap/reporters/mini.regular.v10.log index a05131d46..6659758ae 100644 --- a/test-tap/reporters/mini.regular.v10.log +++ b/test-tap/reporters/mini.regular.v10.log @@ -193,7 +193,6 @@ } › t (test-tap/fixture/report/regular/nested-objects.js:28:4) - › process._tickCallback (internal/process/next_tick.js:68:7) @@ -217,7 +216,6 @@ } › t (test-tap/fixture/report/regular/nested-objects.js:54:4) - › process._tickCallback (internal/process/next_tick.js:68:7) @@ -232,7 +230,6 @@ Test failed via `t.fail()` › t (test-tap/fixture/report/regular/output-in-hook.js:34:4) - › process._tickCallback (internal/process/next_tick.js:68:7) @@ -247,7 +244,6 @@ Test failed via `t.fail()` › t (test-tap/fixture/report/regular/test.js:9:22) - › process._tickCallback (internal/process/next_tick.js:68:7) @@ -255,8 +251,6 @@ Error: Test was expected to fail, but succeeded, you should stop marking the test as failing - › process._tickCallback (internal/process/next_tick.js:68:7) - test › logs @@ -273,7 +267,6 @@ Test failed via `t.fail()` › t (test-tap/fixture/report/regular/test.js:18:4) - › process._tickCallback (internal/process/next_tick.js:68:7) @@ -291,7 +284,6 @@ + 'bar' › t (test-tap/fixture/report/regular/test.js:22:4) - › process._tickCallback (internal/process/next_tick.js:68:7) @@ -311,7 +303,6 @@ => '' › t (test-tap/fixture/report/regular/test.js:27:4) - › process._tickCallback (internal/process/next_tick.js:68:7) @@ -341,7 +332,6 @@ › fn (test-tap/fixture/report/regular/test.js:32:9) › t (test-tap/fixture/report/regular/test.js:35:11) - › process._tickCallback (internal/process/next_tick.js:68:7) @@ -371,7 +361,6 @@ › fn (test-tap/fixture/report/regular/test.js:40:9) › t (test-tap/fixture/report/regular/test.js:43:14) - › process._tickCallback (internal/process/next_tick.js:68:7) @@ -381,8 +370,6 @@ null - › process._tickCallback (internal/process/next_tick.js:68:7) - traces-in-t-throws › throws @@ -406,7 +393,6 @@ › throwError (test-tap/fixture/report/regular/traces-in-t-throws.js:4:8) › t.throws._avaThrowsHelperEnd (test-tap/fixture/report/regular/traces-in-t-throws.js:12:17) › t (test-tap/fixture/report/regular/traces-in-t-throws.js:12:4) - › process._tickCallback (internal/process/next_tick.js:68:7) @@ -427,7 +413,6 @@ › throwError (test-tap/fixture/report/regular/traces-in-t-throws.js:4:8) › t.notThrows._avaThrowsHelperEnd (test-tap/fixture/report/regular/traces-in-t-throws.js:16:20) › t (test-tap/fixture/report/regular/traces-in-t-throws.js:16:4) - › process._tickCallback (internal/process/next_tick.js:68:7) @@ -448,7 +433,6 @@ › throwError (test-tap/fixture/report/regular/traces-in-t-throws.js:4:8) › t.notThrowsAsync (test-tap/fixture/report/regular/traces-in-t-throws.js:20:25) › t (test-tap/fixture/report/regular/traces-in-t-throws.js:20:4) - › process._tickCallback (internal/process/next_tick.js:68:7) @@ -469,7 +453,6 @@ › throwError (test-tap/fixture/report/regular/traces-in-t-throws.js:4:8) › t.throwsAsync (test-tap/fixture/report/regular/traces-in-t-throws.js:24:22) › t (test-tap/fixture/report/regular/traces-in-t-throws.js:24:4) - › process._tickCallback (internal/process/next_tick.js:68:7) @@ -493,7 +476,6 @@ › returnRejectedPromise (test-tap/fixture/report/regular/traces-in-t-throws.js:8:24) › t (test-tap/fixture/report/regular/traces-in-t-throws.js:28:11) - › process._tickCallback (internal/process/next_tick.js:68:7) @@ -536,7 +518,6 @@ Error: Can’t catch me › passes (test-tap/fixture/report/regular/unhandled-rejection.js:4:17) - › process._tickCallback (internal/process/next_tick.js:68:7) diff --git a/test-tap/reporters/mini.regular.v12.log b/test-tap/reporters/mini.regular.v12.log index 6977a162b..985df31c0 100644 --- a/test-tap/reporters/mini.regular.v12.log +++ b/test-tap/reporters/mini.regular.v12.log @@ -504,7 +504,6 @@ Error: Can’t catch me › Immediate. (test-tap/fixture/report/regular/uncaught-exception.js:5:9) - › processImmediate (internal/timers.js) diff --git a/test-tap/reporters/mini.regular.v14.log b/test-tap/reporters/mini.regular.v14.log index 6977a162b..985df31c0 100644 --- a/test-tap/reporters/mini.regular.v14.log +++ b/test-tap/reporters/mini.regular.v14.log @@ -504,7 +504,6 @@ Error: Can’t catch me › Immediate. (test-tap/fixture/report/regular/uncaught-exception.js:5:9) - › processImmediate (internal/timers.js) diff --git a/test-tap/reporters/mini.regular.v15.log b/test-tap/reporters/mini.regular.v15.log index 5fdc1fe66..985df31c0 100644 --- a/test-tap/reporters/mini.regular.v15.log +++ b/test-tap/reporters/mini.regular.v15.log @@ -193,7 +193,6 @@ } › test-tap/fixture/report/regular/nested-objects.js:28:4 - › processTicksAndRejections (node:internal/process/task_queues:93:5) @@ -217,7 +216,6 @@ } › test-tap/fixture/report/regular/nested-objects.js:54:4 - › processTicksAndRejections (node:internal/process/task_queues:93:5) @@ -232,7 +230,6 @@ Test failed via `t.fail()` › test-tap/fixture/report/regular/output-in-hook.js:34:4 - › processTicksAndRejections (node:internal/process/task_queues:93:5) @@ -247,7 +244,6 @@ Test failed via `t.fail()` › test-tap/fixture/report/regular/test.js:9:22 - › processTicksAndRejections (node:internal/process/task_queues:93:5) @@ -255,8 +251,6 @@ Error: Test was expected to fail, but succeeded, you should stop marking the test as failing - › processTicksAndRejections (node:internal/process/task_queues:93:5) - test › logs @@ -273,7 +267,6 @@ Test failed via `t.fail()` › test-tap/fixture/report/regular/test.js:18:4 - › processTicksAndRejections (node:internal/process/task_queues:93:5) @@ -291,7 +284,6 @@ + 'bar' › test-tap/fixture/report/regular/test.js:22:4 - › processTicksAndRejections (node:internal/process/task_queues:93:5) @@ -311,7 +303,6 @@ => '' › test-tap/fixture/report/regular/test.js:27:4 - › processTicksAndRejections (node:internal/process/task_queues:93:5) @@ -341,7 +332,6 @@ › fn (test-tap/fixture/report/regular/test.js:32:9) › test-tap/fixture/report/regular/test.js:35:11 - › processTicksAndRejections (node:internal/process/task_queues:93:5) @@ -371,7 +361,6 @@ › fn (test-tap/fixture/report/regular/test.js:40:9) › test-tap/fixture/report/regular/test.js:43:14 - › processTicksAndRejections (node:internal/process/task_queues:93:5) @@ -381,8 +370,6 @@ null - › processTicksAndRejections (node:internal/process/task_queues:93:5) - traces-in-t-throws › throws @@ -406,7 +393,6 @@ › throwError (test-tap/fixture/report/regular/traces-in-t-throws.js:4:8) › test-tap/fixture/report/regular/traces-in-t-throws.js:12:17 › test-tap/fixture/report/regular/traces-in-t-throws.js:12:4 - › processTicksAndRejections (node:internal/process/task_queues:93:5) @@ -427,7 +413,6 @@ › throwError (test-tap/fixture/report/regular/traces-in-t-throws.js:4:8) › test-tap/fixture/report/regular/traces-in-t-throws.js:16:20 › test-tap/fixture/report/regular/traces-in-t-throws.js:16:4 - › processTicksAndRejections (node:internal/process/task_queues:93:5) @@ -448,7 +433,6 @@ › throwError (test-tap/fixture/report/regular/traces-in-t-throws.js:4:8) › test-tap/fixture/report/regular/traces-in-t-throws.js:20:25 › test-tap/fixture/report/regular/traces-in-t-throws.js:20:4 - › processTicksAndRejections (node:internal/process/task_queues:93:5) @@ -469,7 +453,6 @@ › throwError (test-tap/fixture/report/regular/traces-in-t-throws.js:4:8) › t.throwsAsync.instanceOf (test-tap/fixture/report/regular/traces-in-t-throws.js:24:22) › test-tap/fixture/report/regular/traces-in-t-throws.js:24:4 - › processTicksAndRejections (node:internal/process/task_queues:93:5) @@ -493,7 +476,6 @@ › returnRejectedPromise (test-tap/fixture/report/regular/traces-in-t-throws.js:8:24) › test-tap/fixture/report/regular/traces-in-t-throws.js:28:11 - › processTicksAndRejections (node:internal/process/task_queues:93:5) @@ -508,11 +490,6 @@ TypeError: test.serial.test is not a function › Object. (test-tap/fixture/report/regular/bad-test-chain.js:3:13) - › Module._compile (node:internal/modules/cjs/loader:1083:30) - › Module.load (node:internal/modules/cjs/loader:948:32) - › Function.Module._load (node:internal/modules/cjs/loader:789:14) - › Module.require (node:internal/modules/cjs/loader:972:19) - › require (node:internal/modules/cjs/helpers:88:18) @@ -527,7 +504,6 @@ Error: Can’t catch me › Immediate. (test-tap/fixture/report/regular/uncaught-exception.js:5:9) - › processImmediate (node:internal/timers:462:21) @@ -542,7 +518,6 @@ Error: Can’t catch me › passes (test-tap/fixture/report/regular/unhandled-rejection.js:4:17) - › processTicksAndRejections (node:internal/process/task_queues:93:5) diff --git a/test-tap/reporters/tap.edgecases.v15.log b/test-tap/reporters/tap.edgecases.v15.log index dd59a4684..838ef9d3a 100644 --- a/test-tap/reporters/tap.edgecases.v15.log +++ b/test-tap/reporters/tap.edgecases.v15.log @@ -11,16 +11,6 @@ not ok 2 - TypeError: test is not a function at: >- Object. (test-tap/fixture/report/edgecases/import-and-use-test-member.js:3:1) - - Module._compile (node:internal/modules/cjs/loader:1083:30) - - Module.load (node:internal/modules/cjs/loader:948:32) - - Function.Module._load (node:internal/modules/cjs/loader:789:14) - - Module.require (node:internal/modules/cjs/loader:972:19) - - require (node:internal/modules/cjs/helpers:88:18) ... ---tty-stream-chunk-separator # import-and-use-test-member.js exited with a non-zero exit code: 1 @@ -34,13 +24,7 @@ not ok 5 - Error: throws --- name: Error message: throws - at: |- - Object. (test-tap/fixture/report/edgecases/throws.js:1:7) - Module._compile (node:internal/modules/cjs/loader:1083:30) - Module.load (node:internal/modules/cjs/loader:948:32) - Function.Module._load (node:internal/modules/cjs/loader:789:14) - Module.require (node:internal/modules/cjs/loader:972:19) - require (node:internal/modules/cjs/helpers:88:18) + at: 'Object. (test-tap/fixture/report/edgecases/throws.js:1:7)' ... ---tty-stream-chunk-separator # throws.js exited with a non-zero exit code: 1 diff --git a/test-tap/reporters/tap.failfast.v10.log b/test-tap/reporters/tap.failfast.v10.log index e20ac8df8..af03c5b32 100644 --- a/test-tap/reporters/tap.failfast.v10.log +++ b/test-tap/reporters/tap.failfast.v10.log @@ -6,9 +6,7 @@ not ok 1 - a › fails name: AssertionError message: Test failed via `t.fail()` assertion: fail - at: |- - t (test-tap/fixture/report/failfast/a.js:3:22) - process._tickCallback (internal/process/next_tick.js:68:7) + at: 't (test-tap/fixture/report/failfast/a.js:3:22)' ... ---tty-stream-chunk-separator diff --git a/test-tap/reporters/tap.failfast.v15.log b/test-tap/reporters/tap.failfast.v15.log index 40838e261..a38a7d8ef 100644 --- a/test-tap/reporters/tap.failfast.v15.log +++ b/test-tap/reporters/tap.failfast.v15.log @@ -6,9 +6,7 @@ not ok 1 - a › fails name: AssertionError message: Test failed via `t.fail()` assertion: fail - at: |- - test-tap/fixture/report/failfast/a.js:3:22 - processTicksAndRejections (node:internal/process/task_queues:93:5) + at: 'test-tap/fixture/report/failfast/a.js:3:22' ... ---tty-stream-chunk-separator diff --git a/test-tap/reporters/tap.failfast2.v10.log b/test-tap/reporters/tap.failfast2.v10.log index 3cf71cff0..eb8f38c15 100644 --- a/test-tap/reporters/tap.failfast2.v10.log +++ b/test-tap/reporters/tap.failfast2.v10.log @@ -6,9 +6,7 @@ not ok 1 - a › fails name: AssertionError message: Test failed via `t.fail()` assertion: fail - at: |- - t (test-tap/fixture/report/failfast2/a.js:3:22) - process._tickCallback (internal/process/next_tick.js:68:7) + at: 't (test-tap/fixture/report/failfast2/a.js:3:22)' ... ---tty-stream-chunk-separator # 1 test remaining in a.js diff --git a/test-tap/reporters/tap.failfast2.v15.log b/test-tap/reporters/tap.failfast2.v15.log index 0c29e6fb9..4300019d7 100644 --- a/test-tap/reporters/tap.failfast2.v15.log +++ b/test-tap/reporters/tap.failfast2.v15.log @@ -6,9 +6,7 @@ not ok 1 - a › fails name: AssertionError message: Test failed via `t.fail()` assertion: fail - at: |- - test-tap/fixture/report/failfast2/a.js:3:22 - processTicksAndRejections (node:internal/process/task_queues:93:5) + at: 'test-tap/fixture/report/failfast2/a.js:3:22' ... ---tty-stream-chunk-separator # 1 test remaining in a.js diff --git a/test-tap/reporters/tap.regular.v10.log b/test-tap/reporters/tap.regular.v10.log index e0d6eddb1..376015c75 100644 --- a/test-tap/reporters/tap.regular.v10.log +++ b/test-tap/reporters/tap.regular.v10.log @@ -32,9 +32,7 @@ not ok 3 - nested-objects › format with max depth 4 + }, + }, } - at: |- - t (test-tap/fixture/report/regular/nested-objects.js:28:4) - process._tickCallback (internal/process/next_tick.js:68:7) + at: 't (test-tap/fixture/report/regular/nested-objects.js:28:4)' ... ---tty-stream-chunk-separator # nested-objects › format like with max depth 4 @@ -52,9 +50,7 @@ not ok 4 - nested-objects › format like with max depth 4 }, }, } - at: |- - t (test-tap/fixture/report/regular/nested-objects.js:54:4) - process._tickCallback (internal/process/next_tick.js:68:7) + at: 't (test-tap/fixture/report/regular/nested-objects.js:54:4)' ... ---tty-stream-chunk-separator # output-in-hook › before hook @@ -80,9 +76,7 @@ not ok 6 - output-in-hook › failing test name: AssertionError message: Test failed via `t.fail()` assertion: fail - at: |- - t (test-tap/fixture/report/regular/output-in-hook.js:34:4) - process._tickCallback (internal/process/next_tick.js:68:7) + at: 't (test-tap/fixture/report/regular/output-in-hook.js:34:4)' ... ---tty-stream-chunk-separator # output-in-hook › afterEach hook for passing test @@ -116,9 +110,7 @@ not ok 10 - test › fails name: AssertionError message: Test failed via `t.fail()` assertion: fail - at: |- - t (test-tap/fixture/report/regular/test.js:9:22) - process._tickCallback (internal/process/next_tick.js:68:7) + at: 't (test-tap/fixture/report/regular/test.js:9:22)' ... ---tty-stream-chunk-separator # test › known failure @@ -131,7 +123,7 @@ not ok 12 - test › no longer failing message: >- Test was expected to fail, but succeeded, you should stop marking the test as failing - at: 'process._tickCallback (internal/process/next_tick.js:68:7)' + at: '' ... ---tty-stream-chunk-separator # test › logs @@ -142,9 +134,7 @@ not ok 13 - test › logs name: AssertionError message: Test failed via `t.fail()` assertion: fail - at: |- - t (test-tap/fixture/report/regular/test.js:18:4) - process._tickCallback (internal/process/next_tick.js:68:7) + at: 't (test-tap/fixture/report/regular/test.js:18:4)' ... ---tty-stream-chunk-separator # test › formatted @@ -156,9 +146,7 @@ not ok 14 - test › formatted 'Difference:': |- - 'foo' + 'bar' - at: |- - t (test-tap/fixture/report/regular/test.js:22:4) - process._tickCallback (internal/process/next_tick.js:68:7) + at: 't (test-tap/fixture/report/regular/test.js:22:4)' ... ---tty-stream-chunk-separator # test › power-assert @@ -169,9 +157,7 @@ not ok 15 - test › power-assert operator: '!!' values: 'Value is not truthy:': '''''' - at: |- - t (test-tap/fixture/report/regular/test.js:27:4) - process._tickCallback (internal/process/next_tick.js:68:7) + at: 't (test-tap/fixture/report/regular/test.js:27:4)' ... ---tty-stream-chunk-separator # test › bad throws @@ -188,7 +174,6 @@ not ok 16 - test › bad throws at: |- fn (test-tap/fixture/report/regular/test.js:32:9) t (test-tap/fixture/report/regular/test.js:35:11) - process._tickCallback (internal/process/next_tick.js:68:7) ... ---tty-stream-chunk-separator # test › bad notThrows @@ -205,7 +190,6 @@ not ok 17 - test › bad notThrows at: |- fn (test-tap/fixture/report/regular/test.js:40:9) t (test-tap/fixture/report/regular/test.js:43:14) - process._tickCallback (internal/process/next_tick.js:68:7) ... ---tty-stream-chunk-separator # test › implementation throws non-error @@ -215,7 +199,7 @@ not ok 18 - test › implementation throws non-error message: Error thrown in test values: 'Error thrown in test:': 'null' - at: 'process._tickCallback (internal/process/next_tick.js:68:7)' + at: '' ... ---tty-stream-chunk-separator # traces-in-t-throws › throws @@ -236,8 +220,6 @@ not ok 19 - traces-in-t-throws › throws (test-tap/fixture/report/regular/traces-in-t-throws.js:12:17) t (test-tap/fixture/report/regular/traces-in-t-throws.js:12:4) - - process._tickCallback (internal/process/next_tick.js:68:7) ... ---tty-stream-chunk-separator # traces-in-t-throws › notThrows @@ -257,8 +239,6 @@ not ok 20 - traces-in-t-throws › notThrows (test-tap/fixture/report/regular/traces-in-t-throws.js:16:20) t (test-tap/fixture/report/regular/traces-in-t-throws.js:16:4) - - process._tickCallback (internal/process/next_tick.js:68:7) ... ---tty-stream-chunk-separator # traces-in-t-throws › notThrowsAsync @@ -275,7 +255,6 @@ not ok 21 - traces-in-t-throws › notThrowsAsync throwError (test-tap/fixture/report/regular/traces-in-t-throws.js:4:8) t.notThrowsAsync (test-tap/fixture/report/regular/traces-in-t-throws.js:20:25) t (test-tap/fixture/report/regular/traces-in-t-throws.js:20:4) - process._tickCallback (internal/process/next_tick.js:68:7) ... ---tty-stream-chunk-separator # traces-in-t-throws › throwsAsync @@ -292,7 +271,6 @@ not ok 22 - traces-in-t-throws › throwsAsync throwError (test-tap/fixture/report/regular/traces-in-t-throws.js:4:8) t.throwsAsync (test-tap/fixture/report/regular/traces-in-t-throws.js:24:22) t (test-tap/fixture/report/regular/traces-in-t-throws.js:24:4) - process._tickCallback (internal/process/next_tick.js:68:7) ... ---tty-stream-chunk-separator # traces-in-t-throws › throwsAsync different error @@ -311,8 +289,6 @@ not ok 23 - traces-in-t-throws › throwsAsync different erro (test-tap/fixture/report/regular/traces-in-t-throws.js:8:24) t (test-tap/fixture/report/regular/traces-in-t-throws.js:28:11) - - process._tickCallback (internal/process/next_tick.js:68:7) ... ---tty-stream-chunk-separator # uncaught-exception › passes @@ -342,9 +318,7 @@ not ok 29 - Error: Can’t catch me --- name: Error message: Can’t catch me - at: |- - passes (test-tap/fixture/report/regular/unhandled-rejection.js:4:17) - process._tickCallback (internal/process/next_tick.js:68:7) + at: 'passes (test-tap/fixture/report/regular/unhandled-rejection.js:4:17)' ... ---tty-stream-chunk-separator # unhandled-rejection diff --git a/test-tap/reporters/tap.regular.v12.log b/test-tap/reporters/tap.regular.v12.log index 012168d22..3361eaf98 100644 --- a/test-tap/reporters/tap.regular.v12.log +++ b/test-tap/reporters/tap.regular.v12.log @@ -299,8 +299,6 @@ not ok 25 - Error: Can’t catch me at: >- Immediate. (test-tap/fixture/report/regular/uncaught-exception.js:5:9) - - processImmediate (internal/timers.js) ... ---tty-stream-chunk-separator # uncaught-exception.js exited with a non-zero exit code: 1 diff --git a/test-tap/reporters/tap.regular.v14.log b/test-tap/reporters/tap.regular.v14.log index 012168d22..3361eaf98 100644 --- a/test-tap/reporters/tap.regular.v14.log +++ b/test-tap/reporters/tap.regular.v14.log @@ -299,8 +299,6 @@ not ok 25 - Error: Can’t catch me at: >- Immediate. (test-tap/fixture/report/regular/uncaught-exception.js:5:9) - - processImmediate (internal/timers.js) ... ---tty-stream-chunk-separator # uncaught-exception.js exited with a non-zero exit code: 1 diff --git a/test-tap/reporters/tap.regular.v15.log b/test-tap/reporters/tap.regular.v15.log index 8debcc8b8..3361eaf98 100644 --- a/test-tap/reporters/tap.regular.v15.log +++ b/test-tap/reporters/tap.regular.v15.log @@ -5,13 +5,7 @@ not ok 1 - TypeError: test.serial.test is not a function --- name: TypeError message: test.serial.test is not a function - at: |- - Object. (test-tap/fixture/report/regular/bad-test-chain.js:3:13) - Module._compile (node:internal/modules/cjs/loader:1083:30) - Module.load (node:internal/modules/cjs/loader:948:32) - Function.Module._load (node:internal/modules/cjs/loader:789:14) - Module.require (node:internal/modules/cjs/loader:972:19) - require (node:internal/modules/cjs/helpers:88:18) + at: 'Object. (test-tap/fixture/report/regular/bad-test-chain.js:3:13)' ... ---tty-stream-chunk-separator # bad-test-chain.js exited with a non-zero exit code: 1 @@ -38,9 +32,7 @@ not ok 3 - nested-objects › format with max depth 4 + }, + }, } - at: |- - test-tap/fixture/report/regular/nested-objects.js:28:4 - processTicksAndRejections (node:internal/process/task_queues:93:5) + at: 'test-tap/fixture/report/regular/nested-objects.js:28:4' ... ---tty-stream-chunk-separator # nested-objects › format like with max depth 4 @@ -58,9 +50,7 @@ not ok 4 - nested-objects › format like with max depth 4 }, }, } - at: |- - test-tap/fixture/report/regular/nested-objects.js:54:4 - processTicksAndRejections (node:internal/process/task_queues:93:5) + at: 'test-tap/fixture/report/regular/nested-objects.js:54:4' ... ---tty-stream-chunk-separator # output-in-hook › before hook @@ -86,9 +76,7 @@ not ok 6 - output-in-hook › failing test name: AssertionError message: Test failed via `t.fail()` assertion: fail - at: |- - test-tap/fixture/report/regular/output-in-hook.js:34:4 - processTicksAndRejections (node:internal/process/task_queues:93:5) + at: 'test-tap/fixture/report/regular/output-in-hook.js:34:4' ... ---tty-stream-chunk-separator # output-in-hook › afterEach hook for passing test @@ -122,9 +110,7 @@ not ok 10 - test › fails name: AssertionError message: Test failed via `t.fail()` assertion: fail - at: |- - test-tap/fixture/report/regular/test.js:9:22 - processTicksAndRejections (node:internal/process/task_queues:93:5) + at: 'test-tap/fixture/report/regular/test.js:9:22' ... ---tty-stream-chunk-separator # test › known failure @@ -137,7 +123,7 @@ not ok 12 - test › no longer failing message: >- Test was expected to fail, but succeeded, you should stop marking the test as failing - at: 'processTicksAndRejections (node:internal/process/task_queues:93:5)' + at: '' ... ---tty-stream-chunk-separator # test › logs @@ -148,9 +134,7 @@ not ok 13 - test › logs name: AssertionError message: Test failed via `t.fail()` assertion: fail - at: |- - test-tap/fixture/report/regular/test.js:18:4 - processTicksAndRejections (node:internal/process/task_queues:93:5) + at: 'test-tap/fixture/report/regular/test.js:18:4' ... ---tty-stream-chunk-separator # test › formatted @@ -162,9 +146,7 @@ not ok 14 - test › formatted 'Difference:': |- - 'foo' + 'bar' - at: |- - test-tap/fixture/report/regular/test.js:22:4 - processTicksAndRejections (node:internal/process/task_queues:93:5) + at: 'test-tap/fixture/report/regular/test.js:22:4' ... ---tty-stream-chunk-separator # test › power-assert @@ -175,9 +157,7 @@ not ok 15 - test › power-assert operator: '!!' values: 'Value is not truthy:': '''''' - at: |- - test-tap/fixture/report/regular/test.js:27:4 - processTicksAndRejections (node:internal/process/task_queues:93:5) + at: 'test-tap/fixture/report/regular/test.js:27:4' ... ---tty-stream-chunk-separator # test › bad throws @@ -194,7 +174,6 @@ not ok 16 - test › bad throws at: |- fn (test-tap/fixture/report/regular/test.js:32:9) test-tap/fixture/report/regular/test.js:35:11 - processTicksAndRejections (node:internal/process/task_queues:93:5) ... ---tty-stream-chunk-separator # test › bad notThrows @@ -211,7 +190,6 @@ not ok 17 - test › bad notThrows at: |- fn (test-tap/fixture/report/regular/test.js:40:9) test-tap/fixture/report/regular/test.js:43:14 - processTicksAndRejections (node:internal/process/task_queues:93:5) ... ---tty-stream-chunk-separator # test › implementation throws non-error @@ -221,7 +199,7 @@ not ok 18 - test › implementation throws non-error message: Error thrown in test values: 'Error thrown in test:': 'null' - at: 'processTicksAndRejections (node:internal/process/task_queues:93:5)' + at: '' ... ---tty-stream-chunk-separator # traces-in-t-throws › throws @@ -239,7 +217,6 @@ not ok 19 - traces-in-t-throws › throws throwError (test-tap/fixture/report/regular/traces-in-t-throws.js:4:8) test-tap/fixture/report/regular/traces-in-t-throws.js:12:17 test-tap/fixture/report/regular/traces-in-t-throws.js:12:4 - processTicksAndRejections (node:internal/process/task_queues:93:5) ... ---tty-stream-chunk-separator # traces-in-t-throws › notThrows @@ -256,7 +233,6 @@ not ok 20 - traces-in-t-throws › notThrows throwError (test-tap/fixture/report/regular/traces-in-t-throws.js:4:8) test-tap/fixture/report/regular/traces-in-t-throws.js:16:20 test-tap/fixture/report/regular/traces-in-t-throws.js:16:4 - processTicksAndRejections (node:internal/process/task_queues:93:5) ... ---tty-stream-chunk-separator # traces-in-t-throws › notThrowsAsync @@ -273,7 +249,6 @@ not ok 21 - traces-in-t-throws › notThrowsAsync throwError (test-tap/fixture/report/regular/traces-in-t-throws.js:4:8) test-tap/fixture/report/regular/traces-in-t-throws.js:20:25 test-tap/fixture/report/regular/traces-in-t-throws.js:20:4 - processTicksAndRejections (node:internal/process/task_queues:93:5) ... ---tty-stream-chunk-separator # traces-in-t-throws › throwsAsync @@ -293,8 +268,6 @@ not ok 22 - traces-in-t-throws › throwsAsync (test-tap/fixture/report/regular/traces-in-t-throws.js:24:22) test-tap/fixture/report/regular/traces-in-t-throws.js:24:4 - - processTicksAndRejections (node:internal/process/task_queues:93:5) ... ---tty-stream-chunk-separator # traces-in-t-throws › throwsAsync different error @@ -313,8 +286,6 @@ not ok 23 - traces-in-t-throws › throwsAsync different erro (test-tap/fixture/report/regular/traces-in-t-throws.js:8:24) test-tap/fixture/report/regular/traces-in-t-throws.js:28:11 - - processTicksAndRejections (node:internal/process/task_queues:93:5) ... ---tty-stream-chunk-separator # uncaught-exception › passes @@ -328,8 +299,6 @@ not ok 25 - Error: Can’t catch me at: >- Immediate. (test-tap/fixture/report/regular/uncaught-exception.js:5:9) - - processImmediate (node:internal/timers:462:21) ... ---tty-stream-chunk-separator # uncaught-exception.js exited with a non-zero exit code: 1 @@ -346,9 +315,7 @@ not ok 29 - Error: Can’t catch me --- name: Error message: Can’t catch me - at: |- - passes (test-tap/fixture/report/regular/unhandled-rejection.js:4:17) - processTicksAndRejections (node:internal/process/task_queues:93:5) + at: 'passes (test-tap/fixture/report/regular/unhandled-rejection.js:4:17)' ... ---tty-stream-chunk-separator # unhandled-rejection diff --git a/test-tap/reporters/verbose.edgecases.v15.log b/test-tap/reporters/verbose.edgecases.v15.log index a06541e2a..8d5fad418 100644 --- a/test-tap/reporters/verbose.edgecases.v15.log +++ b/test-tap/reporters/verbose.edgecases.v15.log @@ -18,11 +18,6 @@ TypeError: test is not a function › Object. (test-tap/fixture/report/edgecases/import-and-use-test-member.js:3:1) - › Module._compile (node:internal/modules/cjs/loader:1083:30) - › Module.load (node:internal/modules/cjs/loader:948:32) - › Function.Module._load (node:internal/modules/cjs/loader:789:14) - › Module.require (node:internal/modules/cjs/loader:972:19) - › require (node:internal/modules/cjs/helpers:88:18) ---tty-stream-chunk-separator ✖ import-and-use-test-member.js exited with a non-zero exit code: 1 @@ -42,11 +37,6 @@ Error: throws › Object. (test-tap/fixture/report/edgecases/throws.js:1:7) - › Module._compile (node:internal/modules/cjs/loader:1083:30) - › Module.load (node:internal/modules/cjs/loader:948:32) - › Function.Module._load (node:internal/modules/cjs/loader:789:14) - › Module.require (node:internal/modules/cjs/loader:972:19) - › require (node:internal/modules/cjs/helpers:88:18) ---tty-stream-chunk-separator ✖ throws.js exited with a non-zero exit code: 1 diff --git a/test-tap/reporters/verbose.failfast.v10.log b/test-tap/reporters/verbose.failfast.v10.log index b988c36da..a42782962 100644 --- a/test-tap/reporters/verbose.failfast.v10.log +++ b/test-tap/reporters/verbose.failfast.v10.log @@ -15,7 +15,6 @@ Test failed via `t.fail()` › t (test-tap/fixture/report/failfast/a.js:3:22) - › process._tickCallback (internal/process/next_tick.js:68:7) ─ diff --git a/test-tap/reporters/verbose.failfast.v15.log b/test-tap/reporters/verbose.failfast.v15.log index 086c6f180..a9414f802 100644 --- a/test-tap/reporters/verbose.failfast.v15.log +++ b/test-tap/reporters/verbose.failfast.v15.log @@ -15,7 +15,6 @@ Test failed via `t.fail()` › test-tap/fixture/report/failfast/a.js:3:22 - › processTicksAndRejections (node:internal/process/task_queues:93:5) ─ diff --git a/test-tap/reporters/verbose.failfast2.v10.log b/test-tap/reporters/verbose.failfast2.v10.log index 41b317b2d..6c2ff84ed 100644 --- a/test-tap/reporters/verbose.failfast2.v10.log +++ b/test-tap/reporters/verbose.failfast2.v10.log @@ -15,7 +15,6 @@ Test failed via `t.fail()` › t (test-tap/fixture/report/failfast2/a.js:3:22) - › process._tickCallback (internal/process/next_tick.js:68:7) ─ diff --git a/test-tap/reporters/verbose.failfast2.v15.log b/test-tap/reporters/verbose.failfast2.v15.log index b288fbda0..e04170b8a 100644 --- a/test-tap/reporters/verbose.failfast2.v15.log +++ b/test-tap/reporters/verbose.failfast2.v15.log @@ -15,7 +15,6 @@ Test failed via `t.fail()` › test-tap/fixture/report/failfast2/a.js:3:22 - › processTicksAndRejections (node:internal/process/task_queues:93:5) ─ diff --git a/test-tap/reporters/verbose.regular.v10.log b/test-tap/reporters/verbose.regular.v10.log index f7d3ea109..699ee5fca 100644 --- a/test-tap/reporters/verbose.regular.v10.log +++ b/test-tap/reporters/verbose.regular.v10.log @@ -114,7 +114,6 @@ Error: Can’t catch me › passes (test-tap/fixture/report/regular/unhandled-rejection.js:4:17) - › process._tickCallback (internal/process/next_tick.js:68:7) ---tty-stream-chunk-separator Unhandled rejection in unhandled-rejection.js @@ -150,7 +149,6 @@ } › t (test-tap/fixture/report/regular/nested-objects.js:28:4) - › process._tickCallback (internal/process/next_tick.js:68:7) @@ -174,7 +172,6 @@ } › t (test-tap/fixture/report/regular/nested-objects.js:54:4) - › process._tickCallback (internal/process/next_tick.js:68:7) @@ -189,7 +186,6 @@ Test failed via `t.fail()` › t (test-tap/fixture/report/regular/output-in-hook.js:34:4) - › process._tickCallback (internal/process/next_tick.js:68:7) @@ -204,7 +200,6 @@ Test failed via `t.fail()` › t (test-tap/fixture/report/regular/test.js:9:22) - › process._tickCallback (internal/process/next_tick.js:68:7) @@ -212,8 +207,6 @@ Error: Test was expected to fail, but succeeded, you should stop marking the test as failing - › process._tickCallback (internal/process/next_tick.js:68:7) - test › logs @@ -230,7 +223,6 @@ Test failed via `t.fail()` › t (test-tap/fixture/report/regular/test.js:18:4) - › process._tickCallback (internal/process/next_tick.js:68:7) @@ -248,7 +240,6 @@ + 'bar' › t (test-tap/fixture/report/regular/test.js:22:4) - › process._tickCallback (internal/process/next_tick.js:68:7) @@ -268,7 +259,6 @@ => '' › t (test-tap/fixture/report/regular/test.js:27:4) - › process._tickCallback (internal/process/next_tick.js:68:7) @@ -298,7 +288,6 @@ › fn (test-tap/fixture/report/regular/test.js:32:9) › t (test-tap/fixture/report/regular/test.js:35:11) - › process._tickCallback (internal/process/next_tick.js:68:7) @@ -328,7 +317,6 @@ › fn (test-tap/fixture/report/regular/test.js:40:9) › t (test-tap/fixture/report/regular/test.js:43:14) - › process._tickCallback (internal/process/next_tick.js:68:7) @@ -338,8 +326,6 @@ null - › process._tickCallback (internal/process/next_tick.js:68:7) - traces-in-t-throws › throws @@ -363,7 +349,6 @@ › throwError (test-tap/fixture/report/regular/traces-in-t-throws.js:4:8) › t.throws._avaThrowsHelperEnd (test-tap/fixture/report/regular/traces-in-t-throws.js:12:17) › t (test-tap/fixture/report/regular/traces-in-t-throws.js:12:4) - › process._tickCallback (internal/process/next_tick.js:68:7) @@ -384,7 +369,6 @@ › throwError (test-tap/fixture/report/regular/traces-in-t-throws.js:4:8) › t.notThrows._avaThrowsHelperEnd (test-tap/fixture/report/regular/traces-in-t-throws.js:16:20) › t (test-tap/fixture/report/regular/traces-in-t-throws.js:16:4) - › process._tickCallback (internal/process/next_tick.js:68:7) @@ -405,7 +389,6 @@ › throwError (test-tap/fixture/report/regular/traces-in-t-throws.js:4:8) › t.notThrowsAsync (test-tap/fixture/report/regular/traces-in-t-throws.js:20:25) › t (test-tap/fixture/report/regular/traces-in-t-throws.js:20:4) - › process._tickCallback (internal/process/next_tick.js:68:7) @@ -426,7 +409,6 @@ › throwError (test-tap/fixture/report/regular/traces-in-t-throws.js:4:8) › t.throwsAsync (test-tap/fixture/report/regular/traces-in-t-throws.js:24:22) › t (test-tap/fixture/report/regular/traces-in-t-throws.js:24:4) - › process._tickCallback (internal/process/next_tick.js:68:7) @@ -450,7 +432,6 @@ › returnRejectedPromise (test-tap/fixture/report/regular/traces-in-t-throws.js:8:24) › t (test-tap/fixture/report/regular/traces-in-t-throws.js:28:11) - › process._tickCallback (internal/process/next_tick.js:68:7) ─ diff --git a/test-tap/reporters/verbose.regular.v12.log b/test-tap/reporters/verbose.regular.v12.log index ac183cc3e..6e87f9b7f 100644 --- a/test-tap/reporters/verbose.regular.v12.log +++ b/test-tap/reporters/verbose.regular.v12.log @@ -94,7 +94,6 @@ Error: Can’t catch me › Immediate. (test-tap/fixture/report/regular/uncaught-exception.js:5:9) - › processImmediate (internal/timers.js) ---tty-stream-chunk-separator ✖ uncaught-exception.js exited with a non-zero exit code: 1 diff --git a/test-tap/reporters/verbose.regular.v14.log b/test-tap/reporters/verbose.regular.v14.log index ac183cc3e..6e87f9b7f 100644 --- a/test-tap/reporters/verbose.regular.v14.log +++ b/test-tap/reporters/verbose.regular.v14.log @@ -94,7 +94,6 @@ Error: Can’t catch me › Immediate. (test-tap/fixture/report/regular/uncaught-exception.js:5:9) - › processImmediate (internal/timers.js) ---tty-stream-chunk-separator ✖ uncaught-exception.js exited with a non-zero exit code: 1 diff --git a/test-tap/reporters/verbose.regular.v15.log b/test-tap/reporters/verbose.regular.v15.log index 25a299067..6e87f9b7f 100644 --- a/test-tap/reporters/verbose.regular.v15.log +++ b/test-tap/reporters/verbose.regular.v15.log @@ -11,11 +11,6 @@ TypeError: test.serial.test is not a function › Object. (test-tap/fixture/report/regular/bad-test-chain.js:3:13) - › Module._compile (node:internal/modules/cjs/loader:1083:30) - › Module.load (node:internal/modules/cjs/loader:948:32) - › Function.Module._load (node:internal/modules/cjs/loader:789:14) - › Module.require (node:internal/modules/cjs/loader:972:19) - › require (node:internal/modules/cjs/helpers:88:18) ---tty-stream-chunk-separator ✖ bad-test-chain.js exited with a non-zero exit code: 1 @@ -99,7 +94,6 @@ Error: Can’t catch me › Immediate. (test-tap/fixture/report/regular/uncaught-exception.js:5:9) - › processImmediate (node:internal/timers:462:21) ---tty-stream-chunk-separator ✖ uncaught-exception.js exited with a non-zero exit code: 1 @@ -120,7 +114,6 @@ Error: Can’t catch me › passes (test-tap/fixture/report/regular/unhandled-rejection.js:4:17) - › processTicksAndRejections (node:internal/process/task_queues:93:5) ---tty-stream-chunk-separator Unhandled rejection in unhandled-rejection.js @@ -156,7 +149,6 @@ } › test-tap/fixture/report/regular/nested-objects.js:28:4 - › processTicksAndRejections (node:internal/process/task_queues:93:5) @@ -180,7 +172,6 @@ } › test-tap/fixture/report/regular/nested-objects.js:54:4 - › processTicksAndRejections (node:internal/process/task_queues:93:5) @@ -195,7 +186,6 @@ Test failed via `t.fail()` › test-tap/fixture/report/regular/output-in-hook.js:34:4 - › processTicksAndRejections (node:internal/process/task_queues:93:5) @@ -210,7 +200,6 @@ Test failed via `t.fail()` › test-tap/fixture/report/regular/test.js:9:22 - › processTicksAndRejections (node:internal/process/task_queues:93:5) @@ -218,8 +207,6 @@ Error: Test was expected to fail, but succeeded, you should stop marking the test as failing - › processTicksAndRejections (node:internal/process/task_queues:93:5) - test › logs @@ -236,7 +223,6 @@ Test failed via `t.fail()` › test-tap/fixture/report/regular/test.js:18:4 - › processTicksAndRejections (node:internal/process/task_queues:93:5) @@ -254,7 +240,6 @@ + 'bar' › test-tap/fixture/report/regular/test.js:22:4 - › processTicksAndRejections (node:internal/process/task_queues:93:5) @@ -274,7 +259,6 @@ => '' › test-tap/fixture/report/regular/test.js:27:4 - › processTicksAndRejections (node:internal/process/task_queues:93:5) @@ -304,7 +288,6 @@ › fn (test-tap/fixture/report/regular/test.js:32:9) › test-tap/fixture/report/regular/test.js:35:11 - › processTicksAndRejections (node:internal/process/task_queues:93:5) @@ -334,7 +317,6 @@ › fn (test-tap/fixture/report/regular/test.js:40:9) › test-tap/fixture/report/regular/test.js:43:14 - › processTicksAndRejections (node:internal/process/task_queues:93:5) @@ -344,8 +326,6 @@ null - › processTicksAndRejections (node:internal/process/task_queues:93:5) - traces-in-t-throws › throws @@ -369,7 +349,6 @@ › throwError (test-tap/fixture/report/regular/traces-in-t-throws.js:4:8) › test-tap/fixture/report/regular/traces-in-t-throws.js:12:17 › test-tap/fixture/report/regular/traces-in-t-throws.js:12:4 - › processTicksAndRejections (node:internal/process/task_queues:93:5) @@ -390,7 +369,6 @@ › throwError (test-tap/fixture/report/regular/traces-in-t-throws.js:4:8) › test-tap/fixture/report/regular/traces-in-t-throws.js:16:20 › test-tap/fixture/report/regular/traces-in-t-throws.js:16:4 - › processTicksAndRejections (node:internal/process/task_queues:93:5) @@ -411,7 +389,6 @@ › throwError (test-tap/fixture/report/regular/traces-in-t-throws.js:4:8) › test-tap/fixture/report/regular/traces-in-t-throws.js:20:25 › test-tap/fixture/report/regular/traces-in-t-throws.js:20:4 - › processTicksAndRejections (node:internal/process/task_queues:93:5) @@ -432,7 +409,6 @@ › throwError (test-tap/fixture/report/regular/traces-in-t-throws.js:4:8) › t.throwsAsync.instanceOf (test-tap/fixture/report/regular/traces-in-t-throws.js:24:22) › test-tap/fixture/report/regular/traces-in-t-throws.js:24:4 - › processTicksAndRejections (node:internal/process/task_queues:93:5) @@ -456,7 +432,6 @@ › returnRejectedPromise (test-tap/fixture/report/regular/traces-in-t-throws.js:8:24) › test-tap/fixture/report/regular/traces-in-t-throws.js:28:11 - › processTicksAndRejections (node:internal/process/task_queues:93:5) ─ diff --git a/xo.config.js b/xo.config.js index 44d9098c1..49c546469 100644 --- a/xo.config.js +++ b/xo.config.js @@ -25,6 +25,14 @@ module.exports = { '@typescript-eslint/unified-signatures': 'off' } }, + { + files: ['lib/plugin-support/shared-worker-loader.js', 'lib/plugin-support/shared-workers.js'], + // TODO [engine:node@>=12]: Enable when targeting Node.js 12. + rules: { + 'import/no-unresolved': 'off', + 'node/no-unsupported-features/node-builtins': 'off' + } + }, { files: 'test-{d,tap}/**/*.ts', rules: { From e66b54ce61d8bb16bbcd15b7fb90893d02e5a65c Mon Sep 17 00:00:00 2001 From: ninevra Date: Sun, 6 Dec 2020 09:57:09 -0800 Subject: [PATCH 6/8] Deterministic snapshot files, declaration-ordered snapshot reports Ensures that *.snap files are deterministic by sorting entry blocks by the hash of their test name or id. Ensures that *.md snapshot report files are sorted in as close to declaration order as is reasonably possible. Closes #2311 Closes #2324 Co-authored-by: Sindre Sorhus Co-authored-by: Mark Wubben --- lib/runner.js | 34 +++- lib/snapshot-manager.js | 37 +++- lib/test.js | 12 +- .../fixtures/intertest-order/package.json | 1 + .../fixtures/intertest-order/test.js | 35 ++++ .../fixtures/randomness/package.json | 1 + .../fixtures/randomness/test.js | 67 +++++++ .../fixtures/randomness/test.js.md | 167 ++++++++++++++++++ .../fixtures/randomness/test.js.snap | Bin 0 -> 713 bytes .../report-declaration-order/package.json | 1 + .../fixtures/report-declaration-order/test.js | 55 ++++++ .../helpers/get-snapshot-ids.js | 14 ++ test/snapshot-order/intertest-order.js | 42 +++++ test/snapshot-order/randomness.js | 31 ++++ .../report-declaration-order.js | 29 +++ .../snapshot-order/snapshots/randomness.js.md | 35 ++++ .../snapshots/randomness.js.snap | Bin 0 -> 905 bytes 17 files changed, 547 insertions(+), 14 deletions(-) create mode 100644 test/snapshot-order/fixtures/intertest-order/package.json create mode 100644 test/snapshot-order/fixtures/intertest-order/test.js create mode 100644 test/snapshot-order/fixtures/randomness/package.json create mode 100644 test/snapshot-order/fixtures/randomness/test.js create mode 100644 test/snapshot-order/fixtures/randomness/test.js.md create mode 100644 test/snapshot-order/fixtures/randomness/test.js.snap create mode 100644 test/snapshot-order/fixtures/report-declaration-order/package.json create mode 100644 test/snapshot-order/fixtures/report-declaration-order/test.js create mode 100644 test/snapshot-order/helpers/get-snapshot-ids.js create mode 100644 test/snapshot-order/intertest-order.js create mode 100644 test/snapshot-order/randomness.js create mode 100644 test/snapshot-order/report-declaration-order.js create mode 100644 test/snapshot-order/snapshots/randomness.js.md create mode 100644 test/snapshot-order/snapshots/randomness.js.snap diff --git a/lib/runner.js b/lib/runner.js index 37c7211ab..fe240cb26 100644 --- a/lib/runner.js +++ b/lib/runner.js @@ -31,6 +31,7 @@ class Runner extends Emittery { this.boundCompareTestSnapshot = this.compareTestSnapshot.bind(this); this.interrupted = false; this.snapshots = null; + this.nextTaskIndex = 0; this.tasks = { after: [], afterAlways: [], @@ -76,6 +77,8 @@ class Runner extends Emittery { }); } + metadata.taskIndex = this.nextTaskIndex++; + const {args, buildTitle, implementations, rawTitle} = parseTestArgs(testArgs); if (this.checkSelectedByLineNumbers) { @@ -285,7 +288,7 @@ class Runner extends Emittery { return result; } - async runHooks(tasks, contextRef, titleSuffix, testPassed) { + async runHooks(tasks, contextRef, {titleSuffix, testPassed, associatedTaskIndex} = {}) { const hooks = tasks.map(task => new Runnable({ contextRef, experiments: this.experiments, @@ -295,7 +298,7 @@ class Runner extends Emittery { t => task.implementation.apply(null, [t].concat(task.args)), compareTestSnapshot: this.boundCompareTestSnapshot, updateSnapshots: this.updateSnapshots, - metadata: task.metadata, + metadata: {...task.metadata, associatedTaskIndex}, powerAssert: this.powerAssert, title: `${task.title}${titleSuffix || ''}`, isHook: true, @@ -326,7 +329,14 @@ class Runner extends Emittery { async runTest(task, contextRef) { const hookSuffix = ` for ${task.title}`; - let hooksOk = await this.runHooks(this.tasks.beforeEach, contextRef, hookSuffix); + let hooksOk = await this.runHooks( + this.tasks.beforeEach, + contextRef, + { + titleSuffix: hookSuffix, + associatedTaskIndex: task.metadata.taskIndex + } + ); let testOk = false; if (hooksOk) { @@ -358,7 +368,14 @@ class Runner extends Emittery { logs: result.logs }); - hooksOk = await this.runHooks(this.tasks.afterEach, contextRef, hookSuffix, testOk); + hooksOk = await this.runHooks( + this.tasks.afterEach, + contextRef, + { + titleSuffix: hookSuffix, + testPassed: testOk, + associatedTaskIndex: task.metadata.taskIndex + }); } else { this.emit('stateChange', { type: 'test-failed', @@ -372,7 +389,14 @@ class Runner extends Emittery { } } - const alwaysOk = await this.runHooks(this.tasks.afterEachAlways, contextRef, hookSuffix, testOk); + const alwaysOk = await this.runHooks( + this.tasks.afterEachAlways, + contextRef, + { + titleSuffix: hookSuffix, + testPassed: testOk, + associatedTaskIndex: task.metadata.taskIndex + }); return alwaysOk && hooksOk && testOk; } diff --git a/lib/snapshot-manager.js b/lib/snapshot-manager.js index 1871977c9..119476452 100644 --- a/lib/snapshot-manager.js +++ b/lib/snapshot-manager.js @@ -104,13 +104,32 @@ function combineEntries(entries) { const buffers = []; let byteLength = 0; - const sortedKeys = [...entries.keys()].sort(); + const sortedKeys = [...entries.keys()].sort((keyA, keyB) => { + const [a, b] = [entries.get(keyA), entries.get(keyB)]; + const taskDifference = a.taskIndex - b.taskIndex; + + if (taskDifference !== 0) { + return taskDifference; + } + + const [assocA, assocB] = [a.associatedTaskIndex, b.associatedTaskIndex]; + if (assocA !== undefined && assocB !== undefined) { + const assocDifference = assocA - assocB; + + if (assocDifference !== 0) { + return assocDifference; + } + } + + return a.snapIndex - b.snapIndex; + }); + for (const key of sortedKeys) { const keyBuffer = Buffer.from(`\n\n## ${key}\n\n`, 'utf8'); buffers.push(keyBuffer); byteLength += keyBuffer.byteLength; - const formattedEntries = entries.get(key); + const formattedEntries = entries.get(key).buffers; const last = formattedEntries[formattedEntries.length - 1]; for (const entry of formattedEntries) { buffers.push(entry); @@ -176,10 +195,11 @@ function encodeSnapshots(buffersByHash) { byteOffset += 2; const entries = []; - for (const pair of buffersByHash) { - const hash = pair[0]; - const snapshotBuffers = pair[1]; - + // Maps can't have duplicate keys, so all items in [...buffersByHash.keys()] + // are unique, so sortedHashes should be deterministic. + const sortedHashes = [...buffersByHash.keys()].sort(); + const sortedBuffersByHash = [...sortedHashes.map(hash => [hash, buffersByHash.get(hash)])]; + for (const [hash, snapshotBuffers] of sortedBuffersByHash) { buffers.push(Buffer.from(hash, 'hex')); byteOffset += MD5_HASH_LENGTH; @@ -332,6 +352,7 @@ class Manager { const descriptor = concordance.describe(options.expected, concordanceOptions); const snapshot = concordance.serialize(descriptor); const entry = formatEntry(options.label, descriptor); + const {taskIndex, snapIndex, associatedTaskIndex} = options; return () => { // Must be called in order! this.hasChanges = true; @@ -353,9 +374,9 @@ class Manager { snapshots.push(snapshot); if (this.reportEntries.has(options.belongsTo)) { - this.reportEntries.get(options.belongsTo).push(entry); + this.reportEntries.get(options.belongsTo).buffers.push(entry); } else { - this.reportEntries.set(options.belongsTo, [entry]); + this.reportEntries.set(options.belongsTo, {buffers: [entry], taskIndex, snapIndex, associatedTaskIndex}); } }; } diff --git a/lib/test.js b/lib/test.js index e8058b115..b0814654e 100644 --- a/lib/test.js +++ b/lib/test.js @@ -230,7 +230,17 @@ class Test { const index = id ? 0 : this.nextSnapshotIndex++; const label = id ? '' : message || `Snapshot ${index + 1}`; // Human-readable labels start counting at 1. - const {record, ...result} = options.compareTestSnapshot({belongsTo, deferRecording, expected, index, label}); + const {taskIndex, associatedTaskIndex} = this.metadata; + const {record, ...result} = options.compareTestSnapshot({ + belongsTo, + deferRecording, + expected, + index, + label, + taskIndex, + snapIndex: this.snapshotCount, + associatedTaskIndex + }); if (record) { this.deferredSnapshotRecordings.push(record); } diff --git a/test/snapshot-order/fixtures/intertest-order/package.json b/test/snapshot-order/fixtures/intertest-order/package.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/test/snapshot-order/fixtures/intertest-order/package.json @@ -0,0 +1 @@ +{} diff --git a/test/snapshot-order/fixtures/intertest-order/test.js b/test/snapshot-order/fixtures/intertest-order/test.js new file mode 100644 index 000000000..79081b23b --- /dev/null +++ b/test/snapshot-order/fixtures/intertest-order/test.js @@ -0,0 +1,35 @@ +const test = require('ava'); + +const reverse = process.env.INTERTEST_ORDER_REVERSE; + +// Functions which resolve the corresponding promise to undefined +let resolveOne; +let resolveTwo; + +// Promises with triggerable resolution +const one = new Promise(resolve => { + resolveOne = resolve; +}); + +const two = new Promise(resolve => { + resolveTwo = resolve; +}); + +// Test cases which await the triggerable promises +test('one', async t => { + await one; + t.snapshot('one'); + resolveTwo(); +}); +test('two', async t => { + await two; + t.snapshot('two'); + resolveOne(); +}); + +// Start resolution +if (reverse) { + resolveTwo(); +} else { + resolveOne(); +} diff --git a/test/snapshot-order/fixtures/randomness/package.json b/test/snapshot-order/fixtures/randomness/package.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/test/snapshot-order/fixtures/randomness/package.json @@ -0,0 +1 @@ +{} diff --git a/test/snapshot-order/fixtures/randomness/test.js b/test/snapshot-order/fixtures/randomness/test.js new file mode 100644 index 000000000..d3d1fa242 --- /dev/null +++ b/test/snapshot-order/fixtures/randomness/test.js @@ -0,0 +1,67 @@ +const test = require('ava'); + +const id = index => `index: ${index}`; +const randomDelay = () => new Promise(resolve => { + setTimeout(resolve, Math.random() * 1000); +}); + +test.before(async t => { + await randomDelay(); + t.snapshot(id(-2), 'in a before hook'); +}); + +test.beforeEach(async t => { + await randomDelay(); + t.snapshot(id(-1.5), 'in a beforeEach hook'); +}); + +test.afterEach(async t => { + await randomDelay(); + t.snapshot(id(-1), 'in an afterEach hook'); +}); + +test.afterEach.always(async t => { + await randomDelay(); + t.snapshot(id(-0.5), 'in an afterEachAlways hook'); +}); + +test('B - declare some snapshots', async t => { + await randomDelay(); + t.snapshot(id(0)); + t.snapshot(id(1), 'has a message'); + t.snapshot(id(2), 'also has a message'); + t.snapshot(id(3), {id: 'has an ID'}); +}); + +test('A - declare some more snapshots', async t => { + await randomDelay(); + t.snapshot(id(4)); +}); + +test('C - declare some snapshots in a try()', async t => { + await randomDelay(); + t.snapshot(id(5), 'outer'); + (await t.try('trying', t => { + t.snapshot(id(6), 'inner'); + })).commit(); + t.snapshot(id(7), 'outer again'); +}); + +test('E - discard some snapshots in a try()', async t => { + await randomDelay(); + t.snapshot(id(8), 'outer'); + (await t.try('trying', t => { + t.snapshot(id(9), 'inner'); + })).discard(); + t.snapshot(id(10), 'outer again'); +}); + +test('D - more snapshots with IDs', async t => { + await randomDelay(); + t.snapshot(id(11), {id: 'the first in test D'}); + t.snapshot(id(12)); + // These have to be reported in reverse declaration order, because they can't + // be reported under the same header + t.snapshot(id(14), {id: 'the second-to-last in test D'}); + t.snapshot(id(13)); +}); diff --git a/test/snapshot-order/fixtures/randomness/test.js.md b/test/snapshot-order/fixtures/randomness/test.js.md new file mode 100644 index 000000000..14c2251f4 --- /dev/null +++ b/test/snapshot-order/fixtures/randomness/test.js.md @@ -0,0 +1,167 @@ +# Snapshot report for `test.js` + +The actual snapshot is saved in `test.js.snap`. + +Generated by [AVA](https://avajs.dev). + +## before hook + +> in a before hook + + 'index: -2' + +## beforeEach hook for B - declare some snapshots + +> in a beforeEach hook + + 'index: -1.5' + +## beforeEach hook for A - declare some more snapshots + +> in a beforeEach hook + + 'index: -1.5' + +## beforeEach hook for C - declare some snapshots in a try() + +> in a beforeEach hook + + 'index: -1.5' + +## beforeEach hook for E - discard some snapshots in a try() + +> in a beforeEach hook + + 'index: -1.5' + +## beforeEach hook for D - more snapshots with IDs + +> in a beforeEach hook + + 'index: -1.5' + +## afterEach hook for B - declare some snapshots + +> in an afterEach hook + + 'index: -1' + +## afterEach hook for A - declare some more snapshots + +> in an afterEach hook + + 'index: -1' + +## afterEach hook for C - declare some snapshots in a try() + +> in an afterEach hook + + 'index: -1' + +## afterEach hook for E - discard some snapshots in a try() + +> in an afterEach hook + + 'index: -1' + +## afterEach hook for D - more snapshots with IDs + +> in an afterEach hook + + 'index: -1' + +## afterEach.always hook for B - declare some snapshots + +> in an afterEachAlways hook + + 'index: -0.5' + +## afterEach.always hook for A - declare some more snapshots + +> in an afterEachAlways hook + + 'index: -0.5' + +## afterEach.always hook for C - declare some snapshots in a try() + +> in an afterEachAlways hook + + 'index: -0.5' + +## afterEach.always hook for E - discard some snapshots in a try() + +> in an afterEachAlways hook + + 'index: -0.5' + +## afterEach.always hook for D - more snapshots with IDs + +> in an afterEachAlways hook + + 'index: -0.5' + +## B - declare some snapshots + +> Snapshot 1 + + 'index: 0' + +> has a message + + 'index: 1' + +> also has a message + + 'index: 2' + +## has an ID + + 'index: 3' + +## A - declare some more snapshots + +> Snapshot 1 + + 'index: 4' + +## C - declare some snapshots in a try() + +> outer + + 'index: 5' + +> inner + + 'index: 6' + +> outer again + + 'index: 7' + +## E - discard some snapshots in a try() + +> outer + + 'index: 8' + +> outer again + + 'index: 10' + +## the first in test D + + 'index: 11' + +## D - more snapshots with IDs + +> Snapshot 1 + + 'index: 12' + +> Snapshot 2 + + 'index: 13' + +## the second-to-last in test D + + 'index: 14' diff --git a/test/snapshot-order/fixtures/randomness/test.js.snap b/test/snapshot-order/fixtures/randomness/test.js.snap new file mode 100644 index 0000000000000000000000000000000000000000..3082a112d591fef835eb427a894872c674b608a8 GIT binary patch literal 713 zcmV;)0yh0YRzVWKs1bkH^xR!NBC3Y9EUT00000000A9 z#>BuN!NBll^*aBXVTY}L^~S4dIbUXE00D6zmWZ3qq4DX=YQAcYKYbsVWEjDsdO$4s zEwe@3d}5%$L8fcj8`tk-1dF-?v8uz`9TpG#E6#2#4rf?=uZ9sU8V8bj_+Lkr=VzT{ zq{3_k%?YK9V9`<_)?nmbw=z>;-}{#16`fi~zcGSE`+(Tm=zZ+cAI>GAX;aVbl6-uh z5iGhKh;53)H!S2dTfF#w>E?o^FQ+krMGt^v4u3URXEKwmWB-wlY#nL08Ns4AfjCSz z=g0r~2N$_S&0gcpaGr}1EcywEBm5F`{d}z_$Ua=^Zh6_?n-MI^4GfCd&`+YZTbpXZEyAbH^;0T^CG{#J zSadZIHyzM^{#bOe=*0cZk!Rk|+{FkMJp{y)tbS;C++BRfl&R7ATc+LvMzH8jAfCMc zug26@{Nd%{H-a{8TouR!7X1Ll?7(zz$(8x$?t@!XTPLol+SyyA%LEpcg<=zsiZjn` zbQO*=t}5uvH~BVwDI-|a8;D=pKCC(Ecdu!t{im?!3XGnNV9^vH{vt46-RIzZ`)59n z#dki??_dUtRzdLuC|(A{zrNae?m8rVxcQjacGmL;85qH$dx4mlfgPM88Ce+w896ia zQc^3d6m$(q5jHeI5$1-eHqbN0Zj2Fe>fsWGxFkr|L9_%1RKf(SD0a1GSVhe#bUVx( vW9)%XT2vWf7dFOfqXl-w2E^Ei)1NTI4X}zDVim>iYF$GB;G32%V+8;JUCmpz literal 0 HcmV?d00001 diff --git a/test/snapshot-order/fixtures/report-declaration-order/package.json b/test/snapshot-order/fixtures/report-declaration-order/package.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/test/snapshot-order/fixtures/report-declaration-order/package.json @@ -0,0 +1 @@ +{} diff --git a/test/snapshot-order/fixtures/report-declaration-order/test.js b/test/snapshot-order/fixtures/report-declaration-order/test.js new file mode 100644 index 000000000..b25902d90 --- /dev/null +++ b/test/snapshot-order/fixtures/report-declaration-order/test.js @@ -0,0 +1,55 @@ +const test = require('ava'); + +const id = index => `index: ${index}`; + +test.before(t => { + t.snapshot(id(-2), 'in a before hook'); +}); + +test.beforeEach(t => { + t.snapshot(id(-1.5), 'in a beforeEach hook'); +}); + +test.afterEach(t => { + t.snapshot(id(-1), 'in an afterEach hook'); +}); + +test.afterEach.always(t => { + t.snapshot(id(-0.5), 'in an afterEachAlways hook'); +}); + +test('B - declare some snapshots', t => { + t.snapshot(id(0)); + t.snapshot(id(1), 'has a message'); + t.snapshot(id(2), 'also has a message'); + t.snapshot(id(3), {id: 'has an ID'}); +}); + +test('A - declare some more snapshots', t => { + t.snapshot(id(4)); +}); + +test('C - declare some snapshots in a try()', async t => { + t.snapshot(id(5), 'outer'); + (await t.try('trying', t => { + t.snapshot(id(6), 'inner'); + })).commit(); + t.snapshot(id(7), 'outer again'); +}); + +test('E - discard some snapshots in a try()', async t => { + t.snapshot(id(8), 'outer'); + (await t.try('trying', t => { + t.snapshot(id(9), 'inner'); + })).discard(); + t.snapshot(id(10), 'outer again'); +}); + +test('D - more snapshots with IDs', t => { + t.snapshot(id(11), {id: 'the first in test D'}); + t.snapshot(id(12)); + // These have to be reported in reverse declaration order, because they can't + // be reported under the same header + t.snapshot(id(14), {id: 'the second-to-last in test D'}); + t.snapshot(id(13)); +}); diff --git a/test/snapshot-order/helpers/get-snapshot-ids.js b/test/snapshot-order/helpers/get-snapshot-ids.js new file mode 100644 index 000000000..00c376b4c --- /dev/null +++ b/test/snapshot-order/helpers/get-snapshot-ids.js @@ -0,0 +1,14 @@ +function getSnapshotIds(report) { + function * matchAll(string, regexp) { + let match; + while ((match = regexp.exec(string)) !== null) { + yield match; + } + } + + const ids = [...matchAll(report, /'index: ([-.\d]+)'/g)].map(match => Number(match[1])); + + return ids; +} + +module.exports = getSnapshotIds; diff --git a/test/snapshot-order/intertest-order.js b/test/snapshot-order/intertest-order.js new file mode 100644 index 000000000..6324f92b7 --- /dev/null +++ b/test/snapshot-order/intertest-order.js @@ -0,0 +1,42 @@ +const test = require('@ava/test'); +const exec = require('../helpers/exec'); +const fs = require('fs'); +const path = require('path'); + +test('snapshot files are independent of test resolution order', async t => { + const options = { + cwd: exec.cwd('intertest-order'), + env: { + AVA_FORCE_CI: 'not-ci' + } + }; + + const snapshotPath = path.join(options.cwd, 'test.js.snap'); + + // Schedule snapshot cleanup + t.teardown(() => { + fs.unlinkSync(snapshotPath); + fs.unlinkSync(path.join(options.cwd, 'test.js.md')); + }); + + // Run, updating snapshots. + await exec.fixture(['test.js', '--update-snapshots'], options); + + // Read the resulting file + const snapshot = fs.readFileSync(snapshotPath); + + // Run in reversed order, updating snapshots. + await exec.fixture(['test.js', '--update-snapshots'], { + ...options, + env: { + INTERTEST_ORDER_REVERSE: 'true', + ...options.env + } + }); + + // Read the resulting file + const snapshotReversed = fs.readFileSync(snapshotPath); + + // Compare snapshots + t.deepEqual(snapshot, snapshotReversed); +}); diff --git a/test/snapshot-order/randomness.js b/test/snapshot-order/randomness.js new file mode 100644 index 000000000..92078f907 --- /dev/null +++ b/test/snapshot-order/randomness.js @@ -0,0 +1,31 @@ +const test = require('@ava/test'); +const exec = require('../helpers/exec'); +const fs = require('fs'); +const path = require('path'); +const getSnapshotIds = require('./helpers/get-snapshot-ids'); + +test('deterministic and sorted over a large, random test case', async t => { + const options = { + cwd: exec.cwd('randomness'), + env: { + AVA_FORCE_CI: 'not-ci' + } + }; + + const snapshotPath = path.join(options.cwd, 'test.js.snap'); + const reportPath = path.join(options.cwd, 'test.js.md'); + + // Run test + await exec.fixture(['--update-snapshots'], options); + + // Assert snapshot is unchanged + const snapshot = fs.readFileSync(snapshotPath); + + t.snapshot(snapshot, 'resulting snapshot in binary encoding'); + + // Assert report is sorted + const report = fs.readFileSync(reportPath); + const ids = getSnapshotIds(report); + + t.deepEqual(ids, [...ids].sort((a, b) => a - b)); +}); diff --git a/test/snapshot-order/report-declaration-order.js b/test/snapshot-order/report-declaration-order.js new file mode 100644 index 000000000..62eb85e44 --- /dev/null +++ b/test/snapshot-order/report-declaration-order.js @@ -0,0 +1,29 @@ +const test = require('@ava/test'); +const exec = require('../helpers/exec'); +const fs = require('fs'); +const path = require('path'); +const getSnapshotIds = require('./helpers/get-snapshot-ids'); + +test('snapshot reports are sorted in declaration order', async t => { + const options = { + cwd: exec.cwd('report-declaration-order'), + env: { + AVA_FORCE_CI: 'not-ci' + } + }; + + // Scehdule snapshot cleanup + t.teardown(() => { + fs.unlinkSync(path.join(options.cwd, 'test.js.snap')); + fs.unlinkSync(reportPath); + }); + + await exec.fixture(['--update-snapshots'], options); + + const reportPath = path.join(options.cwd, 'test.js.md'); + + const report = fs.readFileSync(reportPath, {encoding: 'utf8'}); + const ids = getSnapshotIds(report); + + t.deepEqual(ids, [...ids].sort((a, b) => a - b)); +}); diff --git a/test/snapshot-order/snapshots/randomness.js.md b/test/snapshot-order/snapshots/randomness.js.md new file mode 100644 index 000000000..14016b0e8 --- /dev/null +++ b/test/snapshot-order/snapshots/randomness.js.md @@ -0,0 +1,35 @@ +# Snapshot report for `test/snapshot-order/randomness.js` + +The actual snapshot is saved in `randomness.js.snap`. + +Generated by [AVA](https://avajs.dev). + +## deterministic and sorted over a large, random test case + +> Snapshot 1 + + Buffer @Uint8Array [ + 41564120 536e6170 73686f74 2076320a 020019c4 186451f5 248fc7d2 9bc1c0e4 + 9b6a1f8b 08000000 00000003 5bc6c4c0 20c1c0f0 66f53aff 9b6187ad 7ef5c6ab + 69395f66 64000171 2096889b cea1f1e9 cc6abe6a 8e3f7d1f 986418c1 a27a402c + f92db345 dc7c62a0 c041a66b d91bd7ef 64048bba 02b1aac3 da1d160f fc2bce6e + 2c0e6758 7caf8611 2c1a0792 79f85f47 95e7679d 64a4c26c 05cd09a5 8c60d152 + 20d660e4 5eb73253 60dffb96 e3159d5a 47bf3182 45fb80d8 dae87dec d21fce25 + a16953cf ed927c7c 9f112cba 1c886d8a c3372ce4 345bbcf8 7ee9e682 a52fa731 + 82450f80 640e7f35 58673293 ad63ff91 8f6c1d69 b719c1a2 3781384c 37e7c7ff + f90717b9 44cd5ee3 cd709e8b 112cfa09 8823fc12 73fd7cad 27c83e5c ea6e79d9 + df9b112c ca0d0c8a d8d04fa2 b5e55b9e dd7f7a6d 5b7b9946 22235854 1188e3d7 + de5d29f8 9edd4fae fbdaa4dc 33acff98 c1a2e650 ec0bc5c9 409ce62a 6725c693 + a66d716f fe29dbe3 0b0e3282 458141c3 90f9a478 bf83ee83 7ba6775e ad991632 + e5192358 742a1097 ce5b9b6a c12dc2a7 cef5532a 8525f52a 23587435 10371dd0 + 7efe5874 b1e8c4fd cc9167de cfdcc508 163d04c4 93ac7e68 78dc5d7c c794a9d1 + f95ba6de 0346b0e8 4d209ebc ffafc6d4 57fce1e5 e1378236 6d5c15c8 0416fd00 + c5ecc074 70c995f9 e6ee835b 535b27ae a8dad95b a4cb0416 95856213 908a33cf + 6d74158e 32ae2ae8 cc37f936 7d292358 d41b885f da3eac39 e977af69 a6fda7b0 + e70a8c9e 8c60d114 20fe2230 5fdde7e0 7cfb673e 8fc5773e d0ef6006 8b5641f1 + 04285e06 c4bfbeda 79ee3a24 7cb8f998 d876d6f3 071918c1 a27b8198 99811d9c + 22195919 04193933 f352522b ac14740d 49113634 4111e686 a936d033 c56e8c11 + 71eae112 86b82448 d741b404 0754c204 ab2876b5 665845cd 29743bcc 1c63ec81 + 4f5a5419 611736c6 6aa30576 c506c4d8 88d39f30 c30db08a 1a6215c5 ee6a5d43 + 00e09b96 2e630500 00 + ] diff --git a/test/snapshot-order/snapshots/randomness.js.snap b/test/snapshot-order/snapshots/randomness.js.snap new file mode 100644 index 0000000000000000000000000000000000000000..5b29a3ebdd19178bb593947b32f727627cb3b44b GIT binary patch literal 905 zcmZ<^b5sb1b$WNKYnTU!2?fbXCa&u zeeB2qg@Xq^qL z<)HIZceCrAnxq8>9G7L^l)nBxg{6BJ)5cYYZ^?@B|It2|r^A;XQM0~HP)CY=Qss|$ z_o>g*=cX(#(`b6O-sYKk8mSYg($m9H^MTA%(BrG$P$-^4jG86Z>;y zGq+0~Tx8y8;bZ>%`2U~m;yYc=#yvh;Ft1xs=ND&(@*kn%zcp*sPuRu0%B#G2f3~2` zDPEqg8yEZ+ZG9R&?{0lnZgllbHznnW5W$Ye*YCw@{+M^yf8Fm}OYRu2`9I^}qGthb zxR0K6nDb04UG>=HWx0j<|1@tu=H@eMa&2@xJmKe(iv7*+nyZ(U$E}?yX7p52Iif^M zVEVb}*;xm54=q3UHCU@v^{W<8)KtJ+_Cnpih?0#jj{H3{G5y~8J4ZRhY*~&>UQ?G* zaVNIs_>`3we?~96$LzM@g|EWAJ^$AqyAuBA;nRoaO=h_OSiUS@ zpSkSs@(s_qdgcM+K}6x7l0p34=MQRrr`z=(Ew{VyK7p+}%<&_OMjYFb{rhfJzOz!P z+3|D6jk0T>*(HH-U)?xkW~1yJCCNxh7D-Fv&p|=jYeY(TJq68790i}Xtu(t}d^E2| zu<+GGp|%|=9@ibWu&{?5Vp*+Gwlyun^{i%z^% Date: Mon, 7 Dec 2020 09:56:04 +0100 Subject: [PATCH 7/8] Update dependencies * Update dependencies * Rebuild package-lock --- package-lock.json | 395 ++++++++++++++++++++++++++-------------------- package.json | 8 +- 2 files changed, 226 insertions(+), 177 deletions(-) diff --git a/package-lock.json b/package-lock.json index e311ba8e0..3d970aef9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -170,6 +170,15 @@ "yargs": "^16.0.3" }, "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, "is-npm": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", @@ -629,9 +638,9 @@ } }, "@eslint/eslintrc": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.1.tgz", - "integrity": "sha512-XRUeBZ5zBWLYgSANMpThFddrZZkEbGHgUdt5UJjZfnlN9BGCiUBrf+nvbRupSjMvqzwnQN0qwCmOxITt1cfywA==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.2.tgz", + "integrity": "sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -836,13 +845,13 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.8.2.tgz", - "integrity": "sha512-gQ06QLV5l1DtvYtqOyFLXD9PdcILYqlrJj2l+CGDlPtmgLUzc1GpqciJFIRvyfvgLALpnxYINFuw+n9AZhPBKQ==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.9.0.tgz", + "integrity": "sha512-WrVzGMzzCrgrpnQMQm4Tnf+dk+wdl/YbgIgd5hKGa2P+lnJ2MON+nQnbwgbxtN9QDLi8HO+JAq0/krMnjQK6Cw==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "4.8.2", - "@typescript-eslint/scope-manager": "4.8.2", + "@typescript-eslint/experimental-utils": "4.9.0", + "@typescript-eslint/scope-manager": "4.9.0", "debug": "^4.1.1", "functional-red-black-tree": "^1.0.1", "regexpp": "^3.0.0", @@ -851,55 +860,55 @@ } }, "@typescript-eslint/experimental-utils": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.8.2.tgz", - "integrity": "sha512-hpTw6o6IhBZEsQsjuw/4RWmceRyESfAiEzAEnXHKG1X7S5DXFaZ4IO1JO7CW1aQ604leQBzjZmuMI9QBCAJX8Q==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.9.0.tgz", + "integrity": "sha512-0p8GnDWB3R2oGhmRXlEnCvYOtaBCijtA5uBfH5GxQKsukdSQyI4opC4NGTUb88CagsoNQ4rb/hId2JuMbzWKFQ==", "dev": true, "requires": { "@types/json-schema": "^7.0.3", - "@typescript-eslint/scope-manager": "4.8.2", - "@typescript-eslint/types": "4.8.2", - "@typescript-eslint/typescript-estree": "4.8.2", + "@typescript-eslint/scope-manager": "4.9.0", + "@typescript-eslint/types": "4.9.0", + "@typescript-eslint/typescript-estree": "4.9.0", "eslint-scope": "^5.0.0", "eslint-utils": "^2.0.0" } }, "@typescript-eslint/parser": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.8.2.tgz", - "integrity": "sha512-u0leyJqmclYr3KcXOqd2fmx6SDGBO0MUNHHAjr0JS4Crbb3C3d8dwAdlazy133PLCcPn+aOUFiHn72wcuc5wYw==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.9.0.tgz", + "integrity": "sha512-QRSDAV8tGZoQye/ogp28ypb8qpsZPV6FOLD+tbN4ohKUWHD2n/u0Q2tIBnCsGwQCiD94RdtLkcqpdK4vKcLCCw==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "4.8.2", - "@typescript-eslint/types": "4.8.2", - "@typescript-eslint/typescript-estree": "4.8.2", + "@typescript-eslint/scope-manager": "4.9.0", + "@typescript-eslint/types": "4.9.0", + "@typescript-eslint/typescript-estree": "4.9.0", "debug": "^4.1.1" } }, "@typescript-eslint/scope-manager": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.8.2.tgz", - "integrity": "sha512-qHQ8ODi7mMin4Sq2eh/6eu03uVzsf5TX+J43xRmiq8ujng7ViQSHNPLOHGw/Wr5dFEoxq/ubKhzClIIdQy5q3g==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.9.0.tgz", + "integrity": "sha512-q/81jtmcDtMRE+nfFt5pWqO0R41k46gpVLnuefqVOXl4QV1GdQoBWfk5REcipoJNQH9+F5l+dwa9Li5fbALjzg==", "dev": true, "requires": { - "@typescript-eslint/types": "4.8.2", - "@typescript-eslint/visitor-keys": "4.8.2" + "@typescript-eslint/types": "4.9.0", + "@typescript-eslint/visitor-keys": "4.9.0" } }, "@typescript-eslint/types": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.8.2.tgz", - "integrity": "sha512-z1/AVcVF8ju5ObaHe2fOpZYEQrwHyZ7PTOlmjd3EoFeX9sv7UekQhfrCmgUO7PruLNfSHrJGQvrW3Q7xQ8EoAw==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.9.0.tgz", + "integrity": "sha512-luzLKmowfiM/IoJL/rus1K9iZpSJK6GlOS/1ezKplb7MkORt2dDcfi8g9B0bsF6JoRGhqn0D3Va55b+vredFHA==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.8.2.tgz", - "integrity": "sha512-HToGNwI6fekH0dOw3XEVESUm71Onfam0AKin6f26S2FtUmO7o3cLlWgrIaT1q3vjB3wCTdww3Dx2iGq5wtUOCg==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.9.0.tgz", + "integrity": "sha512-rmDR++PGrIyQzAtt3pPcmKWLr7MA+u/Cmq9b/rON3//t5WofNR4m/Ybft2vOLj0WtUzjn018ekHjTsnIyBsQug==", "dev": true, "requires": { - "@typescript-eslint/types": "4.8.2", - "@typescript-eslint/visitor-keys": "4.8.2", + "@typescript-eslint/types": "4.9.0", + "@typescript-eslint/visitor-keys": "4.9.0", "debug": "^4.1.1", "globby": "^11.0.1", "is-glob": "^4.0.1", @@ -909,12 +918,12 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.8.2.tgz", - "integrity": "sha512-Vg+/SJTMZJEKKGHW7YC21QxgKJrSbxoYYd3MEUGtW7zuytHuEcksewq0DUmo4eh/CTNrVJGSdIY9AtRb6riWFw==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.9.0.tgz", + "integrity": "sha512-sV45zfdRqQo1A97pOSx3fsjR+3blmwtdCt8LDrXgCX36v4Vmz4KHrhpV6Fo2cRdXmyumxx11AHw0pNJqCNpDyg==", "dev": true, "requires": { - "@typescript-eslint/types": "4.8.2", + "@typescript-eslint/types": "4.9.0", "eslint-visitor-keys": "^2.0.0" } }, @@ -1033,12 +1042,9 @@ "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" }, "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.0.0.tgz", + "integrity": "sha512-6564t0m0fuQMnockqBv7wJxo9T5C2V9JpYXyNScfRDPVLusOQQhkpMGrFC17QbiolraQ1sMXX+Y5nJpjqozL4g==" }, "anymatch": { "version": "3.1.1", @@ -1472,6 +1478,14 @@ "widest-line": "^3.1.0" }, "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -1893,6 +1907,16 @@ "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + } } }, "chokidar": { @@ -2787,13 +2811,13 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "eslint": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.14.0.tgz", - "integrity": "sha512-5YubdnPXrlrYAFCKybPuHIAH++PINe1pmKNc5wQRB9HSbqIK1ywAnntE3Wwua4giKu0bjligf1gLF6qxMGOYRA==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.15.0.tgz", + "integrity": "sha512-Vr64xFDT8w30wFll643e7cGrIkPEU50yIiI36OdSIDoSGguIeaLzBo0vpGvzo9RECUqq7htURfwEtKqwytkqzA==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@eslint/eslintrc": "^0.2.1", + "@eslint/eslintrc": "^0.2.2", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -2803,10 +2827,10 @@ "eslint-scope": "^5.1.1", "eslint-utils": "^2.1.0", "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.0", + "espree": "^7.3.1", "esquery": "^1.2.0", "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", + "file-entry-cache": "^6.0.0", "functional-red-black-tree": "^1.0.1", "glob-parent": "^5.0.0", "globals": "^12.1.0", @@ -3310,9 +3334,9 @@ } }, "eslint-plugin-prettier": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz", - "integrity": "sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.2.0.tgz", + "integrity": "sha512-kOUSJnFjAUFKwVxuzy6sA5yyMx6+o9ino4gCdShzBNx4eyFRudWRYKCFolKjoM40PEiuU6Cn7wBLfq3WsGg7qg==", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0" @@ -3365,9 +3389,9 @@ } }, "eslint-rule-docs": { - "version": "1.1.215", - "resolved": "https://registry.npmjs.org/eslint-rule-docs/-/eslint-rule-docs-1.1.215.tgz", - "integrity": "sha512-lADlvFuceJvlU/NhD9gpnCt2lfdfpkz2BizeJNy7bkTr0VQA4w+vW3Nh4G569w6a8SPQczKL4PDB83s6j5i++A==", + "version": "1.1.216", + "resolved": "https://registry.npmjs.org/eslint-rule-docs/-/eslint-rule-docs-1.1.216.tgz", + "integrity": "sha512-+Gs6G41O/A/aBj3JJWI2CwFZZ5XxkOPdlz2NRGujEqfYtAnZIIQHdVn7mw6wIZ0nGefLXpBqAekJkW8LbSsqvg==", "dev": true }, "eslint-scope": { @@ -3450,13 +3474,13 @@ } }, "espree": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz", - "integrity": "sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", "dev": true, "requires": { "acorn": "^7.4.0", - "acorn-jsx": "^5.2.0", + "acorn-jsx": "^5.3.1", "eslint-visitor-keys": "^1.3.0" }, "dependencies": { @@ -3556,31 +3580,20 @@ } }, "execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", + "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", "dev": true, "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", "is-stream": "^2.0.0", "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" - }, - "dependencies": { - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - } } }, "expand-brackets": { @@ -3793,12 +3806,12 @@ } }, "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz", + "integrity": "sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==", "dev": true, "requires": { - "flat-cache": "^2.0.1" + "flat-cache": "^3.0.4" } }, "fill-keys": { @@ -3913,31 +3926,19 @@ "dev": true }, "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - }, - "dependencies": { - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } + "flatted": "^3.1.0", + "rimraf": "^3.0.2" } }, "flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz", + "integrity": "sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA==", "dev": true }, "flow-parser": { @@ -4398,9 +4399,9 @@ "dev": true }, "human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true }, "ieee754": { @@ -4528,10 +4529,13 @@ } }, "is-arguments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", - "dev": true + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", + "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } }, "is-arrayish": { "version": "0.2.1", @@ -4688,9 +4692,9 @@ "dev": true }, "is-negative-zero": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", - "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", "dev": true }, "is-npm": { @@ -4719,9 +4723,9 @@ } }, "is-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", - "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", + "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==", "dev": true }, "is-path-cwd": { @@ -5433,13 +5437,11 @@ "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" }, "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "yallist": "^4.0.0" } }, "make-dir": { @@ -5751,14 +5753,6 @@ "dev": true, "requires": { "yallist": "^4.0.0" - }, - "dependencies": { - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } } }, "mixin-deep": { @@ -6126,6 +6120,16 @@ "path-exists": "^3.0.0" } }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, "make-dir": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", @@ -6234,9 +6238,15 @@ } }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", + "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true }, "yargs": { @@ -6319,9 +6329,9 @@ } }, "object-inspect": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", - "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", "dev": true }, "object-is": { @@ -7424,9 +7434,12 @@ } }, "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "requires": { + "lru-cache": "^6.0.0" + } }, "semver-diff": { "version": "3.1.1", @@ -7550,6 +7563,16 @@ "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", "is-fullwidth-code-point": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + } } }, "snapdragon": { @@ -7753,6 +7776,16 @@ "signal-exit": "^3.0.0" } }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, "rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -7770,6 +7803,12 @@ "requires": { "isexe": "^2.0.0" } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true } } }, @@ -8927,6 +8966,16 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, "mimic-fn": { "version": "2.1.0", "bundled": true, @@ -9331,6 +9380,12 @@ } } }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, "yaml": { "version": "1.10.0", "bundled": true, @@ -9639,9 +9694,9 @@ } }, "tsd": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/tsd/-/tsd-0.13.1.tgz", - "integrity": "sha512-+UYM8LRG/M4H8ISTg2ow8SWi65PS7Os+4DUnyiQLbJysXBp2DEmws9SMgBH+m8zHcJZqUJQ+mtDWJXP1IAvB2A==", + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/tsd/-/tsd-0.14.0.tgz", + "integrity": "sha512-fl1gS5orAwqIb0P2xMdppgCrwv1BfCJn67wBzRBCV9OUaWHVXHqiIqL6yX/519xFgT1ZOaLMhr5W9XDo8kuuRA==", "dev": true, "requires": { "eslint-formatter-pretty": "^4.0.0", @@ -9652,6 +9707,15 @@ "update-notifier": "^4.1.0" }, "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -10087,6 +10151,16 @@ "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + } } }, "wrappy": { @@ -10094,15 +10168,6 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, - "write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } - }, "write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", @@ -10393,15 +10458,6 @@ "p-locate": "^5.0.0" } }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, "meow": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/meow/-/meow-8.0.0.tgz", @@ -10539,12 +10595,6 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true } } }, @@ -10560,10 +10610,9 @@ "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==" }, "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "yaml": { "version": "1.10.0", @@ -10578,9 +10627,9 @@ "dev": true }, "yargs": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.1.1.tgz", - "integrity": "sha512-hAD1RcFP/wfgfxgMVswPE+z3tlPFtxG8/yWUrG2i17sTWGCGqWnxKcLTF4cUKDUK8fzokwsmO9H0TDkRbMHy8w==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "requires": { "cliui": "^7.0.2", "escalade": "^3.1.1", diff --git a/package.json b/package.json index 63963d8a8..17dcd6f83 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ "@concordance/react": "^2.0.0", "acorn": "^8.0.4", "acorn-walk": "^8.0.0", - "ansi-styles": "^4.3.0", + "ansi-styles": "^5.0.0", "arrgv": "^1.0.2", "arrify": "^2.0.1", "callsites": "^3.1.0", @@ -111,7 +111,7 @@ "trim-off-newlines": "^1.0.1", "update-notifier": "^5.0.1", "write-file-atomic": "^3.0.3", - "yargs": "^16.1.1" + "yargs": "^16.2.0" }, "devDependencies": { "@ava/babel": "^1.0.1", @@ -122,7 +122,7 @@ "c8": "^7.3.5", "delay": "^4.4.0", "esm": "^3.2.25", - "execa": "^4.1.0", + "execa": "^5.0.0", "get-stream": "^6.0.0", "it-first": "^1.0.4", "proxyquire": "^2.1.3", @@ -135,7 +135,7 @@ "temp-write": "^4.0.0", "tempy": "^1.0.0", "touch": "^3.1.0", - "tsd": "^0.13.1", + "tsd": "^0.14.0", "typescript": "^4.1.2", "xo": "^0.35.0", "zen-observable": "^0.8.15" From 5d3b2006111a91253e0f7474ae278e41c1240820 Mon Sep 17 00:00:00 2001 From: Mark Wubben Date: Mon, 7 Dec 2020 10:07:41 +0100 Subject: [PATCH 8/8] 3.14.0 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3d970aef9..a146170de 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "ava", - "version": "3.13.0", + "version": "3.14.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 17dcd6f83..13b0f417a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ava", - "version": "3.13.0", + "version": "3.14.0", "description": "Node.js test runner that lets you develop with confidence.", "license": "MIT", "repository": "avajs/ava",