From d9f0b26b79d7de2166d3187ffb2b5c536e8a249d Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Wed, 8 Apr 2020 17:29:03 -0700 Subject: [PATCH 01/61] build(root): update repository urls in package json files as per https://docs.npmjs.com/files/package.json#repository --- package.json | 7 ++++--- packages/assert/package.json | 5 +++++ packages/format/package.json | 5 +++++ packages/preset-rules/package.json | 5 +++++ 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 710c463e..101f1c3e 100644 --- a/package.json +++ b/package.json @@ -2,14 +2,15 @@ "name": "root", "private": true, "description": "Salesforce Accessibility Automated Testing Libraries and Tools (@sa11y packages)", + "license": "BSD-3-Clause", "repository": { - "url": "git://github.com/salesforce/sa11y.git" + "type": "git", + "url": "https://github.com/salesforce/sa11y.git" }, "bugs": { "url": "https://github.com/salesforce/sa11y/issues" }, - "license": "BSD-3-Clause", - "homepage": "https://help.salesforce.com/articleView?id=accessibility_overview.htm&type=5", + "homepage": "https://github.com/salesforce/sa11y", "workspaces": [ "packages/*" ], diff --git a/packages/assert/package.json b/packages/assert/package.json index caf8f1b1..27bc5cd2 100644 --- a/packages/assert/package.json +++ b/packages/assert/package.json @@ -3,6 +3,11 @@ "version": "0.1.0", "description": "Provides assertAccessible API to check DOM for accessibility issues", "license": "BSD-3-Clause", + "repository": { + "type": "git", + "url": "https://github.com/salesforce/sa11y.git", + "directory": "packages/assert" + }, "keywords": [ "accessibility", "automated testing", diff --git a/packages/format/package.json b/packages/format/package.json index 3bf4025e..5a57e6a6 100644 --- a/packages/format/package.json +++ b/packages/format/package.json @@ -3,6 +3,11 @@ "version": "0.1.0", "description": "Accessibility results re-formatter", "license": "BSD-3-Clause", + "repository": { + "type": "git", + "url": "https://github.com/salesforce/sa11y.git", + "directory": "packages/format" + }, "keywords": [ "accessibility", "automated testing", diff --git a/packages/preset-rules/package.json b/packages/preset-rules/package.json index 7b6337d5..86f7d914 100644 --- a/packages/preset-rules/package.json +++ b/packages/preset-rules/package.json @@ -3,6 +3,11 @@ "version": "0.1.1", "description": "Accessibility preset rule configs for axe", "license": "BSD-3-Clause", + "repository": { + "type": "git", + "url": "https://github.com/salesforce/sa11y.git", + "directory": "packages/preset-rules" + }, "keywords": [ "accessibility", "automated testing", From 7a4118743aafeef50002499c24b7c3ee3e71ad81 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Wed, 8 Apr 2020 18:59:58 -0700 Subject: [PATCH 02/61] test(rules,format): fix test names to follow convention --- .../__snapshots__/format.test.ts.snap | 2 +- packages/format/__tests__/format.test.ts | 4 ++-- packages/preset-rules/__tests__/rules.test.ts | 22 +++++++++---------- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/packages/format/__tests__/__snapshots__/format.test.ts.snap b/packages/format/__tests__/__snapshots__/format.test.ts.snap index 37217d9f..bf6a8347 100644 --- a/packages/format/__tests__/__snapshots__/format.test.ts.snap +++ b/packages/format/__tests__/__snapshots__/format.test.ts.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`format dom with a11y issues 1`] = ` +exports[`a11y Results Formatter should format a11y issues as expected 1`] = ` "Page must have means to bypass repeated blocks (bypass): html - More info: https://dequeuniversity.com/rules/axe/3.5/bypass?application=axeAPI diff --git a/packages/format/__tests__/format.test.ts b/packages/format/__tests__/format.test.ts index d67d50a3..2b5a4e3c 100644 --- a/packages/format/__tests__/format.test.ts +++ b/packages/format/__tests__/format.test.ts @@ -13,8 +13,8 @@ afterEach(() => { document.body.innerHTML = ''; // reset dom body }); -describe('format', () => { - it('dom with a11y issues', async () => { +describe('a11y Results Formatter', () => { + it('should format a11y issues as expected', async () => { document.body.innerHTML = ` diff --git a/packages/preset-rules/__tests__/rules.test.ts b/packages/preset-rules/__tests__/rules.test.ts index 67941e10..75be0841 100644 --- a/packages/preset-rules/__tests__/rules.test.ts +++ b/packages/preset-rules/__tests__/rules.test.ts @@ -14,18 +14,11 @@ import { recommended } from '../src'; * - Add benchmark test for individual rules using https://github.com/salesforce/best * */ -describe('@sa11y/rules sanity checks', () => { - it('recommended is a subset of extended', () => { - expect(extended.runOnly.values).toEqual(expect.arrayContaining(recommended.runOnly.values)); - // TODO (debug): Why is this failing? - // expect(extended).toEqual(expect.objectContaining(recommended)); - }); -}); - -describe('@sa11y/rules sanity checks with axe', () => { +describe('preset-rules', () => { // Rules that have been excluded from running due to being deprecated by axe // or due to their experimental nature const excludedRules = [ + /* cSpell:disable */ 'aria-dpub-role-fallback', 'checkboxgroup', 'frame-title-unique', @@ -36,18 +29,25 @@ describe('@sa11y/rules sanity checks with axe', () => { 'table-duplicate-name', 'table-fake-caption', 'video-description', + /* cSpell:enable */ ]; const axeRules = axe.getRules().map((ruleObj) => ruleObj.ruleId); + it('recommended ruleset should be a subset of extended', () => { + expect(extended.runOnly.values).toEqual(expect.arrayContaining(recommended.runOnly.values)); + // TODO (debug): Why is this failing? + // expect(extended).toEqual(expect.objectContaining(recommended)); + }); + it('should not contain excluded, deprecated rules', () => { expect(extended.runOnly.values).toEqual(expect.not.arrayContaining(excludedRules)); }); - it('all rules are present in axe', () => { + it('should match with the rules present in axe', () => { expect(axeRules).toEqual(expect.arrayContaining(extended.runOnly.values)); }); - it('only rules not used from axe are excluded, deprecated rules', () => { + it('should not use only the excluded, deprecated rules from axe', () => { const unusedRules = axeRules.filter((rule) => !extended.runOnly.values.includes(rule)); expect(unusedRules.sort()).toEqual(excludedRules.sort()); }); From 483291cc5b25a194f232e817b66f0c032d013891 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Thu, 9 Apr 2020 13:46:33 -0700 Subject: [PATCH 03/61] feat(jest): add basic scaffolding for jest integration --- packages/jest/README.md | 9 +++++++++ packages/jest/__tests__/jest.test.ts | 16 ++++++++++++++++ packages/jest/package.json | 28 ++++++++++++++++++++++++++++ packages/jest/src/jest.ts | 6 ++++++ packages/jest/tsconfig.json | 8 ++++++++ 5 files changed, 67 insertions(+) create mode 100644 packages/jest/README.md create mode 100644 packages/jest/__tests__/jest.test.ts create mode 100644 packages/jest/package.json create mode 100644 packages/jest/src/jest.ts create mode 100644 packages/jest/tsconfig.json diff --git a/packages/jest/README.md b/packages/jest/README.md new file mode 100644 index 00000000..61f0af4c --- /dev/null +++ b/packages/jest/README.md @@ -0,0 +1,9 @@ +# `format` + +Format accessibility results from axe + +## Usage + +``` +TODO +``` diff --git a/packages/jest/__tests__/jest.test.ts b/packages/jest/__tests__/jest.test.ts new file mode 100644 index 00000000..ec9415bc --- /dev/null +++ b/packages/jest/__tests__/jest.test.ts @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2020, salesforce.com, inc. + * All rights reserved. + * SPDX-License-Identifier: BSD-3-Clause + * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause + */ + +import 'global-jsdom/lib/register'; // https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#required-globals + +afterEach(() => { + document.body.innerHTML = ''; // reset dom body +}); + +describe('format', () => { + it.todo('dom with a11y issues'); +}); diff --git a/packages/jest/package.json b/packages/jest/package.json new file mode 100644 index 00000000..d7df889e --- /dev/null +++ b/packages/jest/package.json @@ -0,0 +1,28 @@ +{ + "name": "@sa11y/jest", + "version": "0.1.0", + "description": "Accessibility testing libraries integration with Jest", + "license": "BSD-3-Clause", + "repository": { + "type": "git", + "url": "https://github.com/salesforce/sa11y.git", + "directory": "packages/jest" + }, + "keywords": [ + "accessibility", + "automated testing", + "axe", + "jest" + ], + "main": "dist/jest.js", + "types": "dist/jest.d.ts", + "files": [ + "dist/**/*.js" + ], + "dependencies": {}, + "devDependencies": { + "axe-core": "3.5.3", + "global-jsdom": "^6.1.0", + "jsdom": "^16.2.2" + } +} diff --git a/packages/jest/src/jest.ts b/packages/jest/src/jest.ts new file mode 100644 index 00000000..27d5b8b8 --- /dev/null +++ b/packages/jest/src/jest.ts @@ -0,0 +1,6 @@ +/* + * Copyright (c) 2020, salesforce.com, inc. + * All rights reserved. + * SPDX-License-Identifier: BSD-3-Clause + * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause + */ diff --git a/packages/jest/tsconfig.json b/packages/jest/tsconfig.json new file mode 100644 index 00000000..fe6e6983 --- /dev/null +++ b/packages/jest/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig.common.json", + "compilerOptions": { + "rootDir": "src", + "outDir": "dist" + }, + "include": ["src"] +} From 4eaaf65f890f125ad5732d75e7a54284fd4ada00 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Mon, 13 Apr 2020 14:43:03 -0700 Subject: [PATCH 04/61] build(root): fix lint:fix script as --fix option wasn't being passed to the eslint cmd --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 101f1c3e..52d17dc6 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ ], "scripts": { "commit": "! git diff --cached --exit-code && git-cz", - "lint": "eslint . && lockfile-lint --path yarn.lock --allowed-hosts registry.yarnpkg.com --validate-https", + "lint": "lockfile-lint --path yarn.lock --allowed-hosts registry.yarnpkg.com --validate-https && eslint .", "lint:fix": "yarn lint --fix", "lint:staged": "lint-staged", "update": "yarn upgrade; yarn audit; yarn outdated", From 6630be3cfd106b3689bcc4551539927f362f6ce2 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Mon, 13 Apr 2020 20:45:14 -0700 Subject: [PATCH 05/61] build(jest): add jest as a peer dependency modify root jest dep version to match --- package.json | 4 ++-- packages/jest/package.json | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 52d17dc6..c58d8377 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "@babel/preset-typescript": "^7.9.0", "@commitlint/cli": "^8.3.5", "@commitlint/config-conventional": "^8.3.4", - "@types/jest": "^25.1.4", + "@types/jest": "^25.2.1", "@types/jsdom": "^16.1.1", "@types/node": "^12.12.31", "@typescript-eslint/eslint-plugin": "^2.23.0", @@ -67,7 +67,7 @@ "eslint-plugin-prettier": "^3.1.2", "eslint-plugin-tsdoc": "^0.2.3", "husky": "^4.2.3", - "jest": "^25.1.0", + "jest": "^25.3.0", "lerna": "^3.20.2", "lint-staged": "^10.0.8", "lockfile-lint": "^4.2.2", diff --git a/packages/jest/package.json b/packages/jest/package.json index d7df889e..37cda1ff 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -3,6 +3,7 @@ "version": "0.1.0", "description": "Accessibility testing libraries integration with Jest", "license": "BSD-3-Clause", + "homepage": "https://github.com/salesforce/sa11y/blob/master/packages/jest/README.md", "repository": { "type": "git", "url": "https://github.com/salesforce/sa11y.git", @@ -20,6 +21,9 @@ "dist/**/*.js" ], "dependencies": {}, + "peerDependencies": { + "jest": "^25.3.0" + }, "devDependencies": { "axe-core": "3.5.3", "global-jsdom": "^6.1.0", From a91a3e07a5ceaf1c6cd5db167a59a0f1f415c3b4 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Mon, 13 Apr 2020 20:56:55 -0700 Subject: [PATCH 06/61] docs(root): add homepage fields in package json to point to readme and add links to existing docs in root readme --- README.md | 16 ++++++++++++---- cSpell.json | 1 + packages/assert/package.json | 1 + packages/format/package.json | 1 + packages/preset-rules/package.json | 1 + 5 files changed, 16 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 343cc316..fb2bcc78 100644 --- a/README.md +++ b/README.md @@ -5,12 +5,20 @@ Salesforce Accessibility Automated Testing Libraries and Tools (@sa11y packages) ![CI](https://github.com/salesforce/sa11y/workflows/CI/badge.svg) - [Salesforce Accessibility Automation Libraries](#salesforce-accessibility-automation-libraries) + - [Docs](#docs) - [Packages](#packages) - - [Preset Accessibility rules](#preset-accessibility-rules) - - [assertAccessible API (TBD)](#assertaccessible-api-tbd) - - [a11y results formatter (TBD)](#a11y-results-formatter-tbd) + - [Preset accessibility rules](#preset-accessibility-rules) + - [assertAccessible API](#assertaccessible-api) + - [a11y results formatter](#a11y-results-formatter) - [Jest integration (TBD)](#jest-integration-tbd) +## Docs + +- [Developer Guidelines](./CONTRIBUTING.md) +- [Code of Conduct](./CODE_OF_CONDUCT.md) +- [Changelog](./CHANGELOG.md) +- [LICENSE](./LICENSE.txt) + ## Packages This repo contains the following packages @@ -29,4 +37,4 @@ This repo contains the following packages ### Jest integration (TBD) -- integrates the assertAccessible API with the [Jest assertion API](https://jestjs.io/docs/en/using-matchers) +- integrates [assertAccessible API](./packages/assert/README.md) with the [Jest assertion API](https://jestjs.io/docs/en/using-matchers) diff --git a/cSpell.json b/cSpell.json index 968b3a17..add80e47 100644 --- a/cSpell.json +++ b/cSpell.json @@ -1,6 +1,7 @@ { "ignorePaths": ["node_modules/**", "package.json"], "ignoreWords": [ + "assertAccessible", "SPDX", // license header "tsdoc" ], diff --git a/packages/assert/package.json b/packages/assert/package.json index 27bc5cd2..3419641c 100644 --- a/packages/assert/package.json +++ b/packages/assert/package.json @@ -3,6 +3,7 @@ "version": "0.1.0", "description": "Provides assertAccessible API to check DOM for accessibility issues", "license": "BSD-3-Clause", + "homepage": "https://github.com/salesforce/sa11y/blob/master/packages/assert/README.md", "repository": { "type": "git", "url": "https://github.com/salesforce/sa11y.git", diff --git a/packages/format/package.json b/packages/format/package.json index 5a57e6a6..e285a458 100644 --- a/packages/format/package.json +++ b/packages/format/package.json @@ -3,6 +3,7 @@ "version": "0.1.0", "description": "Accessibility results re-formatter", "license": "BSD-3-Clause", + "homepage": "https://github.com/salesforce/sa11y/blob/master/packages/format/README.md", "repository": { "type": "git", "url": "https://github.com/salesforce/sa11y.git", diff --git a/packages/preset-rules/package.json b/packages/preset-rules/package.json index 86f7d914..0eae8660 100644 --- a/packages/preset-rules/package.json +++ b/packages/preset-rules/package.json @@ -3,6 +3,7 @@ "version": "0.1.1", "description": "Accessibility preset rule configs for axe", "license": "BSD-3-Clause", + "homepage": "https://github.com/salesforce/sa11y/blob/master/packages/preset-rules/README.md", "repository": { "type": "git", "url": "https://github.com/salesforce/sa11y.git", From 51ec35dd1867bf2467cf1fe5f3ffbb8adc880e7c Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Mon, 13 Apr 2020 20:58:05 -0700 Subject: [PATCH 07/61] feat(jest): add scaffolding for jest expect matcher --- packages/jest/README.md | 12 +++++++++--- packages/jest/src/jest.ts | 12 ++++++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/packages/jest/README.md b/packages/jest/README.md index 61f0af4c..ae963643 100644 --- a/packages/jest/README.md +++ b/packages/jest/README.md @@ -1,9 +1,15 @@ -# `format` +# `jest` -Format accessibility results from axe +Accessibility helpers for [Jest](https://jestjs.io) ## Usage ``` -TODO +import { toBeAccessible } from '@sa11y/jest' + +// Setup DOM to be tested for accessibility +// ... + +// Assert that the DOM is accessible +expect().toBeAccessible() ``` diff --git a/packages/jest/src/jest.ts b/packages/jest/src/jest.ts index 27d5b8b8..1baa985e 100644 --- a/packages/jest/src/jest.ts +++ b/packages/jest/src/jest.ts @@ -4,3 +4,15 @@ * SPDX-License-Identifier: BSD-3-Clause * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ + +import { assertAccessible } from '@sa11y/assert'; + +async function toBeAccessible(dom: Document = document) { + await assertAccessible(dom); + return { + pass: true, + message: () => '', + }; +} + +expect.extend(toBeAccessible); From e8055fa86815c88d78ae53e3dc4bd7ba9bfa9796 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Thu, 23 Apr 2020 13:33:00 -0700 Subject: [PATCH 08/61] improvement(jest): flesh out custom jest axe matcher add type def, tests --- packages/jest/__tests__/jest.test.ts | 48 ++++++++++++++++++++++++++-- packages/jest/src/jest.ts | 34 +++++++++++++++++--- 2 files changed, 75 insertions(+), 7 deletions(-) diff --git a/packages/jest/__tests__/jest.test.ts b/packages/jest/__tests__/jest.test.ts index ec9415bc..27ba7fa8 100644 --- a/packages/jest/__tests__/jest.test.ts +++ b/packages/jest/__tests__/jest.test.ts @@ -6,11 +6,55 @@ */ import 'global-jsdom/lib/register'; // https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#required-globals +import { toBeAccessible } from '../src/jest'; +import { extended, recommended } from '@sa11y/preset-rules'; + +// TODO (de-duplicate): Extract into a common place and reuse across packages +const domWithA11yIssues = ` + + + + `; + +// From https://github.com/dequelabs/axe-selenium-java/blob/develop/src/test/resources/test-app.js--> +const domWithNoA11yIssues = ` + + + Test Page + + +
+

This is a test

+

This is a test page with no violations

+
+ + + + `; + +beforeAll(() => { + expect.extend({ toBeAccessible }); +}); afterEach(() => { document.body.innerHTML = ''; // reset dom body }); -describe('format', () => { - it.todo('dom with a11y issues'); +describe('toBeAccessible Jest API', function () { + // TODO (refactor): Sep basic functionality into their own tests from testing default args + // Use https://github.com/dankogai/js-combinatorics + document.body.innerHTML = domWithA11yIssues; + it.each([document, undefined])('throws no error for dom with no a11y issues: %#', (dom) => { + expect(dom).toBeAccessible(); + }); + + it.each([extended, recommended, undefined])( + 'toBeAccessible throws error for dom with a11y issues with config: %#', + (config) => { + expect(domWithA11yIssues).toBeAccessible(config); + } + ); }); diff --git a/packages/jest/src/jest.ts b/packages/jest/src/jest.ts index 1baa985e..8adc56dd 100644 --- a/packages/jest/src/jest.ts +++ b/packages/jest/src/jest.ts @@ -6,13 +6,37 @@ */ import { assertAccessible } from '@sa11y/assert'; +import { A11yConfig, extended } from '@sa11y/preset-rules'; -async function toBeAccessible(dom: Document = document) { - await assertAccessible(dom); +// Type def for custom jest a11y matcher toBeAccessible +// Ref: https://jestjs.io/docs/en/expect.html#expectextendmatchers +declare global { + // eslint-disable-next-line @typescript-eslint/no-namespace + namespace jest { + interface Matchers { + toBeAccessible(config?: A11yConfig): R; + } + } +} + +/** + * Jest expect matcher to check document for accessibility issues + * @param received - Document to be tested for accessibility + * @param config - A11yConfig to be used to test for accessibility. Defaults to extended. + */ +export async function toBeAccessible(received: Document = document, config: A11yConfig = extended) { + let isAccessible = true; + let a11yViolations = ''; + try { + await assertAccessible(received, config); + } catch (e) { + isAccessible = false; + a11yViolations = e; + } return { - pass: true, - message: () => '', + pass: isAccessible, + message: (): string => `expected document to have no accessibility violations ${a11yViolations}`, }; } -expect.extend(toBeAccessible); +expect.extend({ toBeAccessible }); From 54be10756b7ecc18bd51af793217707ca0fb403c Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Thu, 23 Apr 2020 15:43:37 -0700 Subject: [PATCH 09/61] build(jest): add jest matcher utils dep --- packages/jest/package.json | 7 +- yarn.lock | 703 +++++++++++++++++++++++-------------- 2 files changed, 446 insertions(+), 264 deletions(-) diff --git a/packages/jest/package.json b/packages/jest/package.json index 37cda1ff..4980f3da 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -13,14 +13,17 @@ "accessibility", "automated testing", "axe", - "jest" + "jest", + "matcher" ], "main": "dist/jest.js", "types": "dist/jest.d.ts", "files": [ "dist/**/*.js" ], - "dependencies": {}, + "dependencies": { + "jest-matcher-utils": "^25.4.0" + }, "peerDependencies": { "jest": "^25.3.0" }, diff --git a/yarn.lock b/yarn.lock index 28bdda08..8ef03e88 100644 --- a/yarn.lock +++ b/yarn.lock @@ -331,20 +331,27 @@ "@babel/helper-create-regexp-features-plugin" "^7.8.8" "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-async-generators@^7.8.0": +"@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-bigint@^7.0.0": +"@babel/plugin-syntax-bigint@^7.0.0", "@babel/plugin-syntax-bigint@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-class-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.8.3.tgz#6cb933a8872c8d359bfde69bbeaae5162fd1e8f7" + integrity sha512-UcAyQWg2bAN647Q+O811tG9MrJ38Z10jjhQdKNAL8fsyPzE3cCN/uT+f55cFVY4aGO4jqJAvmqsuY3GQDwAoXg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-dynamic-import@^7.8.0": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" @@ -352,14 +359,21 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-json-strings@^7.8.0": +"@babel/plugin-syntax-json-strings@^7.8.0", "@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": +"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.8.3.tgz#3995d7d7ffff432f6ddc742b47e730c054599897" + integrity sha512-Zpg2Sgc++37kuFl6ppq2Q7Awc6E6AIW671x5PY8E/f7MCIyPPGK/EoeZXvvY3P42exZ3Q4/t3YOzP/HiN79jDg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== @@ -373,21 +387,21 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0": +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-catch-binding@^7.8.0": +"@babel/plugin-syntax-optional-catch-binding@^7.8.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-chaining@^7.8.0": +"@babel/plugin-syntax-optional-chaining@^7.8.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== @@ -1018,43 +1032,44 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== -"@jest/console@^25.2.6": - version "25.2.6" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-25.2.6.tgz#f594847ec8aef3cf27f448abe97e76e491212e97" - integrity sha512-bGp+0PicZVCEhb+ifnW9wpKWONNdkhtJsRE7ap729hiAfTvCN6VhGx0s/l/V/skA2pnyqq+N/7xl9ZWfykDpsg== +"@jest/console@^25.4.0": + version "25.4.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-25.4.0.tgz#e2760b532701137801ba824dcff6bc822c961bac" + integrity sha512-CfE0erx4hdJ6t7RzAcE1wLG6ZzsHSmybvIBQDoCkDM1QaSeWL9wJMzID/2BbHHa7ll9SsbbK43HjbERbBaFX2A== dependencies: - "@jest/source-map" "^25.2.6" + "@jest/types" "^25.4.0" chalk "^3.0.0" - jest-util "^25.2.6" + jest-message-util "^25.4.0" + jest-util "^25.4.0" slash "^3.0.0" -"@jest/core@^25.2.7": - version "25.2.7" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-25.2.7.tgz#58d697687e94ee644273d15e4eed6a20e27187cd" - integrity sha512-Nd6ELJyR+j0zlwhzkfzY70m04hAur0VnMwJXVe4VmmD/SaQ6DEyal++ERQ1sgyKIKKEqRuui6k/R0wHLez4P+g== +"@jest/core@^25.4.0": + version "25.4.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-25.4.0.tgz#cc1fe078df69b8f0fbb023bb0bcee23ef3b89411" + integrity sha512-h1x9WSVV0+TKVtATGjyQIMJENs8aF6eUjnCoi4jyRemYZmekLr8EJOGQqTWEX8W6SbZ6Skesy9pGXrKeAolUJw== dependencies: - "@jest/console" "^25.2.6" - "@jest/reporters" "^25.2.6" - "@jest/test-result" "^25.2.6" - "@jest/transform" "^25.2.6" - "@jest/types" "^25.2.6" + "@jest/console" "^25.4.0" + "@jest/reporters" "^25.4.0" + "@jest/test-result" "^25.4.0" + "@jest/transform" "^25.4.0" + "@jest/types" "^25.4.0" ansi-escapes "^4.2.1" chalk "^3.0.0" exit "^0.1.2" graceful-fs "^4.2.3" - jest-changed-files "^25.2.6" - jest-config "^25.2.7" - jest-haste-map "^25.2.6" - jest-message-util "^25.2.6" + jest-changed-files "^25.4.0" + jest-config "^25.4.0" + jest-haste-map "^25.4.0" + jest-message-util "^25.4.0" jest-regex-util "^25.2.6" - jest-resolve "^25.2.6" - jest-resolve-dependencies "^25.2.7" - jest-runner "^25.2.7" - jest-runtime "^25.2.7" - jest-snapshot "^25.2.7" - jest-util "^25.2.6" - jest-validate "^25.2.6" - jest-watcher "^25.2.7" + jest-resolve "^25.4.0" + jest-resolve-dependencies "^25.4.0" + jest-runner "^25.4.0" + jest-runtime "^25.4.0" + jest-snapshot "^25.4.0" + jest-util "^25.4.0" + jest-validate "^25.4.0" + jest-watcher "^25.4.0" micromatch "^4.0.2" p-each-series "^2.1.0" realpath-native "^2.0.0" @@ -1062,36 +1077,36 @@ slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^25.2.6": - version "25.2.6" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-25.2.6.tgz#8f7931e79abd81893ce88b7306f0cc4744835000" - integrity sha512-17WIw+wCb9drRNFw1hi8CHah38dXVdOk7ga9exThhGtXlZ9mK8xH4DjSB9uGDGXIWYSHmrxoyS6KJ7ywGr7bzg== +"@jest/environment@^25.4.0": + version "25.4.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-25.4.0.tgz#45071f525f0d8c5a51ed2b04fd42b55a8f0c7cb3" + integrity sha512-KDctiak4mu7b4J6BIoN/+LUL3pscBzoUCP+EtSPd2tK9fqyDY5OF+CmkBywkFWezS9tyH5ACOQNtpjtueEDH6Q== dependencies: - "@jest/fake-timers" "^25.2.6" - "@jest/types" "^25.2.6" - jest-mock "^25.2.6" + "@jest/fake-timers" "^25.4.0" + "@jest/types" "^25.4.0" + jest-mock "^25.4.0" -"@jest/fake-timers@^25.2.6": - version "25.2.6" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-25.2.6.tgz#239dbde3f56badf7d05bcf888f5d669296077cad" - integrity sha512-A6qtDIA2zg/hVgUJJYzQSHFBIp25vHdSxW/s4XmTJAYxER6eL0NQdQhe4+232uUSviKitubHGXXirt5M7blPiA== +"@jest/fake-timers@^25.4.0": + version "25.4.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-25.4.0.tgz#3a9a4289ba836abd084953dca406389a57e00fbd" + integrity sha512-lI9z+VOmVX4dPPFzyj0vm+UtaB8dCJJ852lcDnY0uCPRvZAaVGnMwBBc1wxtf+h7Vz6KszoOvKAt4QijDnHDkg== dependencies: - "@jest/types" "^25.2.6" - jest-message-util "^25.2.6" - jest-mock "^25.2.6" - jest-util "^25.2.6" + "@jest/types" "^25.4.0" + jest-message-util "^25.4.0" + jest-mock "^25.4.0" + jest-util "^25.4.0" lolex "^5.0.0" -"@jest/reporters@^25.2.6": - version "25.2.6" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-25.2.6.tgz#6d87e40fb15adb69e22bb83aa02a4d88b2253b5f" - integrity sha512-DRMyjaxcd6ZKctiXNcuVObnPwB1eUs7xrUVu0J2V0p5/aZJei5UM9GL3s/bmN4hRV8Mt3zXh+/9X2o0Q4ClZIA== +"@jest/reporters@^25.4.0": + version "25.4.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-25.4.0.tgz#836093433b32ce4e866298af2d6fcf6ed351b0b0" + integrity sha512-bhx/buYbZgLZm4JWLcRJ/q9Gvmd3oUh7k2V7gA4ZYBx6J28pIuykIouclRdiAC6eGVX1uRZT+GK4CQJLd/PwPg== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^25.2.6" - "@jest/test-result" "^25.2.6" - "@jest/transform" "^25.2.6" - "@jest/types" "^25.2.6" + "@jest/console" "^25.4.0" + "@jest/test-result" "^25.4.0" + "@jest/transform" "^25.4.0" + "@jest/types" "^25.4.0" chalk "^3.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" @@ -1100,16 +1115,16 @@ istanbul-lib-instrument "^4.0.0" istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.0" - jest-haste-map "^25.2.6" - jest-resolve "^25.2.6" - jest-util "^25.2.6" - jest-worker "^25.2.6" + istanbul-reports "^3.0.2" + jest-haste-map "^25.4.0" + jest-resolve "^25.4.0" + jest-util "^25.4.0" + jest-worker "^25.4.0" slash "^3.0.0" source-map "^0.6.0" string-length "^3.1.0" terminal-link "^2.0.0" - v8-to-istanbul "^4.0.1" + v8-to-istanbul "^4.1.3" optionalDependencies: node-notifier "^6.0.0" @@ -1122,25 +1137,25 @@ graceful-fs "^4.2.3" source-map "^0.6.0" -"@jest/test-result@^25.2.6": - version "25.2.6" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-25.2.6.tgz#f6082954955313eb96f6cabf9fb14f8017826916" - integrity sha512-gmGgcF4qz/pkBzyfJuVHo2DA24kIgVQ5Pf/VpW4QbyMLSegi8z+9foSZABfIt5se6k0fFj/3p/vrQXdaOgit0w== +"@jest/test-result@^25.4.0": + version "25.4.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-25.4.0.tgz#6f2ec2c8da9981ef013ad8651c1c6f0cb20c6324" + integrity sha512-8BAKPaMCHlL941eyfqhWbmp3MebtzywlxzV+qtngQ3FH+RBqnoSAhNEPj4MG7d2NVUrMOVfrwuzGpVIK+QnMAA== dependencies: - "@jest/console" "^25.2.6" - "@jest/types" "^25.2.6" + "@jest/console" "^25.4.0" + "@jest/types" "^25.4.0" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^25.2.7": - version "25.2.7" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-25.2.7.tgz#e4331f7b4850e34289b9a5c8ec8a2c03b400da8f" - integrity sha512-s2uYGOXONDSTJQcZJ9A3Zkg3hwe53RlX1HjUNqjUy3HIqwgwCKJbnAKYsORPbhxXi3ARMKA7JNBi9arsTxXoYw== +"@jest/test-sequencer@^25.4.0": + version "25.4.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-25.4.0.tgz#2b96f9d37f18dc3336b28e3c8070f97f9f55f43b" + integrity sha512-240cI+nsM3attx2bMp9uGjjHrwrpvxxrZi8Tyqp/cfOzl98oZXVakXBgxODGyBYAy/UGXPKXLvNc2GaqItrsJg== dependencies: - "@jest/test-result" "^25.2.6" - jest-haste-map "^25.2.6" - jest-runner "^25.2.7" - jest-runtime "^25.2.7" + "@jest/test-result" "^25.4.0" + jest-haste-map "^25.4.0" + jest-runner "^25.4.0" + jest-runtime "^25.4.0" "@jest/transform@^25.2.6": version "25.2.6" @@ -1164,6 +1179,28 @@ source-map "^0.6.1" write-file-atomic "^3.0.0" +"@jest/transform@^25.4.0": + version "25.4.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-25.4.0.tgz#eef36f0367d639e2fd93dccd758550377fbb9962" + integrity sha512-t1w2S6V1sk++1HHsxboWxPEuSpN8pxEvNrZN+Ud/knkROWtf8LeUmz73A4ezE8476a5AM00IZr9a8FO9x1+j3g== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^25.4.0" + babel-plugin-istanbul "^6.0.0" + chalk "^3.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.2.3" + jest-haste-map "^25.4.0" + jest-regex-util "^25.2.6" + jest-util "^25.4.0" + micromatch "^4.0.2" + pirates "^4.0.1" + realpath-native "^2.0.0" + slash "^3.0.0" + source-map "^0.6.1" + write-file-atomic "^3.0.0" + "@jest/types@^25.2.6": version "25.2.6" resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.2.6.tgz#c12f44af9bed444438091e4b59e7ed05f8659cb6" @@ -1174,6 +1211,16 @@ "@types/yargs" "^15.0.0" chalk "^3.0.0" +"@jest/types@^25.4.0": + version "25.4.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.4.0.tgz#5afeb8f7e1cba153a28e5ac3c9fe3eede7206d59" + integrity sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^15.0.0" + chalk "^3.0.0" + "@lerna/add@3.20.0": version "3.20.0" resolved "https://registry.yarnpkg.com/@lerna/add/-/add-3.20.0.tgz#bea7edf36fc93fb72ec34cb9ba854c48d4abf309" @@ -2012,7 +2059,7 @@ dependencies: type-detect "4.0.8" -"@types/babel__core@^7.1.0": +"@types/babel__core@^7.1.0", "@types/babel__core@^7.1.7": version "7.1.7" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.7.tgz#1dacad8840364a57c98d0dd4855c6dd3752c6b89" integrity sha512-RL62NqSFPCDK2FM1pSDH0scHpJvsXtZNiYlMB73DgPBaG1E38ZYVL+ei5EkWRbr+KC4YNiAUNBnRj+bgwpgjMw== @@ -2089,7 +2136,7 @@ "@types/istanbul-lib-coverage" "*" "@types/istanbul-lib-report" "*" -"@types/jest@^25.1.4": +"@types/jest@^25.2.1": version "25.2.1" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-25.2.1.tgz#9544cd438607955381c1bdbdb97767a249297db5" integrity sha512-msra1bCaAeEdkSyA0CZ6gW1ukMIvZ5YoJkdXw/qhQdsuuDlFTcEUrUw8CLCPt2rVRUfXlClVvK2gvPs9IokZaA== @@ -2126,6 +2173,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.34.tgz#0a5d6ae5d22612f0cf5f10320e1fc5d2a745dcb8" integrity sha512-BneGN0J9ke24lBRn44hVHNeDlrXRYF+VRp0HbSUNnEZahXGAysHZIqnf/hER6aabdBgzM4YOV4jrR8gj4Zfi0g== +"@types/normalize-package-data@^2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" + integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== + "@types/parse-json@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" @@ -2542,7 +2594,7 @@ axe-core@3.5.3: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-3.5.3.tgz#5b7c0ee7c5197d546bd3a07c3ef701896f5773e9" integrity sha512-HZpLE7xu05+8AbpqXITGdxp1Xwk8ysAXrg7MiKRY27py3DAyEJpoJQo1727pWF3F+O79V3r+cTWhOzfB49P89w== -babel-jest@^25.1.0, babel-jest@^25.2.6: +babel-jest@^25.1.0: version "25.2.6" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-25.2.6.tgz#fe67ff4d0db3626ca8082da8881dd5e84e07ae75" integrity sha512-MDJOAlwtIeIQiGshyX0d2PxTbV73xZMpNji40ivVTPQOm59OdRR9nYCkffqI7ugtsK4JR98HgNKbDbuVf4k5QQ== @@ -2555,6 +2607,19 @@ babel-jest@^25.1.0, babel-jest@^25.2.6: chalk "^3.0.0" slash "^3.0.0" +babel-jest@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-25.4.0.tgz#409eb3e2ddc2ad9a92afdbb00991f1633f8018d0" + integrity sha512-p+epx4K0ypmHuCnd8BapfyOwWwosNCYhedetQey1awddtfmEX0MmdxctGl956uwUmjwXR5VSS5xJcGX9DvdIog== + dependencies: + "@jest/transform" "^25.4.0" + "@jest/types" "^25.4.0" + "@types/babel__core" "^7.1.7" + babel-plugin-istanbul "^6.0.0" + babel-preset-jest "^25.4.0" + chalk "^3.0.0" + slash "^3.0.0" + babel-plugin-dynamic-import-node@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" @@ -2580,6 +2645,13 @@ babel-plugin-jest-hoist@^25.2.6: dependencies: "@types/babel__traverse" "^7.0.6" +babel-plugin-jest-hoist@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.4.0.tgz#0c122c1b93fb76f52d2465be2e8069e798e9d442" + integrity sha512-M3a10JCtTyKevb0MjuH6tU+cP/NVQZ82QPADqI1RQYY1OphztsCeIeQmTsHmF/NS6m0E51Zl4QNsI3odXSQF5w== + dependencies: + "@types/babel__traverse" "^7.0.6" + babel-polyfill@6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" @@ -2589,6 +2661,22 @@ babel-polyfill@6.26.0: core-js "^2.5.0" regenerator-runtime "^0.10.5" +babel-preset-current-node-syntax@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.2.tgz#fb4a4c51fe38ca60fede1dc74ab35eb843cb41d6" + integrity sha512-u/8cS+dEiK1SFILbOC8/rUI3ml9lboKuuMvZ/4aQnQmhecQAgPw5ew066C1ObnEAUmlx7dv/s2z52psWEtLNiw== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + babel-preset-jest@^25.2.6: version "25.2.6" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-25.2.6.tgz#5d3f7c99e2a8508d61775c9d68506d143b7f71b5" @@ -2598,6 +2686,14 @@ babel-preset-jest@^25.2.6: "@babel/plugin-syntax-object-rest-spread" "^7.0.0" babel-plugin-jest-hoist "^25.2.6" +babel-preset-jest@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-25.4.0.tgz#10037cc32b751b994b260964629e49dc479abf4c" + integrity sha512-PwFiEWflHdu3JCeTr0Pb9NcHHE34qWFnPQRVPvqQITx4CsDCzs6o05923I10XvLvn9nNsRHuiVgB72wG/90ZHQ== + dependencies: + babel-plugin-jest-hoist "^25.4.0" + babel-preset-current-node-syntax "^0.1.2" + babel-runtime@^6.23.0, babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" @@ -4324,16 +4420,16 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" -expect@^25.2.7: - version "25.2.7" - resolved "https://registry.yarnpkg.com/expect/-/expect-25.2.7.tgz#509b79f47502835f4071ff3ecc401f2eaecca709" - integrity sha512-yA+U2Ph0MkMsJ9N8q5hs9WgWI6oJYfecdXta6LkP/alY/jZZL1MHlJ2wbLh60Ucqf3G+51ytbqV3mlGfmxkpNw== +expect@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-25.4.0.tgz#0b16c17401906d1679d173e59f0d4580b22f8dc8" + integrity sha512-7BDIX99BTi12/sNGJXA9KMRcby4iAmu1xccBOhyKCyEhjcVKS3hPmHdA/4nSI9QGIOkUropKqr3vv7WMDM5lvQ== dependencies: - "@jest/types" "^25.2.6" + "@jest/types" "^25.4.0" ansi-styles "^4.0.0" jest-get-type "^25.2.6" - jest-matcher-utils "^25.2.7" - jest-message-util "^25.2.6" + jest-matcher-utils "^25.4.0" + jest-message-util "^25.4.0" jest-regex-util "^25.2.6" extend-shallow@^2.0.1: @@ -5615,7 +5711,7 @@ istanbul-lib-source-maps@^4.0.0: istanbul-lib-coverage "^3.0.0" source-map "^0.6.1" -istanbul-reports@^3.0.0: +istanbul-reports@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== @@ -5628,59 +5724,59 @@ iterable-to-stream@^1.0.1: resolved "https://registry.yarnpkg.com/iterable-to-stream/-/iterable-to-stream-1.0.1.tgz#37e86baacf6b1a0e9233dad4eb526d0423d08bf3" integrity sha512-O62gD5ADMUGtJoOoM9U6LQ7i4byPXUNoHJ6mqsmkQJcom331ZJGDApWgDESWyBMEHEJRjtHozgIiTzYo9RU4UA== -jest-changed-files@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-25.2.6.tgz#7d569cd6b265b1a84db3914db345d9c452f26b71" - integrity sha512-F7l2m5n55jFnJj4ItB9XbAlgO+6umgvz/mdK76BfTd2NGkvGf9x96hUXP/15a1K0k14QtVOoutwpRKl360msvg== +jest-changed-files@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-25.4.0.tgz#e573db32c2fd47d2b90357ea2eda0622c5c5cbd6" + integrity sha512-VR/rfJsEs4BVMkwOTuStRyS630fidFVekdw/lBaBQjx9KK3VZFOZ2c0fsom2fRp8pMCrCTP6LGna00o/DXGlqA== dependencies: - "@jest/types" "^25.2.6" + "@jest/types" "^25.4.0" execa "^3.2.0" throat "^5.0.0" -jest-cli@^25.2.7: - version "25.2.7" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-25.2.7.tgz#515b61fee402c397ffa8d570532f7b039c3159f4" - integrity sha512-OOAZwY4Jkd3r5WhVM5L3JeLNFaylvHUczMLxQDVLrrVyb1Cy+DNJ6MVsb5TLh6iBklB42m5TOP+IbOgKGGOtMw== +jest-cli@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-25.4.0.tgz#5dac8be0fece6ce39f0d671395a61d1357322bab" + integrity sha512-usyrj1lzCJZMRN1r3QEdnn8e6E6yCx/QN7+B1sLoA68V7f3WlsxSSQfy0+BAwRiF4Hz2eHauf11GZG3PIfWTXQ== dependencies: - "@jest/core" "^25.2.7" - "@jest/test-result" "^25.2.6" - "@jest/types" "^25.2.6" + "@jest/core" "^25.4.0" + "@jest/test-result" "^25.4.0" + "@jest/types" "^25.4.0" chalk "^3.0.0" exit "^0.1.2" import-local "^3.0.2" is-ci "^2.0.0" - jest-config "^25.2.7" - jest-util "^25.2.6" - jest-validate "^25.2.6" + jest-config "^25.4.0" + jest-util "^25.4.0" + jest-validate "^25.4.0" prompts "^2.0.1" realpath-native "^2.0.0" yargs "^15.3.1" -jest-config@^25.2.7: - version "25.2.7" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-25.2.7.tgz#a14e5b96575987ce913dd9fc20ac8cd4b35a8c29" - integrity sha512-rIdPPXR6XUxi+7xO4CbmXXkE6YWprvlKc4kg1SrkCL2YV5m/8MkHstq9gBZJ19Qoa3iz/GP+0sTG/PcIwkFojg== +jest-config@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-25.4.0.tgz#56e5df3679a96ff132114b44fb147389c8c0a774" + integrity sha512-egT9aKYxMyMSQV1aqTgam0SkI5/I2P9qrKexN5r2uuM2+68ypnc+zPGmfUxK7p1UhE7dYH9SLBS7yb+TtmT1AA== dependencies: "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^25.2.7" - "@jest/types" "^25.2.6" - babel-jest "^25.2.6" + "@jest/test-sequencer" "^25.4.0" + "@jest/types" "^25.4.0" + babel-jest "^25.4.0" chalk "^3.0.0" deepmerge "^4.2.2" glob "^7.1.1" - jest-environment-jsdom "^25.2.6" - jest-environment-node "^25.2.6" + jest-environment-jsdom "^25.4.0" + jest-environment-node "^25.4.0" jest-get-type "^25.2.6" - jest-jasmine2 "^25.2.7" + jest-jasmine2 "^25.4.0" jest-regex-util "^25.2.6" - jest-resolve "^25.2.6" - jest-util "^25.2.6" - jest-validate "^25.2.6" + jest-resolve "^25.4.0" + jest-util "^25.4.0" + jest-validate "^25.4.0" micromatch "^4.0.2" - pretty-format "^25.2.6" + pretty-format "^25.4.0" realpath-native "^2.0.0" -jest-diff@^25.2.1, jest-diff@^25.2.6: +jest-diff@^25.2.1: version "25.2.6" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.2.6.tgz#a6d70a9ab74507715ea1092ac513d1ab81c1b5e7" integrity sha512-KuadXImtRghTFga+/adnNrv9s61HudRMR7gVSbP35UKZdn4IK2/0N0PpGZIqtmllK9aUyye54I3nu28OYSnqOg== @@ -5690,46 +5786,56 @@ jest-diff@^25.2.1, jest-diff@^25.2.6: jest-get-type "^25.2.6" pretty-format "^25.2.6" -jest-docblock@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-25.2.6.tgz#4b09f1e7b7d6b3f39242ef3647ac7106770f722b" - integrity sha512-VAYrljEq0upq0oERfIaaNf28gC6p9gORndhHstCYF8NWGNQJnzoaU//S475IxfWMk4UjjVmS9rJKLe5Jjjbixw== +jest-diff@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.4.0.tgz#260b70f19a46c283adcad7f081cae71eb784a634" + integrity sha512-kklLbJVXW0y8UKOWOdYhI6TH5MG6QAxrWiBMgQaPIuhj3dNFGirKCd+/xfplBXICQ7fI+3QcqHm9p9lWu1N6ug== + dependencies: + chalk "^3.0.0" + diff-sequences "^25.2.6" + jest-get-type "^25.2.6" + pretty-format "^25.4.0" + +jest-docblock@^25.3.0: + version "25.3.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-25.3.0.tgz#8b777a27e3477cd77a168c05290c471a575623ef" + integrity sha512-aktF0kCar8+zxRHxQZwxMy70stc9R1mOmrLsT5VO3pIT0uzGRSDAXxSlz4NqQWpuLjPpuMhPRl7H+5FRsvIQAg== dependencies: detect-newline "^3.0.0" -jest-each@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-25.2.6.tgz#026f6dea2ccc443c35cea793265620aab1b278b6" - integrity sha512-OgQ01VINaRD6idWJOhCYwUc5EcgHBiFlJuw+ON2VgYr7HLtMFyCcuo+3mmBvuLUH4QudREZN7cDCZviknzsaJQ== +jest-each@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-25.4.0.tgz#ad4e46164764e8e77058f169a0076a7f86f6b7d4" + integrity sha512-lwRIJ8/vQU/6vq3nnSSUw1Y3nz5tkYSFIywGCZpUBd6WcRgpn8NmJoQICojbpZmsJOJNHm0BKdyuJ6Xdx+eDQQ== dependencies: - "@jest/types" "^25.2.6" + "@jest/types" "^25.4.0" chalk "^3.0.0" jest-get-type "^25.2.6" - jest-util "^25.2.6" - pretty-format "^25.2.6" - -jest-environment-jsdom@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-25.2.6.tgz#b7ae41c6035905b8e58d63a8f63cf8eaa00af279" - integrity sha512-/o7MZIhGmLGIEG5j7r5B5Az0umWLCHU+F5crwfbm0BzC4ybHTJZOQTFQWhohBg+kbTCNOuftMcqHlVkVduJCQQ== - dependencies: - "@jest/environment" "^25.2.6" - "@jest/fake-timers" "^25.2.6" - "@jest/types" "^25.2.6" - jest-mock "^25.2.6" - jest-util "^25.2.6" + jest-util "^25.4.0" + pretty-format "^25.4.0" + +jest-environment-jsdom@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-25.4.0.tgz#bbfc7f85bb6ade99089062a830c79cb454565cf0" + integrity sha512-KTitVGMDrn2+pt7aZ8/yUTuS333w3pWt1Mf88vMntw7ZSBNDkRS6/4XLbFpWXYfWfp1FjcjQTOKzbK20oIehWQ== + dependencies: + "@jest/environment" "^25.4.0" + "@jest/fake-timers" "^25.4.0" + "@jest/types" "^25.4.0" + jest-mock "^25.4.0" + jest-util "^25.4.0" jsdom "^15.2.1" -jest-environment-node@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-25.2.6.tgz#ad4398432867113f474d94fe37b071ed04b30f3d" - integrity sha512-D1Ihj14fxZiMHGeTtU/LunhzSI+UeBvlr/rcXMTNyRMUMSz2PEhuqGbB78brBY6Dk3FhJDk7Ta+8reVaGjLWhA== +jest-environment-node@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-25.4.0.tgz#188aef01ae6418e001c03fdd1c299961e1439082" + integrity sha512-wryZ18vsxEAKFH7Z74zi/y/SyI1j6UkVZ6QsllBuT/bWlahNfQjLNwFsgh/5u7O957dYFoXj4yfma4n4X6kU9A== dependencies: - "@jest/environment" "^25.2.6" - "@jest/fake-timers" "^25.2.6" - "@jest/types" "^25.2.6" - jest-mock "^25.2.6" - jest-util "^25.2.6" + "@jest/environment" "^25.4.0" + "@jest/fake-timers" "^25.4.0" + "@jest/types" "^25.4.0" + jest-mock "^25.4.0" + jest-util "^25.4.0" semver "^6.3.0" jest-get-type@^25.2.6: @@ -5756,66 +5862,85 @@ jest-haste-map@^25.2.6: optionalDependencies: fsevents "^2.1.2" -jest-jasmine2@^25.2.7: - version "25.2.7" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-25.2.7.tgz#55ff87f8f462ef0e2f16fd19430b8be8bcebef0e" - integrity sha512-HeQxEbonp8fUvik9jF0lkU9ab1u5TQdIb7YSU9Fj7SxWtqHNDGyCpF6ZZ3r/5yuertxi+R95Ba9eA91GMQ38eA== +jest-haste-map@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-25.4.0.tgz#da7c309dd7071e0a80c953ba10a0ec397efb1ae2" + integrity sha512-5EoCe1gXfGC7jmXbKzqxESrgRcaO3SzWXGCnvp9BcT0CFMyrB1Q6LIsjl9RmvmJGQgW297TCfrdgiy574Rl9HQ== + dependencies: + "@jest/types" "^25.4.0" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.3" + jest-serializer "^25.2.6" + jest-util "^25.4.0" + jest-worker "^25.4.0" + micromatch "^4.0.2" + sane "^4.0.3" + walker "^1.0.7" + which "^2.0.2" + optionalDependencies: + fsevents "^2.1.2" + +jest-jasmine2@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-25.4.0.tgz#3d3d19514022e2326e836c2b66d68b4cb63c5861" + integrity sha512-QccxnozujVKYNEhMQ1vREiz859fPN/XklOzfQjm2j9IGytAkUbSwjFRBtQbHaNZ88cItMpw02JnHGsIdfdpwxQ== dependencies: "@babel/traverse" "^7.1.0" - "@jest/environment" "^25.2.6" + "@jest/environment" "^25.4.0" "@jest/source-map" "^25.2.6" - "@jest/test-result" "^25.2.6" - "@jest/types" "^25.2.6" + "@jest/test-result" "^25.4.0" + "@jest/types" "^25.4.0" chalk "^3.0.0" co "^4.6.0" - expect "^25.2.7" + expect "^25.4.0" is-generator-fn "^2.0.0" - jest-each "^25.2.6" - jest-matcher-utils "^25.2.7" - jest-message-util "^25.2.6" - jest-runtime "^25.2.7" - jest-snapshot "^25.2.7" - jest-util "^25.2.6" - pretty-format "^25.2.6" + jest-each "^25.4.0" + jest-matcher-utils "^25.4.0" + jest-message-util "^25.4.0" + jest-runtime "^25.4.0" + jest-snapshot "^25.4.0" + jest-util "^25.4.0" + pretty-format "^25.4.0" throat "^5.0.0" -jest-leak-detector@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-25.2.6.tgz#68fbaf651142292b03e30641f33e15af9b8c62b1" - integrity sha512-n+aJUM+j/x1kIaPVxzerMqhAUuqTU1PL5kup46rXh+l9SP8H6LqECT/qD1GrnylE1L463/0StSPkH4fUpkuEjA== +jest-leak-detector@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-25.4.0.tgz#cf94a160c78e53d810e7b2f40b5fd7ee263375b3" + integrity sha512-7Y6Bqfv2xWsB+7w44dvZuLs5SQ//fzhETgOGG7Gq3TTGFdYvAgXGwV8z159RFZ6fXiCPm/szQ90CyfVos9JIFQ== dependencies: jest-get-type "^25.2.6" - pretty-format "^25.2.6" + pretty-format "^25.4.0" -jest-matcher-utils@^25.2.7: - version "25.2.7" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-25.2.7.tgz#53fad3c11fc42e92e374306df543026712c957a3" - integrity sha512-jNYmKQPRyPO3ny0KY1I4f0XW4XnpJ3Nx5ovT4ik0TYDOYzuXJW40axqOyS61l/voWbVT9y9nZ1THL1DlpaBVpA== +jest-matcher-utils@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-25.4.0.tgz#dc3e7aec402a1e567ed80b572b9ad285878895e6" + integrity sha512-yPMdtj7YDgXhnGbc66bowk8AkQ0YwClbbwk3Kzhn5GVDrciiCr27U4NJRbrqXbTdtxjImONITg2LiRIw650k5A== dependencies: chalk "^3.0.0" - jest-diff "^25.2.6" + jest-diff "^25.4.0" jest-get-type "^25.2.6" - pretty-format "^25.2.6" + pretty-format "^25.4.0" -jest-message-util@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-25.2.6.tgz#9d5523bebec8cd9cdef75f0f3069d6ec9a2252df" - integrity sha512-Hgg5HbOssSqOuj+xU1mi7m3Ti2nwSQJQf/kxEkrz2r2rp2ZLO1pMeKkz2WiDUWgSR+APstqz0uMFcE5yc0qdcg== +jest-message-util@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-25.4.0.tgz#2899e8bc43f5317acf8dfdfe89ea237d354fcdab" + integrity sha512-LYY9hRcVGgMeMwmdfh9tTjeux1OjZHMusq/E5f3tJN+dAoVVkJtq5ZUEPIcB7bpxDUt2zjUsrwg0EGgPQ+OhXQ== dependencies: "@babel/code-frame" "^7.0.0" - "@jest/types" "^25.2.6" + "@jest/types" "^25.4.0" "@types/stack-utils" "^1.0.1" chalk "^3.0.0" micromatch "^4.0.2" slash "^3.0.0" stack-utils "^1.0.1" -jest-mock@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-25.2.6.tgz#8df66eaa55a713d0f2a7dfb4f14507289d24dfa3" - integrity sha512-vc4nibavi2RGPdj/MyZy/azuDjZhpYZLvpfgq1fxkhbyTpKVdG7CgmRVKJ7zgLpY5kuMjTzDYA6QnRwhsCU+tA== +jest-mock@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-25.4.0.tgz#ded7d64b5328d81d78d2138c825d3a45e30ec8ca" + integrity sha512-MdazSfcYAUjJjuVTTnusLPzE0pE4VXpOUzWdj8sbM+q6abUjm3bATVPXFqTXrxSieR8ocpvQ9v/QaQCftioQFg== dependencies: - "@jest/types" "^25.2.6" + "@jest/types" "^25.4.0" jest-pnp-resolver@^1.2.1: version "1.2.1" @@ -5827,78 +5952,80 @@ jest-regex-util@^25.2.6: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-25.2.6.tgz#d847d38ba15d2118d3b06390056028d0f2fd3964" integrity sha512-KQqf7a0NrtCkYmZZzodPftn7fL1cq3GQAFVMn5Hg8uKx/fIenLEobNanUxb7abQ1sjADHBseG/2FGpsv/wr+Qw== -jest-resolve-dependencies@^25.2.7: - version "25.2.7" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-25.2.7.tgz#9ca4c62d67cce031a27fa5d5705b4b5b5c029d23" - integrity sha512-IrnMzCAh11Xd2gAOJL+ThEW6QO8DyqNdvNkQcaCticDrOAr9wtKT7yT6QBFFjqKFgjjvaVKDs59WdgUhgYnHnQ== +jest-resolve-dependencies@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-25.4.0.tgz#783937544cfc40afcc7c569aa54748c4b3f83f5a" + integrity sha512-A0eoZXx6kLiuG1Ui7wITQPl04HwjLErKIJTt8GR3c7UoDAtzW84JtCrgrJ6Tkw6c6MwHEyAaLk7dEPml5pf48A== dependencies: - "@jest/types" "^25.2.6" + "@jest/types" "^25.4.0" jest-regex-util "^25.2.6" - jest-snapshot "^25.2.7" + jest-snapshot "^25.4.0" -jest-resolve@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-25.2.6.tgz#84694ead5da13c2890ac04d4a78699ba937f3896" - integrity sha512-7O61GVdcAXkLz/vNGKdF+00A80/fKEAA47AEXVNcZwj75vEjPfZbXDaWFmAQCyXj4oo9y9dC9D+CLA11t8ieGw== +jest-resolve@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-25.4.0.tgz#6f4540ce0d419c4c720e791e871da32ba4da7a60" + integrity sha512-wOsKqVDFWUiv8BtLMCC6uAJ/pHZkfFgoBTgPtmYlsprAjkxrr2U++ZnB3l5ykBMd2O24lXvf30SMAjJIW6k2aA== dependencies: - "@jest/types" "^25.2.6" + "@jest/types" "^25.4.0" browser-resolve "^1.11.3" chalk "^3.0.0" jest-pnp-resolver "^1.2.1" + read-pkg-up "^7.0.1" realpath-native "^2.0.0" resolve "^1.15.1" + slash "^3.0.0" -jest-runner@^25.2.7: - version "25.2.7" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-25.2.7.tgz#3676c01dc0104caa8a0ebb8507df382c88f2a1e2" - integrity sha512-RFEr71nMrtNwcpoHzie5+fe1w3JQCGMyT2xzNwKe3f88+bK+frM2o1v24gEcPxQ2QqB3COMCe2+1EkElP+qqqQ== +jest-runner@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-25.4.0.tgz#6ca4a3d52e692bbc081228fa68f750012f1f29e5" + integrity sha512-wWQSbVgj2e/1chFdMRKZdvlmA6p1IPujhpLT7TKNtCSl1B0PGBGvJjCaiBal/twaU2yfk8VKezHWexM8IliBfA== dependencies: - "@jest/console" "^25.2.6" - "@jest/environment" "^25.2.6" - "@jest/test-result" "^25.2.6" - "@jest/types" "^25.2.6" + "@jest/console" "^25.4.0" + "@jest/environment" "^25.4.0" + "@jest/test-result" "^25.4.0" + "@jest/types" "^25.4.0" chalk "^3.0.0" exit "^0.1.2" graceful-fs "^4.2.3" - jest-config "^25.2.7" - jest-docblock "^25.2.6" - jest-haste-map "^25.2.6" - jest-jasmine2 "^25.2.7" - jest-leak-detector "^25.2.6" - jest-message-util "^25.2.6" - jest-resolve "^25.2.6" - jest-runtime "^25.2.7" - jest-util "^25.2.6" - jest-worker "^25.2.6" + jest-config "^25.4.0" + jest-docblock "^25.3.0" + jest-haste-map "^25.4.0" + jest-jasmine2 "^25.4.0" + jest-leak-detector "^25.4.0" + jest-message-util "^25.4.0" + jest-resolve "^25.4.0" + jest-runtime "^25.4.0" + jest-util "^25.4.0" + jest-worker "^25.4.0" source-map-support "^0.5.6" throat "^5.0.0" -jest-runtime@^25.2.7: - version "25.2.7" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-25.2.7.tgz#cb10e695d036671a83aec3a3803163c354043ac9" - integrity sha512-Gw3X8KxTTFylu2T/iDSNKRUQXQiPIYUY0b66GwVYa7W8wySkUljKhibQHSq0VhmCAN7vRBEQjlVQ+NFGNmQeBw== +jest-runtime@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-25.4.0.tgz#1e5227a9e2159d26ae27dcd426ca6bc041983439" + integrity sha512-lgNJlCDULtXu9FumnwCyWlOub8iytijwsPNa30BKrSNtgoT6NUMXOPrZvsH06U6v0wgD/Igwz13nKA2wEKU2VA== dependencies: - "@jest/console" "^25.2.6" - "@jest/environment" "^25.2.6" + "@jest/console" "^25.4.0" + "@jest/environment" "^25.4.0" "@jest/source-map" "^25.2.6" - "@jest/test-result" "^25.2.6" - "@jest/transform" "^25.2.6" - "@jest/types" "^25.2.6" + "@jest/test-result" "^25.4.0" + "@jest/transform" "^25.4.0" + "@jest/types" "^25.4.0" "@types/yargs" "^15.0.0" chalk "^3.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.3" graceful-fs "^4.2.3" - jest-config "^25.2.7" - jest-haste-map "^25.2.6" - jest-message-util "^25.2.6" - jest-mock "^25.2.6" + jest-config "^25.4.0" + jest-haste-map "^25.4.0" + jest-message-util "^25.4.0" + jest-mock "^25.4.0" jest-regex-util "^25.2.6" - jest-resolve "^25.2.6" - jest-snapshot "^25.2.7" - jest-util "^25.2.6" - jest-validate "^25.2.6" + jest-resolve "^25.4.0" + jest-snapshot "^25.4.0" + jest-util "^25.4.0" + jest-validate "^25.4.0" realpath-native "^2.0.0" slash "^3.0.0" strip-bom "^4.0.0" @@ -5909,24 +6036,24 @@ jest-serializer@^25.2.6: resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-25.2.6.tgz#3bb4cc14fe0d8358489dbbefbb8a4e708ce039b7" integrity sha512-RMVCfZsezQS2Ww4kB5HJTMaMJ0asmC0BHlnobQC6yEtxiFKIxohFA4QSXSabKwSggaNkqxn6Z2VwdFCjhUWuiQ== -jest-snapshot@^25.2.7: - version "25.2.7" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-25.2.7.tgz#7eeafeef4dcbda1c47c8503d2bf5212b6430aac6" - integrity sha512-Rm8k7xpGM4tzmYhB6IeRjsOMkXaU8/FOz5XlU6oYwhy53mq6txVNqIKqN1VSiexzpC80oWVxVDfUDt71M6XPOA== +jest-snapshot@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-25.4.0.tgz#e0b26375e2101413fd2ccb4278a5711b1922545c" + integrity sha512-J4CJ0X2SaGheYRZdLz9CRHn9jUknVmlks4UBeu270hPAvdsauFXOhx9SQP2JtRzhnR3cvro/9N9KP83/uvFfRg== dependencies: "@babel/types" "^7.0.0" - "@jest/types" "^25.2.6" + "@jest/types" "^25.4.0" "@types/prettier" "^1.19.0" chalk "^3.0.0" - expect "^25.2.7" - jest-diff "^25.2.6" + expect "^25.4.0" + jest-diff "^25.4.0" jest-get-type "^25.2.6" - jest-matcher-utils "^25.2.7" - jest-message-util "^25.2.6" - jest-resolve "^25.2.6" + jest-matcher-utils "^25.4.0" + jest-message-util "^25.4.0" + jest-resolve "^25.4.0" make-dir "^3.0.0" natural-compare "^1.4.0" - pretty-format "^25.2.6" + pretty-format "^25.4.0" semver "^6.3.0" jest-util@^25.2.6: @@ -5939,28 +6066,38 @@ jest-util@^25.2.6: is-ci "^2.0.0" make-dir "^3.0.0" -jest-validate@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-25.2.6.tgz#ab3631fb97e242c42b09ca53127abe0b12e9125e" - integrity sha512-a4GN7hYbqQ3Rt9iHsNLFqQz7HDV7KiRPCwPgo5nqtTIWNZw7gnT8KchG+Riwh+UTSn8REjFCodGp50KX/fRNgQ== +jest-util@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-25.4.0.tgz#6a093d09d86d2b41ef583e5fe7dd3976346e1acd" + integrity sha512-WSZD59sBtAUjLv1hMeKbNZXmMcrLRWcYqpO8Dz8b4CeCTZpfNQw2q9uwrYAD+BbJoLJlu4ezVPwtAmM/9/SlZA== dependencies: - "@jest/types" "^25.2.6" + "@jest/types" "^25.4.0" + chalk "^3.0.0" + is-ci "^2.0.0" + make-dir "^3.0.0" + +jest-validate@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-25.4.0.tgz#2e177a93b716a137110eaf2768f3d9095abd3f38" + integrity sha512-hvjmes/EFVJSoeP1yOl8qR8mAtMR3ToBkZeXrD/ZS9VxRyWDqQ/E1C5ucMTeSmEOGLipvdlyipiGbHJ+R1MQ0g== + dependencies: + "@jest/types" "^25.4.0" camelcase "^5.3.1" chalk "^3.0.0" jest-get-type "^25.2.6" leven "^3.1.0" - pretty-format "^25.2.6" + pretty-format "^25.4.0" -jest-watcher@^25.2.7: - version "25.2.7" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-25.2.7.tgz#01db4332d34d14c03c9ef22255125a3b07f997bc" - integrity sha512-RdHuW+f49tahWtluTnUdZ2iPliebleROI2L/J5phYrUS6DPC9RB3SuUtqYyYhGZJsbvRSuLMIlY/cICJ+PIecw== +jest-watcher@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-25.4.0.tgz#63ec0cd5c83bb9c9d1ac95be7558dd61c995ff05" + integrity sha512-36IUfOSRELsKLB7k25j/wutx0aVuHFN6wO94gPNjQtQqFPa2rkOymmx9rM5EzbF3XBZZ2oqD9xbRVoYa2w86gw== dependencies: - "@jest/test-result" "^25.2.6" - "@jest/types" "^25.2.6" + "@jest/test-result" "^25.4.0" + "@jest/types" "^25.4.0" ansi-escapes "^4.2.1" chalk "^3.0.0" - jest-util "^25.2.6" + jest-util "^25.4.0" string-length "^3.1.0" jest-worker@^25.2.6: @@ -5971,14 +6108,22 @@ jest-worker@^25.2.6: merge-stream "^2.0.0" supports-color "^7.0.0" -jest@^25.1.0: - version "25.2.7" - resolved "https://registry.yarnpkg.com/jest/-/jest-25.2.7.tgz#3929a5f35cdd496f7756876a206b99a94e1e09ae" - integrity sha512-XV1n/CE2McCikl4tfpCY950RytHYvxdo/wvtgmn/qwA8z1s16fuvgFL/KoPrrmkqJTaPMUlLVE58pwiaTX5TdA== +jest-worker@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.4.0.tgz#ee0e2ceee5a36ecddf5172d6d7e0ab00df157384" + integrity sha512-ghAs/1FtfYpMmYQ0AHqxV62XPvKdUDIBBApMZfly+E9JEmYh2K45G0R5dWxx986RN12pRCxsViwQVtGl+N4whw== dependencies: - "@jest/core" "^25.2.7" + merge-stream "^2.0.0" + supports-color "^7.0.0" + +jest@^25.3.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-25.4.0.tgz#fb96892c5c4e4a6b9bcb12068849cddf4c5f8cc7" + integrity sha512-XWipOheGB4wai5JfCYXd6vwsWNwM/dirjRoZgAa7H2wd8ODWbli2AiKjqG8AYhyx+8+5FBEdpO92VhGlBydzbw== + dependencies: + "@jest/core" "^25.4.0" import-local "^3.0.2" - jest-cli "^25.2.7" + jest-cli "^25.4.0" jju@~1.4.0: version "1.4.0" @@ -7496,6 +7641,16 @@ pretty-format@^25.2.1, pretty-format@^25.2.6: ansi-styles "^4.0.0" react-is "^16.12.0" +pretty-format@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.4.0.tgz#c58801bb5c4926ff4a677fe43f9b8b99812c7830" + integrity sha512-PI/2dpGjXK5HyXexLPZU/jw5T9Q6S1YVXxxVxco+LIqzUFHXIbKZKdUVt7GcX7QUCr31+3fzhi4gN4/wUYPVxQ== + dependencies: + "@jest/types" "^25.4.0" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^16.12.0" + private@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" @@ -7655,6 +7810,15 @@ read-pkg-up@^3.0.0: find-up "^2.0.0" read-pkg "^3.0.0" +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + read-pkg@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" @@ -7673,6 +7837,16 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + read@1, read@~1.0.1: version "1.0.7" resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" @@ -8907,6 +9081,11 @@ type-fest@^0.3.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + type-fest@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" @@ -9072,7 +9251,7 @@ v8-compile-cache@^2.0.3: resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== -v8-to-istanbul@^4.0.1: +v8-to-istanbul@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-4.1.3.tgz#22fe35709a64955f49a08a7c7c959f6520ad6f20" integrity sha512-sAjOC+Kki6aJVbUOXJbcR0MnbfjvBzwKZazEJymA2IX49uoOdEdk+4fBq5cXgYgiyKtAyrrJNtBZdOeDIF+Fng== From 7609b7b233207be9752f14048bcedb001ce9947a Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Thu, 23 Apr 2020 15:47:39 -0700 Subject: [PATCH 10/61] build(root): add npm update checker util --- package.json | 1 + yarn.lock | 855 ++++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 820 insertions(+), 36 deletions(-) diff --git a/package.json b/package.json index c58d8377..1fe7d03f 100644 --- a/package.json +++ b/package.json @@ -71,6 +71,7 @@ "lerna": "^3.20.2", "lint-staged": "^10.0.8", "lockfile-lint": "^4.2.2", + "npm-check-updates": "^4.1.2", "prettier": "2.0.4", "typescript": "^3.8.3" }, diff --git a/yarn.lock b/yarn.lock index 8ef03e88..b3fc5f51 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1943,6 +1943,41 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== +"@npmcli/ci-detect@^1.0.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@npmcli/ci-detect/-/ci-detect-1.2.0.tgz#0df142a1ac3bba6cbf2e9da1a6994cd898e32c95" + integrity sha512-JtktVH7ASBVIWsQTFlFpeOzhBJskvoBCTfeeRhhZy7ybATcUvwiwotZ8j5rkqUUyB69lIy/AvboiiiGBjYBKBA== + +"@npmcli/git@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-2.0.1.tgz#d7ecaa9c945de6bb1af5a7e6ea634771193c168b" + integrity sha512-hVatexiBtx71F01Ars38Hr5AFUGmJgHAfQtRlO5fJlnAawRGSXwEFgjB5i3XdUUmElZU/RXy7fefN02dZKxgPw== + dependencies: + "@npmcli/promise-spawn" "^1.1.0" + mkdirp "^1.0.3" + npm-pick-manifest "^6.0.0" + promise-inflight "^1.0.1" + promise-retry "^1.1.1" + unique-filename "^1.1.1" + which "^2.0.2" + +"@npmcli/installed-package-contents@^1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-1.0.5.tgz#cc78565e55d9f14d46acf46a96f70934e516fa3d" + integrity sha512-aKIwguaaqb6ViwSOFytniGvLPb9SMCUm39TgM3SfUo7n0TxUMbwoXfpwyvQ4blm10lzbAwTsvjr7QZ85LvTi4A== + dependencies: + npm-bundled "^1.1.1" + npm-normalize-package-bin "^1.0.1" + read-package-json-fast "^1.1.1" + readdir-scoped-modules "^1.1.0" + +"@npmcli/promise-spawn@^1.1.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-1.2.0.tgz#167d70b926f771c8bd8b9183bfc8b5aec29d7e45" + integrity sha512-nFtqjVETliApiRdjbYwKwhlSHx2ZMagyj5b9YbNt0BWeeOVxJd47ZVE2u16vxDHyTOZvk+YLV7INwfAE9a2uow== + dependencies: + infer-owner "^1.0.4" + "@octokit/auth-token@^2.4.0": version "2.4.0" resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.0.tgz#b64178975218b99e4dfe948253f0673cbbb59d9f" @@ -2052,6 +2087,11 @@ dependencies: any-observable "^0.3.0" +"@sindresorhus/is@^0.14.0": + version "0.14.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" + integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== + "@sinonjs/commons@^1.7.0": version "1.7.1" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.7.1.tgz#da5fd19a5f71177a53778073978873964f49acf1" @@ -2059,6 +2099,18 @@ dependencies: type-detect "4.0.8" +"@szmarczak/http-timer@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" + integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== + dependencies: + defer-to-connect "^1.0.1" + +"@tootallnate/once@1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" + integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== + "@types/babel__core@^7.1.0", "@types/babel__core@^7.1.7": version "7.1.7" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.7.tgz#1dacad8840364a57c98d0dd4855c6dd3752c6b89" @@ -2343,6 +2395,13 @@ agent-base@4, agent-base@^4.3.0: dependencies: es6-promisify "^5.0.0" +agent-base@6: + version "6.0.0" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.0.tgz#5d0101f19bbfaed39980b22ae866de153b93f09a" + integrity sha512-j1Q7cSCqN+AwrmDd+pzgqc0/NpC655x2bUf5ZjRIO77DcNBFmh+OgRNzF6OKdCC9RSCb19fGd99+bhXFdkRNqw== + dependencies: + debug "4" + agent-base@~4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" @@ -2357,6 +2416,23 @@ agentkeepalive@^3.4.1: dependencies: humanize-ms "^1.2.1" +agentkeepalive@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.1.0.tgz#a48e040ed16745dd29ce923675f60c9c90f39ee0" + integrity sha512-CW/n1wxF8RpEuuiq6Vbn9S8m0VSYDMnZESqaJ6F2cWN9fY8rei2qaxweIaRgq+ek8TqfoFIsUjaGNKGGEHElSg== + dependencies: + debug "^4.1.0" + depd "^1.1.2" + humanize-ms "^1.2.1" + +aggregate-error@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" + integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5: version "6.12.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" @@ -2377,6 +2453,13 @@ ajv@~6.10.2: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ansi-align@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" + integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== + dependencies: + string-width "^3.0.0" + ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" @@ -2737,6 +2820,20 @@ bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== +boxen@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" + integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== + dependencies: + ansi-align "^3.0.0" + camelcase "^5.3.1" + chalk "^3.0.0" + cli-boxes "^2.2.0" + string-width "^4.1.0" + term-size "^2.1.0" + type-fest "^0.8.1" + widest-line "^3.1.0" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -2843,6 +2940,29 @@ cacache@^12.0.0, cacache@^12.0.3: unique-filename "^1.1.1" y18n "^4.0.0" +cacache@^15.0.0: + version "15.0.0" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.0.tgz#133b59edbd2a37ea8ef2d54964c6f247e47e5059" + integrity sha512-L0JpXHhplbJSiDGzyJJnJCTL7er7NzbBgxzVqLswEb4bO91Zbv17OUMuUeu/q0ZwKn3V+1HM4wb9tO4eVE/K8g== + dependencies: + chownr "^1.1.2" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^5.1.1" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + move-concurrently "^1.0.1" + p-map "^3.0.0" + promise-inflight "^1.0.1" + rimraf "^2.7.1" + ssri "^8.0.0" + tar "^6.0.1" + unique-filename "^1.1.1" + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -2858,6 +2978,19 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +cacheable-request@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" + integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^3.0.0" + lowercase-keys "^2.0.0" + normalize-url "^4.1.0" + responselike "^1.0.2" + cachedir@2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.2.0.tgz#19afa4305e05d79e417566882e0c8f960f62ff0e" @@ -2950,7 +3083,7 @@ chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.1, chalk@^2.4. escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^1.0.0, chalk@^1.1.3: +chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= @@ -2974,7 +3107,7 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -chownr@^1.1.1, chownr@^1.1.2: +chownr@^1.1.1, chownr@^1.1.2, chownr@^1.1.3, chownr@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== @@ -2984,6 +3117,11 @@ ci-info@^2.0.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== +cint@^8.2.1: + version "8.2.1" + resolved "https://registry.yarnpkg.com/cint/-/cint-8.2.1.tgz#70386b1b48e2773d0d63166a55aff94ef4456a12" + integrity sha1-cDhrG0jidz0NYxZqVa/5TvRFahI= + class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -2994,6 +3132,16 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-boxes@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.0.tgz#538ecae8f9c6ca508e3c3c95b453fe93cb4c168d" + integrity sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w== + cli-cursor@^2.0.0, cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" @@ -3008,6 +3156,13 @@ cli-cursor@^3.1.0: dependencies: restore-cursor "^3.1.0" +cli-table@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23" + integrity sha1-9TsFJmqLGguTSz0IIebi3FkUriM= + dependencies: + colors "1.0.3" + cli-truncate@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" @@ -3048,6 +3203,13 @@ clone-deep@^4.0.1: kind-of "^6.0.2" shallow-clone "^3.0.0" +clone-response@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" + integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= + dependencies: + mimic-response "^1.0.0" + clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" @@ -3100,6 +3262,11 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +colors@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" + integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= + columnify@^1.5.4: version "1.5.4" resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" @@ -3125,6 +3292,11 @@ commander@^4.0.1: resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== +commander@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-5.0.0.tgz#dbf1909b49e5044f8fdaf0adc809f0c0722bdfd0" + integrity sha512-JrDGPAKjMGSP1G0DUoaceEJ3DZgAfr/q6X7FVk4+U5KxUSKviYGM2k6zWkfyyBHy5rAtzgYJFa1ro2O9PtoxwQ== + comment-json@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/comment-json/-/comment-json-1.1.3.tgz#6986c3330fee0c4c9e00c2398cd61afa5d8f239e" @@ -3862,6 +4034,13 @@ debug@3.1.0: dependencies: ms "2.0.0" +debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + debug@^2.2.0, debug@^2.3.3: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -3876,13 +4055,6 @@ debug@^3.1.0: dependencies: ms "^2.1.1" -debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== - dependencies: - ms "^2.1.1" - debuglog@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" @@ -3911,11 +4083,23 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= +decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= + dependencies: + mimic-response "^1.0.0" + dedent@0.7.0, dedent@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" @@ -3933,6 +4117,11 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" +defer-to-connect@^1.0.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" + integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== + define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -3972,6 +4161,11 @@ delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= +depd@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + deprecation@^2.0.0, deprecation@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" @@ -4059,6 +4253,11 @@ dot-prop@^5.2.0: dependencies: is-obj "^2.0.0" +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= + duplexer@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" @@ -4102,7 +4301,7 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -encoding@^0.1.11: +encoding@^0.1.11, encoding@^0.1.12: version "0.1.12" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= @@ -4176,6 +4375,11 @@ es6-promisify@^5.0.0: dependencies: es6-promise "^4.0.3" +escape-goat@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" + integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== + escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -4495,7 +4699,7 @@ fast-deep-equal@^3.1.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== -fast-diff@^1.1.2: +fast-diff@^1.1.2, fast-diff@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== @@ -4593,6 +4797,14 @@ find-root@1.1.0, find-root@^1.1.0: resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== +find-up@4.1.0, find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -4615,14 +4827,6 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - find-versions@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.2.0.tgz#10297f98030a786829681690545ef659ed1d254e" @@ -4712,6 +4916,13 @@ fs-minipass@^1.2.5: dependencies: minipass "^2.6.0" +fs-minipass@^2.0.0, fs-minipass@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + fs-write-stream-atomic@^1.0.8: version "1.0.10" resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" @@ -4819,7 +5030,7 @@ get-stream@^4.0.0, get-stream@^4.1.0: dependencies: pump "^3.0.0" -get-stream@^5.0.0: +get-stream@^5.0.0, get-stream@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== @@ -4957,6 +5168,13 @@ global-dirs@^0.1.1: dependencies: ini "^1.3.4" +global-dirs@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201" + integrity sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A== + dependencies: + ini "^1.3.5" + global-jsdom@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/global-jsdom/-/global-jsdom-6.1.0.tgz#a911ec57c51cf72e93a2ce97925a02a6427aed76" @@ -5008,6 +5226,23 @@ globby@^9.2.0: pify "^4.0.1" slash "^2.0.0" +got@^9.6.0: + version "9.6.0" + resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" + integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== + dependencies: + "@sindresorhus/is" "^0.14.0" + "@szmarczak/http-timer" "^1.1.2" + cacheable-request "^6.0.0" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^4.1.0" + lowercase-keys "^1.0.1" + mimic-response "^1.0.1" + p-cancelable "^1.0.0" + to-readable-stream "^1.0.0" + url-parse-lax "^3.0.0" + graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" @@ -5101,6 +5336,11 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" +has-yarn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" + integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== + has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -5120,6 +5360,13 @@ hosted-git-info@^2.1.4, hosted-git-info@^2.7.1: resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== +hosted-git-info@^3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.4.tgz#be4973eb1fd2737b11c9c7c19380739bb249f60d" + integrity sha512-4oT62d2jwSDBbLLFLZE+1vPuQ1h8p9wjrJ8Mqx5TjsyWmBMV5B13eJqn8pvluqubLf3cJPTfiYCIwNwDNmzScQ== + dependencies: + lru-cache "^5.1.1" + html-encoding-sniffer@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" @@ -5144,6 +5391,11 @@ http-cache-semantics@^3.8.1: resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== +http-cache-semantics@^4.0.0, http-cache-semantics@^4.0.4: + version "4.1.0" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" + integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + http-proxy-agent@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" @@ -5152,6 +5404,15 @@ http-proxy-agent@^2.1.0: agent-base "4" debug "3.1.0" +http-proxy-agent@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" + integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== + dependencies: + "@tootallnate/once" "1" + agent-base "6" + debug "4" + http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -5169,6 +5430,14 @@ https-proxy-agent@^2.2.3: agent-base "^4.3.0" debug "^3.1.0" +https-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" + integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== + dependencies: + agent-base "6" + debug "4" + human-signals@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" @@ -5209,7 +5478,7 @@ iferr@^0.1.5: resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= -ignore-walk@^3.0.1: +ignore-walk@^3.0.1, ignore-walk@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== @@ -5237,6 +5506,11 @@ import-fresh@^3.0.0, import-fresh@^3.1.0: parent-module "^1.0.0" resolve-from "^4.0.0" +import-lazy@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" + integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= + import-local@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" @@ -5270,6 +5544,11 @@ indent-string@^3.0.0: resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + infer-owner@^1.0.3, infer-owner@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" @@ -5288,7 +5567,7 @@ inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -ini@^1.3.2, ini@^1.3.4: +ini@^1.3.2, ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== @@ -5522,6 +5801,24 @@ is-glob@^4.0.0, is-glob@^4.0.1: dependencies: is-extglob "^2.1.1" +is-installed-globally@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" + integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== + dependencies: + global-dirs "^2.0.1" + is-path-inside "^3.0.1" + +is-lambda@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" + integrity sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU= + +is-npm@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" + integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== + is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -5551,6 +5848,11 @@ is-observable@^1.1.0: dependencies: symbol-observable "^1.1.0" +is-path-inside@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" + integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== + is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" @@ -5643,6 +5945,11 @@ is-wsl@^2.1.1: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.1.1.tgz#4a1c152d429df3d441669498e2486d3596ebaf1d" integrity sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog== +is-yarn-global@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" + integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== + isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -6125,7 +6432,7 @@ jest@^25.3.0: import-local "^3.0.2" jest-cli "^25.4.0" -jju@~1.4.0: +jju@^1.1.0, jju@~1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" integrity sha1-o6vicYryQaKykE+EpiWXDzia4yo= @@ -6135,7 +6442,7 @@ jju@~1.4.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.13.1: +js-yaml@^3.12.0, js-yaml@^3.13.1: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== @@ -6222,11 +6529,28 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= + json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== +json-parse-even-better-errors@^2.0.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.2.0.tgz#304d29aa54bb01156a1328c454034ff0ac8a7bf4" + integrity sha512-2tLgY7LRNZ9Hd6gmCuBG5/OjRHQpSgJQqJoYyLLOhUgn8LdOYrjaZLcxkWnDads+AD/haWWioPNziXQcgvQJ/g== + +json-parse-helpfulerror@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz#13f14ce02eed4e981297b64eb9e3b932e2dd13dc" + integrity sha1-E/FM4C7tTpgSl7ZOueO5MuLdE9w= + dependencies: + jju "^1.1.0" + json-parser@^1.0.0: version "1.1.5" resolved "https://registry.yarnpkg.com/json-parser/-/json-parser-1.1.5.tgz#e62ec5261d1a6a5fc20e812a320740c6d9005677" @@ -6254,7 +6578,7 @@ json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= -json5@^2.1.2: +json5@^2.1.1, json5@^2.1.2: version "2.1.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== @@ -6268,7 +6592,7 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" -jsonparse@^1.2.0: +jsonparse@^1.2.0, jsonparse@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= @@ -6283,6 +6607,13 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" +keyv@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" + integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== + dependencies: + json-buffer "3.0.0" + kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -6312,6 +6643,13 @@ kleur@^3.0.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== +latest-version@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" + integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== + dependencies: + package-json "^6.3.0" + lerna@^3.20.2: version "3.20.2" resolved "https://registry.yarnpkg.com/lerna/-/lerna-3.20.2.tgz#abf84e73055fe84ee21b46e64baf37b496c24864" @@ -6356,6 +6694,15 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +libnpmconfig@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/libnpmconfig/-/libnpmconfig-1.2.1.tgz#c0c2f793a74e67d4825e5039e7a02a0044dfcbc0" + integrity sha512-9esX8rTQAHqarx6qeZqmGQKBNZR5OIbl/Ayr0qQDy3oXja2iFVQQI81R6GZ2a02bSNZ9p3YOGX1O6HHCb1X7kA== + dependencies: + figgy-pudding "^3.5.1" + find-up "^3.0.0" + ini "^1.3.5" + lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" @@ -6553,7 +6900,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@4.17.15, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.2.1: +lodash@4.17.15, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.2.0, lodash@^4.2.1: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -6608,6 +6955,16 @@ loud-rejection@^1.0.0: currently-unhandled "^0.4.1" signal-exit "^3.0.0" +lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -6659,6 +7016,27 @@ make-fetch-happen@^5.0.0: socks-proxy-agent "^4.0.0" ssri "^6.0.0" +make-fetch-happen@^8.0.2: + version "8.0.4" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-8.0.4.tgz#d3451baf5b43d6230c4eea7009c5aa6b6bccf9d4" + integrity sha512-hIFoqGq1db0QMiy/Atr/pI1Rs4rDV+ZdGSey2SQyF3KK3u1z4aj9mS5UdNnZkdQpA+H3pGn0J3KlEwsi2x4EqA== + dependencies: + agentkeepalive "^4.1.0" + cacache "^15.0.0" + http-cache-semantics "^4.0.4" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-lambda "^1.0.1" + lru-cache "^5.1.1" + minipass "^3.0.0" + minipass-collect "^1.0.2" + minipass-fetch "^1.1.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + promise-retry "^1.1.1" + socks-proxy-agent "^5.0.0" + ssri "^8.0.0" + makeerror@1.0.x: version "1.0.11" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" @@ -6803,6 +7181,11 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +mimic-response@^1.0.0, mimic-response@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" @@ -6828,6 +7211,54 @@ minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-fetch@^1.1.2, minipass-fetch@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.2.1.tgz#1b97ecb559be56b09812d45b2e9509f1f59ece2f" + integrity sha512-ssHt0dkljEDaKmTgQ04DQgx2ag6G2gMPxA5hpcsoeTbfDgRf2fC2gNSRc6kISjD7ckCpHwwQvXxuTBK8402fXg== + dependencies: + minipass "^3.1.0" + minipass-pipeline "^1.2.2" + minipass-sized "^1.0.3" + minizlib "^2.0.0" + optionalDependencies: + encoding "^0.1.12" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-json-stream@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz#7edbb92588fbfc2ff1db2fc10397acb7b6b44aa7" + integrity sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg== + dependencies: + jsonparse "^1.3.1" + minipass "^3.0.0" + +minipass-pipeline@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz#3dcb6bb4a546e32969c7ad710f2c79a86abba93a" + integrity sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA== + dependencies: + minipass "^3.0.0" + +minipass-sized@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" + integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== + dependencies: + minipass "^3.0.0" + minipass@^2.3.5, minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" @@ -6836,6 +7267,13 @@ minipass@^2.3.5, minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: safe-buffer "^5.1.2" yallist "^3.0.0" +minipass@^3.0.0, minipass@^3.0.1, minipass@^3.1.0, minipass@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.1.tgz#7607ce778472a185ad6d89082aa2070f79cedcd5" + integrity sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w== + dependencies: + yallist "^4.0.0" + minizlib@^1.2.1: version "1.3.3" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" @@ -6843,6 +7281,14 @@ minizlib@^1.2.1: dependencies: minipass "^2.9.0" +minizlib@^2.0.0, minizlib@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.0.tgz#fd52c645301ef09a63a2c209697c294c6ce02cf3" + integrity sha512-EzTZN/fjSvifSX0SlqUERCN39o6T40AMarPbv0MrarSFtIITCBh7bi+dU8nxGFHuqs9jdIAeoYoKuQAAASsPPA== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" @@ -6874,7 +7320,7 @@ mkdirp-promise@^5.0.1: dependencies: mkdirp "*" -mkdirp@*: +mkdirp@*, mkdirp@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== @@ -6969,11 +7415,24 @@ neo-async@^2.6.0: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== +nested-error-stacks@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.0.1.tgz#d2cc9fc5235ddb371fc44d506234339c8e4b0a4b" + integrity sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A== + nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== +node-alias@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/node-alias/-/node-alias-1.0.4.tgz#1f1b916b56b9ea241c0135f97ced6940f556f292" + integrity sha1-HxuRa1a56iQcATX5fO1pQPVW8pI= + dependencies: + chalk "^1.1.1" + lodash "^4.2.0" + node-fetch-npm@^2.0.2: version "2.0.4" resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz#6507d0e17a9ec0be3bec516958a497cec54bf5a4" @@ -7066,13 +7525,52 @@ normalize-url@^3.3.0: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== -npm-bundled@^1.0.1: +normalize-url@^4.1.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" + integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== + +npm-bundled@^1.0.1, npm-bundled@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== dependencies: npm-normalize-package-bin "^1.0.1" +npm-check-updates@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npm-check-updates/-/npm-check-updates-4.1.2.tgz#700f52b17999aa914a5fbdd9c1a0a51d093d89c0" + integrity sha512-CRO20Z12fygKL/ow4j4pnpyxevda/PuFbWpsF5E9sFW0B+M3d32A1dD+fTHLDjgderhKXr64W8qQ6M/Gq8OLiw== + dependencies: + chalk "^3.0.0" + cint "^8.2.1" + cli-table "^0.3.1" + commander "^5.0.0" + fast-diff "^1.2.0" + find-up "4.1.0" + get-stdin "^7.0.0" + json-parse-helpfulerror "^1.0.3" + libnpmconfig "^1.2.1" + lodash "^4.17.15" + node-alias "^1.0.4" + p-map "^4.0.0" + pacote "^11.1.4" + progress "^2.0.3" + prompts "^2.3.2" + rc-config-loader "^3.0.0" + requireg "^0.2.2" + semver "^7.2.1" + semver-utils "^1.1.4" + spawn-please "^0.3.0" + update-notifier "^4.1.0" + +npm-install-checks@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-4.0.0.tgz#a37facc763a2fde0497ef2c6d0ac7c3fbe00d7b4" + integrity sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w== + dependencies: + semver "^7.1.1" + npm-lifecycle@^3.1.2: version "3.1.5" resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-3.1.5.tgz#9882d3642b8c82c815782a12e6a1bfeed0026309" @@ -7102,6 +7600,15 @@ npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: semver "^5.6.0" validate-npm-package-name "^3.0.0" +npm-package-arg@^8.0.0, npm-package-arg@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.0.1.tgz#9d76f8d7667b2373ffda60bb801a27ef71e3e270" + integrity sha512-/h5Fm6a/exByzFSTm7jAyHbgOqErl9qSNJDQF32Si/ZzgwT2TERVxRxn3Jurw1wflgyVVAxnFR4fRHPM7y1ClQ== + dependencies: + hosted-git-info "^3.0.2" + semver "^7.0.0" + validate-npm-package-name "^3.0.0" + npm-packlist@^1.4.4: version "1.4.8" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" @@ -7111,6 +7618,16 @@ npm-packlist@^1.4.4: npm-bundled "^1.0.1" npm-normalize-package-bin "^1.0.1" +npm-packlist@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-2.1.1.tgz#08806a1df79acdc43d02d20c83a3d5472d96c90c" + integrity sha512-95TSDvGwujIhqfSpIiRRLodEF+y6mJMopuZdahoGzqtRDFZXGav46S0p6ngeWaiAkb5R72w6eVARhzej0HvZeQ== + dependencies: + glob "^7.1.6" + ignore-walk "^3.0.3" + npm-bundled "^1.1.1" + npm-normalize-package-bin "^1.0.1" + npm-pick-manifest@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz#f4d9e5fd4be2153e5f4e5f9b7be8dc419a99abb7" @@ -7120,6 +7637,29 @@ npm-pick-manifest@^3.0.0: npm-package-arg "^6.0.0" semver "^5.4.1" +npm-pick-manifest@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-6.1.0.tgz#2befed87b0fce956790f62d32afb56d7539c022a" + integrity sha512-ygs4k6f54ZxJXrzT0x34NybRlLeZ4+6nECAIbr2i0foTnijtS1TJiyzpqtuUAJOps/hO0tNDr8fRV5g+BtRlTw== + dependencies: + npm-install-checks "^4.0.0" + npm-package-arg "^8.0.0" + semver "^7.0.0" + +npm-registry-fetch@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-8.0.0.tgz#65bb51dd2b9634b8363019aac9c76c003e5c5eaf" + integrity sha512-975WwLvZjX97y9UWWQ8nAyr7bw02s9xKPHqvEm5T900LQsB1HXb8Gb9ebYtCBLSX+K8gSOrO5KS/9yV/naLZmQ== + dependencies: + "@npmcli/ci-detect" "^1.0.0" + lru-cache "^5.1.1" + make-fetch-happen "^8.0.2" + minipass "^3.0.0" + minipass-fetch "^1.1.2" + minipass-json-stream "^1.0.1" + minizlib "^2.0.0" + npm-package-arg "^8.0.0" + npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -7289,6 +7829,11 @@ osenv@^0.1.4, osenv@^0.1.5: os-homedir "^1.0.0" os-tmpdir "^1.0.0" +p-cancelable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" + integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== + p-each-series@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" @@ -7351,6 +7896,20 @@ p-map@^2.0.0, p-map@^2.1.0: resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== +p-map@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + dependencies: + aggregate-error "^3.0.0" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + p-pipe@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-1.2.0.tgz#4b1a11399a11520a67790ee5a0c1d5881d6befe9" @@ -7385,6 +7944,45 @@ p-waterfall@^1.0.0: dependencies: p-reduce "^1.0.0" +package-json@^6.3.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" + integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== + dependencies: + got "^9.6.0" + registry-auth-token "^4.0.0" + registry-url "^5.0.0" + semver "^6.2.0" + +pacote@^11.1.4: + version "11.1.4" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-11.1.4.tgz#5529a453c59881b7f059da8af6903b0f79c124b2" + integrity sha512-eUGJvSSpWFZKn3z8gig/HgnBmUl6gIWByIIaHzSyEr3tOWX0w8tFEADXtpu8HGv5E0ShCeTP6enRq8iHKCHSvw== + dependencies: + "@npmcli/git" "^2.0.1" + "@npmcli/installed-package-contents" "^1.0.5" + "@npmcli/promise-spawn" "^1.1.0" + cacache "^15.0.0" + chownr "^1.1.4" + fs-minipass "^2.1.0" + infer-owner "^1.0.4" + lru-cache "^5.1.1" + minipass "^3.0.1" + minipass-fetch "^1.2.1" + mkdirp "^1.0.3" + npm-package-arg "^8.0.1" + npm-packlist "^2.1.0" + npm-pick-manifest "^6.0.0" + npm-registry-fetch "^8.0.0" + promise-inflight "^1.0.1" + promise-retry "^1.1.1" + read-package-json-fast "^1.1.3" + rimraf "^2.7.1" + semver "^7.1.3" + ssri "^8.0.0" + tar "^6.0.1" + which "^2.0.2" + parallel-transform@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" @@ -7506,7 +8104,7 @@ path-key@^3.0.0, path-key@^3.1.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-parse@^1.0.6: +path-parse@^1.0.5, path-parse@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== @@ -7619,6 +8217,11 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= + prettier-linter-helpers@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" @@ -7661,7 +8264,7 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -progress@^2.0.0: +progress@^2.0.0, progress@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== @@ -7679,7 +8282,7 @@ promise-retry@^1.1.1: err-code "^1.0.0" retry "^0.10.0" -prompts@^2.0.1: +prompts@^2.0.1, prompts@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" integrity sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA== @@ -7746,6 +8349,13 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +pupa@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.0.1.tgz#dbdc9ff48ffbea4a26a069b6f9f7abb051008726" + integrity sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA== + dependencies: + escape-goat "^2.0.0" + q@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" @@ -7761,6 +8371,26 @@ quick-lru@^1.0.0: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g= +rc-config-loader@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/rc-config-loader/-/rc-config-loader-3.0.0.tgz#1484ed55d6fb8b21057699c8426370f7529c52a7" + integrity sha512-bwfUSB37TWkHfP+PPjb/x8BUjChFmmBK44JMfVnU7paisWqZl/o5k7ttCH+EQLnrbn2Aq8Fo1LAsyUiz+WF4CQ== + dependencies: + debug "^4.1.1" + js-yaml "^3.12.0" + json5 "^2.1.1" + require-from-string "^2.0.2" + +rc@^1.2.8, rc@~1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + react-is@^16.12.0: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" @@ -7773,6 +8403,14 @@ read-cmd-shim@^1.0.1: dependencies: graceful-fs "^4.1.2" +read-package-json-fast@^1.1.1, read-package-json-fast@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-1.1.3.tgz#3b78464ea8f3c4447f3358635390b6946dc0737e" + integrity sha512-MmFqiyfCXV2Dmm4jH24DEGhxdkUDFivJQj4oPZQPOKywxR7HWBE6WnMWDAapfFHi3wm1b+mhR+XHlUH0CL8axg== + dependencies: + json-parse-even-better-errors "^2.0.1" + npm-normalize-package-bin "^1.0.1" + "read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@^2.0.13: version "2.1.1" resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.1.1.tgz#16aa66c59e7d4dad6288f179dd9295fd59bb98f1" @@ -7876,7 +8514,7 @@ read@1, read@~1.0.1: string_decoder "^1.1.1" util-deprecate "^1.0.1" -readdir-scoped-modules@^1.0.0: +readdir-scoped-modules@^1.0.0, readdir-scoped-modules@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== @@ -7979,6 +8617,20 @@ regexpu-core@^4.7.0: unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.2.0" +registry-auth-token@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.1.1.tgz#40a33be1e82539460f94328b0f7f0f84c16d9479" + integrity sha512-9bKS7nTl9+/A1s7tnPeGrUpRcVY+LUh7bfFgzpndALdPfXQBfQV77rQVtqgUV3ti4vc/Ik81Ex8UJDWDQ12zQA== + dependencies: + rc "^1.2.8" + +registry-url@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" + integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== + dependencies: + rc "^1.2.8" + regjsgen@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" @@ -8060,11 +8712,25 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== +requireg@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/requireg/-/requireg-0.2.2.tgz#437e77a5316a54c9bcdbbf5d1f755fe093089830" + integrity sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg== + dependencies: + nested-error-stacks "~2.0.1" + rc "~1.2.7" + resolve "~1.7.1" + requireindex@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.2.0.tgz#3463cdb22ee151902635aa6c9535d4de9c2ef1ef" @@ -8138,6 +8804,20 @@ resolve@~1.12.0: dependencies: path-parse "^1.0.6" +resolve@~1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3" + integrity sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw== + dependencies: + path-parse "^1.0.5" + +responselike@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= + dependencies: + lowercase-keys "^1.0.0" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -8176,7 +8856,7 @@ rimraf@2.6.3: dependencies: glob "^7.1.3" -rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3: +rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3, rimraf@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -8272,11 +8952,23 @@ semver-compare@^1.0.0: resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= +semver-diff@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" + integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== + dependencies: + semver "^6.3.0" + semver-regex@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== +semver-utils@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/semver-utils/-/semver-utils-1.1.4.tgz#cf0405e669a57488913909fc1c3f29bf2a4871e2" + integrity sha512-EjnoLE5OGmDAVV/8YDoN5KiajNadjzIp9BAHOhYeQHt7j0UWxjmgsx4YD48wp4Ue1Qogq38F1GNUJNqF1kKKxA== + "semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" @@ -8292,6 +8984,11 @@ semver@7.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== +semver@^7.0.0, semver@^7.1.1, semver@^7.1.3, semver@^7.2.1: + version "7.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== + set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -8434,7 +9131,16 @@ socks-proxy-agent@^4.0.0: agent-base "~4.2.1" socks "~2.3.2" -socks@~2.3.2: +socks-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-5.0.0.tgz#7c0f364e7b1cf4a7a437e71253bed72e9004be60" + integrity sha512-lEpa1zsWCChxiynk+lCycKuC502RxDWLKJZoIhnxrWNjLSDGYRFflHA1/228VkRcnv9TIb8w98derGbpKxJRgA== + dependencies: + agent-base "6" + debug "4" + socks "^2.3.3" + +socks@^2.3.3, socks@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/socks/-/socks-2.3.3.tgz#01129f0a5d534d2b897712ed8aceab7ee65d78e3" integrity sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA== @@ -8488,6 +9194,11 @@ source-map@^0.7.3: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== +spawn-please@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/spawn-please/-/spawn-please-0.3.0.tgz#db338ec4cff63abc69f1d0e08cee9eb8bebd9d11" + integrity sha1-2zOOxM/2Orxp8dDgjO6euL69nRE= + spdx-correct@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" @@ -8562,6 +9273,13 @@ ssri@^6.0.0, ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" +ssri@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.0.tgz#79ca74e21f8ceaeddfcb4b90143c458b8d988808" + integrity sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA== + dependencies: + minipass "^3.1.1" + stack-utils@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" @@ -8632,7 +9350,7 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.1.0, string-width@^4.2.0: +string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== @@ -8775,6 +9493,11 @@ strip-json-comments@^3.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180" integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w== +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + strong-log-transformer@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" @@ -8844,6 +9567,18 @@ tar@^4.4.10, tar@^4.4.12, tar@^4.4.8: safe-buffer "^5.1.2" yallist "^3.0.3" +tar@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.0.1.tgz#7b3bd6c313cb6e0153770108f8d70ac298607efa" + integrity sha512-bKhKrrz2FJJj5s7wynxy/fyxpE0CmCjmOQ1KV4KkgXFWOgoIT/NbTMnB1n+LFNrNk0SSBVGGxcK5AGsyC+pW5Q== + dependencies: + chownr "^1.1.3" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.0" + mkdirp "^1.0.3" + yallist "^4.0.0" + temp-dir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" @@ -8874,6 +9609,11 @@ tempfile@^3.0.0: temp-dir "^2.0.0" uuid "^3.3.2" +term-size@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.0.tgz#1f16adedfe9bdc18800e1776821734086fcc6753" + integrity sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw== + terminal-link@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" @@ -8964,6 +9704,11 @@ to-object-path@^0.3.0: dependencies: kind-of "^3.0.2" +to-readable-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" + integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== + to-regex-range@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" @@ -9212,6 +9957,25 @@ upath@^1.2.0: resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== +update-notifier@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.0.tgz#4866b98c3bc5b5473c020b1250583628f9a328f3" + integrity sha512-w3doE1qtI0/ZmgeoDoARmI5fjDoT93IfKgEGqm26dGUOh8oNpaSTsGNdYRN/SjOuo10jcJGwkEL3mroKzktkew== + dependencies: + 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" + uri-js@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" @@ -9224,6 +9988,13 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= + dependencies: + prepend-http "^2.0.0" + use@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" @@ -9402,6 +10173,13 @@ wide-align@^1.1.0: dependencies: string-width "^1.0.2 || 2" +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== + dependencies: + string-width "^4.0.0" + windows-release@^3.1.0: version "3.3.0" resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.3.0.tgz#dce167e9f8be733f21c849ebd4d03fe66b29b9f0" @@ -9543,6 +10321,11 @@ yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + yaml@^1.7.2: version "1.8.3" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.8.3.tgz#2f420fca58b68ce3a332d0ca64be1d191dd3f87a" From 6c7e86d5dfe91c833d997e2f31b94e9a28ecbcc2 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Thu, 23 Apr 2020 16:15:39 -0700 Subject: [PATCH 11/61] build(root): update script to upgrade dependencies; upgrade dependencies --- .ncurc.json | 4 + package.json | 30 +- packages/assert/package.json | 2 +- packages/format/package.json | 2 +- packages/jest/package.json | 4 +- packages/preset-rules/package.json | 2 +- yarn.lock | 570 ++++++++++++----------------- 7 files changed, 259 insertions(+), 355 deletions(-) create mode 100644 .ncurc.json diff --git a/.ncurc.json b/.ncurc.json new file mode 100644 index 00000000..c2749a90 --- /dev/null +++ b/.ncurc.json @@ -0,0 +1,4 @@ +{ + "upgrade": true, + "reject": ["@types/node"] +} diff --git a/package.json b/package.json index 1fe7d03f..9a7797b5 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "lint": "lockfile-lint --path yarn.lock --allowed-hosts registry.yarnpkg.com --validate-https && eslint .", "lint:fix": "yarn lint --fix", "lint:staged": "lint-staged", - "update": "yarn upgrade; yarn audit; yarn outdated", + "update": "yarn ncu; yarn lerna exec ncu; yarn install; yarn upgrade; yarn audit; yarn outdated", "test": "jest --coverage", "build": "tsc --build", "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s && git add CHANGELOG.md", @@ -46,33 +46,33 @@ }, "devDependencies": { "@babel/core": "^7.9.0", - "@babel/preset-env": "^7.9.0", + "@babel/preset-env": "^7.9.5", "@babel/preset-typescript": "^7.9.0", "@commitlint/cli": "^8.3.5", "@commitlint/config-conventional": "^8.3.4", "@types/jest": "^25.2.1", - "@types/jsdom": "^16.1.1", + "@types/jsdom": "^16.2.1", "@types/node": "^12.12.31", - "@typescript-eslint/eslint-plugin": "^2.23.0", - "@typescript-eslint/parser": "^2.23.0", - "babel-jest": "^25.1.0", + "@typescript-eslint/eslint-plugin": "^2.29.0", + "@typescript-eslint/parser": "^2.29.0", + "babel-jest": "^25.4.0", "commitizen": "^4.0.4", "conventional-changelog-cli": "^2.0.31", - "cspell": "^4.0.55", + "cspell": "^4.0.57", "eslint": "^6.8.0", - "eslint-config-prettier": "^6.10.0", + "eslint-config-prettier": "^6.11.0", "eslint-plugin-jest": "^23.8.2", "eslint-plugin-license-header": "^0.2.0", - "eslint-plugin-notice": "^0.8.9", - "eslint-plugin-prettier": "^3.1.2", - "eslint-plugin-tsdoc": "^0.2.3", - "husky": "^4.2.3", - "jest": "^25.3.0", + "eslint-plugin-notice": "^0.8.10", + "eslint-plugin-prettier": "^3.1.3", + "eslint-plugin-tsdoc": "^0.2.4", + "husky": "^4.2.5", + "jest": "^25.4.0", "lerna": "^3.20.2", - "lint-staged": "^10.0.8", + "lint-staged": "^10.1.7", "lockfile-lint": "^4.2.2", "npm-check-updates": "^4.1.2", - "prettier": "2.0.4", + "prettier": "2.0.5", "typescript": "^3.8.3" }, "engines": { diff --git a/packages/assert/package.json b/packages/assert/package.json index 3419641c..2bf0b8b0 100644 --- a/packages/assert/package.json +++ b/packages/assert/package.json @@ -22,7 +22,7 @@ "dependencies": { "@sa11y/format": "0.1.0", "@sa11y/preset-rules": "0.1.1", - "axe-core": "3.5.3" + "axe-core": "^3.5.3" }, "devDependencies": { "global-jsdom": "^6.1.0", diff --git a/packages/format/package.json b/packages/format/package.json index e285a458..fa82efeb 100644 --- a/packages/format/package.json +++ b/packages/format/package.json @@ -24,7 +24,7 @@ ], "dependencies": {}, "devDependencies": { - "axe-core": "3.5.3", + "axe-core": "^3.5.3", "global-jsdom": "^6.1.0", "jsdom": "^16.2.2" } diff --git a/packages/jest/package.json b/packages/jest/package.json index 4980f3da..323386b6 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -25,10 +25,10 @@ "jest-matcher-utils": "^25.4.0" }, "peerDependencies": { - "jest": "^25.3.0" + "jest": "^25.4.0" }, "devDependencies": { - "axe-core": "3.5.3", + "axe-core": "^3.5.3", "global-jsdom": "^6.1.0", "jsdom": "^16.2.2" } diff --git a/packages/preset-rules/package.json b/packages/preset-rules/package.json index 0eae8660..20aa624c 100644 --- a/packages/preset-rules/package.json +++ b/packages/preset-rules/package.json @@ -20,6 +20,6 @@ "dist/**/*.js" ], "devDependencies": { - "axe-core": "3.5.3" + "axe-core": "^3.5.3" } } diff --git a/yarn.lock b/yarn.lock index b3fc5f51..185ea25c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -338,7 +338,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-bigint@^7.0.0", "@babel/plugin-syntax-bigint@^7.8.3": +"@babel/plugin-syntax-bigint@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== @@ -387,7 +387,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": +"@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== @@ -675,7 +675,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" -"@babel/preset-env@^7.9.0": +"@babel/preset-env@^7.9.5": version "7.9.5" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.5.tgz#8ddc76039bc45b774b19e2fc548f6807d8a8919f" integrity sha512-eWGYeADTlPJH+wq1F0wNfPbVS1w1wtmMJiYk55Td5Yu28AsdR9AsC97sZ0Qq8fHqQuslVSIYSGJMcblr345GfQ== @@ -760,7 +760,7 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-transform-typescript" "^7.9.0" -"@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": +"@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": version "7.9.2" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06" integrity sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q== @@ -1157,28 +1157,6 @@ jest-runner "^25.4.0" jest-runtime "^25.4.0" -"@jest/transform@^25.2.6": - version "25.2.6" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-25.2.6.tgz#007fd946dedf12d2a9eb5d4154faf1991d5f61ff" - integrity sha512-rZnjCjZf9avPOf9q/w9RUZ9Uc29JmB53uIXNJmNz04QbDMD5cR/VjfikiMKajBsXe2vnFl5sJ4RTt+9HPicauQ== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^25.2.6" - babel-plugin-istanbul "^6.0.0" - chalk "^3.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.3" - jest-haste-map "^25.2.6" - jest-regex-util "^25.2.6" - jest-util "^25.2.6" - micromatch "^4.0.2" - pirates "^4.0.1" - realpath-native "^2.0.0" - slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" - "@jest/transform@^25.4.0": version "25.4.0" resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-25.4.0.tgz#eef36f0367d639e2fd93dccd758550377fbb9962" @@ -1201,16 +1179,6 @@ source-map "^0.6.1" write-file-atomic "^3.0.0" -"@jest/types@^25.2.6": - version "25.2.6" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.2.6.tgz#c12f44af9bed444438091e4b59e7ed05f8659cb6" - integrity sha512-myJTTV37bxK7+3NgKc4Y/DlQ5q92/NOwZsZ+Uch7OXdElxOg61QYc72fPYNAjlvbnJ2YvbXLamIsa9tj48BmyQ== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^15.0.0" - chalk "^3.0.0" - "@jest/types@^25.4.0": version "25.4.0" resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.4.0.tgz#5afeb8f7e1cba153a28e5ac3c9fe3eede7206d59" @@ -1985,12 +1953,12 @@ dependencies: "@octokit/types" "^2.0.0" -"@octokit/endpoint@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.0.tgz#4c7acd79ab72df78732a7d63b09be53ec5a2230b" - integrity sha512-3nx+MEYoZeD0uJ+7F/gvELLvQJzLXhep2Az0bBSXagbApDvDW0LWwpnAIY/hb0Jwe17A0fJdz0O12dPh05cj7A== +"@octokit/endpoint@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.1.tgz#16d5c0e7a83e3a644d1ddbe8cded6c3d038d31d7" + integrity sha512-pOPHaSz57SFT/m3R5P8MUu4wLPszokn5pXcB/pzavLTQf2jbU+6iayTvzaY6/BiotuRS0qyEUkx3QglT4U958A== dependencies: - "@octokit/types" "^2.0.0" + "@octokit/types" "^2.11.1" is-plain-object "^3.0.0" universal-user-agent "^5.0.0" @@ -2038,13 +2006,13 @@ once "^1.4.0" "@octokit/request@^5.2.0": - version "5.3.4" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.3.4.tgz#fbc950bf785d59da3b0399fc6d042c8cf52e2905" - integrity sha512-qyj8G8BxQyXjt9Xu6NvfvOr1E0l35lsXtwm3SopsYg/JWXjlsnwqLc8rsD2OLguEL/JjLfBvrXr4az7z8Lch2A== + version "5.4.2" + resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.4.2.tgz#74f8e5bbd39dc738a1b127629791f8ad1b3193ee" + integrity sha512-zKdnGuQ2TQ2vFk9VU8awFT4+EYf92Z/v3OlzRaSh4RIP0H6cvW1BFPXq4XYvNez+TPQjqN+0uSkCYnMFFhcFrw== dependencies: - "@octokit/endpoint" "^6.0.0" + "@octokit/endpoint" "^6.0.1" "@octokit/request-error" "^2.0.0" - "@octokit/types" "^2.0.0" + "@octokit/types" "^2.11.1" deprecation "^2.0.0" is-plain-object "^3.0.0" node-fetch "^2.3.0" @@ -2073,10 +2041,10 @@ once "^1.4.0" universal-user-agent "^4.0.0" -"@octokit/types@^2.0.0", "@octokit/types@^2.0.1": - version "2.6.0" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.6.0.tgz#0fe9a7e165fa520c25ca7c6a071de0376ec629da" - integrity sha512-CcLYfhy5/AeY4O07VlWpB6sIAuYwd+FY+spSXJAGmiTMTKIW00N4uSpbKionGxntWu8IU87oOrI7SuuBWQhltg== +"@octokit/types@^2.0.0", "@octokit/types@^2.0.1", "@octokit/types@^2.11.1": + version "2.12.1" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.12.1.tgz#4a26b4a85ec121043d3b0745b5798f9d8fd968ca" + integrity sha512-LRLR1tjbcCfAmUElvTmMvLEzstpx6Xt/aQVTg2xvd+kHA2Ekp1eWl5t+gU7bcwjXHYEAzh4hH4WH+kS3vh+wRw== dependencies: "@types/node" ">= 8" @@ -2093,9 +2061,9 @@ integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== "@sinonjs/commons@^1.7.0": - version "1.7.1" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.7.1.tgz#da5fd19a5f71177a53778073978873964f49acf1" - integrity sha512-Debi3Baff1Qu1Unc3mjJ96MgpbwTn43S1+9yJ0llWygPwDNu2aaWBD6yc9y/Z8XDRNhx7U+u2UDg2OGQXkclUQ== + version "1.7.2" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.7.2.tgz#505f55c74e0272b43f6c52d81946bed7058fc0e2" + integrity sha512-+DUO6pnp3udV/v2VfUWgaY5BIE1IfT7lLfeDzPVeMT1XKkaAp9LgSI9x5RtrFQoZ9Oi0PgXQQHPaoKu7dCjVxw== dependencies: type-detect "4.0.8" @@ -2111,7 +2079,7 @@ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== -"@types/babel__core@^7.1.0", "@types/babel__core@^7.1.7": +"@types/babel__core@^7.1.7": version "7.1.7" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.7.tgz#1dacad8840364a57c98d0dd4855c6dd3752c6b89" integrity sha512-RL62NqSFPCDK2FM1pSDH0scHpJvsXtZNiYlMB73DgPBaG1E38ZYVL+ei5EkWRbr+KC4YNiAUNBnRj+bgwpgjMw== @@ -2196,10 +2164,10 @@ jest-diff "^25.2.1" pretty-format "^25.2.1" -"@types/jsdom@^16.1.1": - version "16.2.0" - resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-16.2.0.tgz#5a371a2efc1e0feec02c4bd2b3ce689e6ae691a2" - integrity sha512-I+qrFCzB97VlGJgvzGEwcUqmajpwqwTalmMvVfgJqFRVsY80lcCEQEGLJuVvge+whQyB1xcqTstAdxJshVVq0g== +"@types/jsdom@^16.2.1": + version "16.2.1" + resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-16.2.1.tgz#9e6eee6a578f74eed5997558ab430dbc11aac753" + integrity sha512-KCEq427OsWfpX7FRyEMb3i2XIuz8Pt3XPls4nmX0iMTDJWsHD4Kzoa3v4Uv9c9IDf11ALeHUtPcyAjTz/HV03Q== dependencies: "@types/node" "*" "@types/parse5" "*" @@ -2216,14 +2184,14 @@ integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== "@types/node@*", "@types/node@>= 8": - version "13.11.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-13.11.0.tgz#390ea202539c61c8fa6ba4428b57e05bc36dc47b" - integrity sha512-uM4mnmsIIPK/yeO+42F2RQhGUIs39K2RFmugcJANppXe6J1nvH87PvzPZYpza7Xhhs8Yn9yIAVdLZ84z61+0xQ== + version "13.13.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.2.tgz#160d82623610db590a64e8ca81784e11117e5a54" + integrity sha512-LB2R1Oyhpg8gu4SON/mfforE525+Hi/M1ineICEDftqNVTyFg1aRIeGuTvXAoWHc4nbrFncWtJgMmoyRvuGh7A== "@types/node@^12.12.31": - version "12.12.34" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.34.tgz#0a5d6ae5d22612f0cf5f10320e1fc5d2a745dcb8" - integrity sha512-BneGN0J9ke24lBRn44hVHNeDlrXRYF+VRp0HbSUNnEZahXGAysHZIqnf/hER6aabdBgzM4YOV4jrR8gj4Zfi0g== + version "12.12.37" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.37.tgz#cb4782d847f801fa58316da5b4801ca3a59ae790" + integrity sha512-4mXKoDptrXAwZErQHrLzpe0FN/0Wmf5JRniSVIdwUrtDf9wnmEV1teCNLBo/TwuXhkK/bVegoEn/wmb+x0AuPg== "@types/normalize-package-data@^2.4.0": version "2.4.0" @@ -2267,40 +2235,40 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^2.23.0": - version "2.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.27.0.tgz#e479cdc4c9cf46f96b4c287755733311b0d0ba4b" - integrity sha512-/my+vVHRN7zYgcp0n4z5A6HAK7bvKGBiswaM5zIlOQczsxj/aiD7RcgD+dvVFuwFaGh5+kM7XA6Q6PN0bvb1tw== +"@typescript-eslint/eslint-plugin@^2.29.0": + version "2.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.29.0.tgz#c9efab7624e3dd6d144a0e4577a541d1bd42c2ac" + integrity sha512-X/YAY7azKirENm4QRpT7OVmzok02cSkqeIcLmdz6gXUQG4Hk0Fi9oBAynSAyNXeGdMRuZvjBa0c1Lu0dn/u6VA== dependencies: - "@typescript-eslint/experimental-utils" "2.27.0" + "@typescript-eslint/experimental-utils" "2.29.0" functional-red-black-tree "^1.0.1" regexpp "^3.0.0" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@2.27.0", "@typescript-eslint/experimental-utils@^2.5.0": - version "2.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.27.0.tgz#801a952c10b58e486c9a0b36cf21e2aab1e9e01a" - integrity sha512-vOsYzjwJlY6E0NJRXPTeCGqjv5OHgRU1kzxHKWJVPjDYGbPgLudBXjIlc+OD1hDBZ4l1DLbOc5VjofKahsu9Jw== +"@typescript-eslint/experimental-utils@2.29.0", "@typescript-eslint/experimental-utils@^2.5.0": + version "2.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.29.0.tgz#3cb8060de9265ba131625a96bbfec31ba6d4a0fe" + integrity sha512-H/6VJr6eWYstyqjWXBP2Nn1hQJyvJoFdDtsHxGiD+lEP7piGnGpb/ZQd+z1ZSB1F7dN+WsxUDh8+S4LwI+f3jw== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.27.0" + "@typescript-eslint/typescript-estree" "2.29.0" eslint-scope "^5.0.0" eslint-utils "^2.0.0" -"@typescript-eslint/parser@^2.23.0": - version "2.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.27.0.tgz#d91664335b2c46584294e42eb4ff35838c427287" - integrity sha512-HFUXZY+EdwrJXZo31DW4IS1ujQW3krzlRjBrFRrJcMDh0zCu107/nRfhk/uBasO8m0NVDbBF5WZKcIUMRO7vPg== +"@typescript-eslint/parser@^2.29.0": + version "2.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.29.0.tgz#6e3c4e21ed6393dc05b9d8b47f0b7e731ef21c9c" + integrity sha512-H78M+jcu5Tf6m/5N8iiFblUUv+HJDguMSdFfzwa6vSg9lKR8Mk9BsgeSjO8l2EshKnJKcbv0e8IDDOvSNjl0EA== dependencies: "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.27.0" - "@typescript-eslint/typescript-estree" "2.27.0" + "@typescript-eslint/experimental-utils" "2.29.0" + "@typescript-eslint/typescript-estree" "2.29.0" eslint-visitor-keys "^1.1.0" -"@typescript-eslint/typescript-estree@2.27.0": - version "2.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.27.0.tgz#a288e54605412da8b81f1660b56c8b2e42966ce8" - integrity sha512-t2miCCJIb/FU8yArjAvxllxbTiyNqaXJag7UOpB5DVoM3+xnjeOngtqlJkLRnMtzaRcJhe3CIR9RmL40omubhg== +"@typescript-eslint/typescript-estree@2.29.0": + version "2.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.29.0.tgz#1be6612bb02fc37ac9f466521c1459a4744e8d3a" + integrity sha512-3YGbtnWy4az16Egy5Fj5CckkVlpIh0MADtAQza+jiMADRSKkjdpzZp/5WuvwK/Qib3Z0HtzrDFeWanS99dNhnA== dependencies: debug "^4.1.1" eslint-visitor-keys "^1.1.0" @@ -2434,9 +2402,9 @@ aggregate-error@^3.0.0: indent-string "^4.0.0" ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5: - version "6.12.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" - integrity sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw== + version "6.12.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" + integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ== dependencies: fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" @@ -2672,24 +2640,11 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== -axe-core@3.5.3: +axe-core@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-3.5.3.tgz#5b7c0ee7c5197d546bd3a07c3ef701896f5773e9" integrity sha512-HZpLE7xu05+8AbpqXITGdxp1Xwk8ysAXrg7MiKRY27py3DAyEJpoJQo1727pWF3F+O79V3r+cTWhOzfB49P89w== -babel-jest@^25.1.0: - version "25.2.6" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-25.2.6.tgz#fe67ff4d0db3626ca8082da8881dd5e84e07ae75" - integrity sha512-MDJOAlwtIeIQiGshyX0d2PxTbV73xZMpNji40ivVTPQOm59OdRR9nYCkffqI7ugtsK4JR98HgNKbDbuVf4k5QQ== - dependencies: - "@jest/transform" "^25.2.6" - "@jest/types" "^25.2.6" - "@types/babel__core" "^7.1.0" - babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^25.2.6" - chalk "^3.0.0" - slash "^3.0.0" - babel-jest@^25.4.0: version "25.4.0" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-25.4.0.tgz#409eb3e2ddc2ad9a92afdbb00991f1633f8018d0" @@ -2704,9 +2659,9 @@ babel-jest@^25.4.0: slash "^3.0.0" babel-plugin-dynamic-import-node@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" - integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ== + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== dependencies: object.assign "^4.1.0" @@ -2721,13 +2676,6 @@ babel-plugin-istanbul@^6.0.0: istanbul-lib-instrument "^4.0.0" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.2.6.tgz#2af07632b8ac7aad7d414c1e58425d5fc8e84909" - integrity sha512-qE2xjMathybYxjiGFJg0mLFrz0qNp83aNZycWDY/SuHiZNq+vQfRQtuINqyXyue1ELd8Rd+1OhFSLjms8msMbw== - dependencies: - "@types/babel__traverse" "^7.0.6" - babel-plugin-jest-hoist@^25.4.0: version "25.4.0" resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.4.0.tgz#0c122c1b93fb76f52d2465be2e8069e798e9d442" @@ -2760,15 +2708,6 @@ babel-preset-current-node-syntax@^0.1.2: "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -babel-preset-jest@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-25.2.6.tgz#5d3f7c99e2a8508d61775c9d68506d143b7f71b5" - integrity sha512-Xh2eEAwaLY9+SyMt/xmGZDnXTW/7pSaBPG0EMo7EuhvosFKVWYB6CqwYD31DaEQuoTL090oDZ0FEqygffGRaSQ== - dependencies: - "@babel/plugin-syntax-bigint" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - babel-plugin-jest-hoist "^25.2.6" - babel-preset-jest@^25.4.0: version "25.4.0" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-25.4.0.tgz#10037cc32b751b994b260964629e49dc479abf4c" @@ -2877,13 +2816,13 @@ browser-resolve@^1.11.3: dependencies: resolve "1.1.7" -browserslist@^4.8.3, browserslist@^4.9.1: - version "4.11.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.11.1.tgz#92f855ee88d6e050e7e7311d987992014f1a1f1b" - integrity sha512-DCTr3kDrKEYNw6Jb9HFxVLQNaue8z+0ZfRBRjmCunKDEXEBajKDj2Y+Uelg+Pi29OnvaSGwjOsnRyNEkXzHg5g== +browserslist@^4.8.5, browserslist@^4.9.1: + version "4.12.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.0.tgz#06c6d5715a1ede6c51fc39ff67fd647f740b656d" + integrity sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg== dependencies: - caniuse-lite "^1.0.30001038" - electron-to-chromium "^1.3.390" + caniuse-lite "^1.0.30001043" + electron-to-chromium "^1.3.413" node-releases "^1.1.53" pkg-up "^2.0.0" @@ -3057,10 +2996,10 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -caniuse-lite@^1.0.30001038: - version "1.0.30001039" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001039.tgz#b3814a1c38ffeb23567f8323500c09526a577bbe" - integrity sha512-SezbWCTT34eyFoWHgx8UWso7YtvtM7oosmFoXbCkdC6qJzRfBTeTgE9REtKtiuKXuMwWTZEvdnFNGAyVMorv8Q== +caniuse-lite@^1.0.30001043: + version "1.0.30001046" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001046.tgz#7a06d3e8fd8aa7f4d21c9a2e313f35f2d06b013e" + integrity sha512-CsGjBRYWG6FvgbyGy+hBbaezpwiqIOLkxQPY4A4Ea49g1eNsnQuESB+n4QM0BKii1j80MyJ26Ir5ywTQkbRE4g== capture-exit@^2.0.0: version "2.0.0" @@ -3102,6 +3041,14 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.0.0.tgz#6e98081ed2d17faab615eb52ac66ec1fe6209e72" + integrity sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -3172,9 +3119,9 @@ cli-truncate@^0.2.1: string-width "^1.0.1" cli-width@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" - integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" + integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== cliui@^5.0.0: version "5.0.0" @@ -3287,11 +3234,6 @@ commander@^2.20.3, commander@~2.20.3: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - commander@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/commander/-/commander-5.0.0.tgz#dbf1909b49e5044f8fdaf0adc809f0c0722bdfd0" @@ -3333,7 +3275,7 @@ compare-func@^1.3.1: array-ify "^1.0.0" dot-prop "^3.0.0" -compare-versions@^3.5.1: +compare-versions@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== @@ -3630,11 +3572,11 @@ copy-descriptor@^0.1.0: integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= core-js-compat@^3.6.2: - version "3.6.4" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.4.tgz#938476569ebb6cda80d339bcf199fae4f16fff17" - integrity sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA== + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c" + integrity sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng== dependencies: - browserslist "^4.8.3" + browserslist "^4.8.5" semver "7.0.0" core-js@^2.4.0, core-js@^2.5.0: @@ -3700,10 +3642,10 @@ cspell-dict-bash@^1.0.3: dependencies: configstore "^5.0.0" -cspell-dict-companies@^1.0.20: - version "1.0.21" - resolved "https://registry.yarnpkg.com/cspell-dict-companies/-/cspell-dict-companies-1.0.21.tgz#0544ce7ed29061201d2fca9ffe6fb11bf09ec709" - integrity sha512-vHW6pA0cLIT1qUfT6c+xV1IORrmSKuraHPJ7dwdRhWwuc6Ltc7QJWloapufxWgsYUCLllmFcv6E7kzzmue66gw== +cspell-dict-companies@^1.0.21: + version "1.0.22" + resolved "https://registry.yarnpkg.com/cspell-dict-companies/-/cspell-dict-companies-1.0.22.tgz#a30983605888ce530e5c7c2ad1b2b9e33c20fcae" + integrity sha512-P7ziSCteONYjlPHFFqZTnisSEJr9h9FXTJh0t9QQIoKcaNR4wij5GiZDv4p4YubCf0z3GeJ7Uao+99RGeHakRQ== dependencies: configstore "^5.0.0" @@ -3757,9 +3699,9 @@ cspell-dict-fonts@^1.0.5: configstore "^5.0.0" cspell-dict-fullstack@^1.0.22: - version "1.0.22" - resolved "https://registry.yarnpkg.com/cspell-dict-fullstack/-/cspell-dict-fullstack-1.0.22.tgz#54122342ff408082f904c6c20e3facb36df0762c" - integrity sha512-k8Op1ltkgKnMTTo/kgkywE0htwi+3EtYrPPWk+mD9o3IFgC6yLKA89Tkrd0kEEPR3qJvC4gQJmGJns6Y25v0Zg== + version "1.0.23" + resolved "https://registry.yarnpkg.com/cspell-dict-fullstack/-/cspell-dict-fullstack-1.0.23.tgz#c933e3987edf6e81e85bf58ca31e574ff79f9d0c" + integrity sha512-vc/aihpKVD/ML+SLVry6kDWFswW/sQfP9QHrr2ZhQLUwhj9pVMnZvx+u1cV8bhMYltWQZxrDhdAe4jrlBrxLHA== dependencies: configstore "^5.0.0" @@ -3847,44 +3789,44 @@ cspell-dict-scala@^1.0.11: dependencies: configstore "^5.0.0" -cspell-dict-software-terms@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/cspell-dict-software-terms/-/cspell-dict-software-terms-1.0.7.tgz#74f33a36b470c7344ab8bd0fb1bc4f82dcbf27c8" - integrity sha512-Fh8NmDqY+GZRrJJuFUNoIDbR9WoP9mte+nVVGK5u8vurNInOG/MgRL0O/dhDfTmrMlSyAMhlUWm+852sXietEA== +cspell-dict-software-terms@^1.0.7: + version "1.0.8" + resolved "https://registry.yarnpkg.com/cspell-dict-software-terms/-/cspell-dict-software-terms-1.0.8.tgz#14ac832dc3ca1c5ac15ff51ba0f85e5c5111019d" + integrity sha512-a8JkYf1pG5xUTKRPFp+7t4Gn7fhH9M5E94LXVuPPSQrns18pE0DGV0OEK/VbZUagsyRaDaHiZFqedIQ83M2Mpw== dependencies: configstore "^5.0.0" -cspell-dict-typescript@^1.0.3: +cspell-dict-typescript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/cspell-dict-typescript/-/cspell-dict-typescript-1.0.4.tgz#95ca26adf15c5e31cda2506e03ce7b7c18e9fbb0" integrity sha512-cniGSmTohYriEgGJ0PgcQP2GCGP+PH/0WZ2N7BTTemQr/mHTU6bKWy8DVK63YEtYPEmhZv+G2xPBgBD41QQypQ== dependencies: configstore "^5.0.0" -cspell-glob@^0.1.17: - version "0.1.17" - resolved "https://registry.yarnpkg.com/cspell-glob/-/cspell-glob-0.1.17.tgz#e8dad6eedc23bc3e98175f2077df25e7e3212a8a" - integrity sha512-gAiKakWJbHay6cobcJnX1+XhNCFYqR7CJM5GPiEpRZ5RFXYR46fYbkVwTdg3sqbFLErJtghQj/0s5Xa0q9NJpQ== +cspell-glob@^0.1.18: + version "0.1.18" + resolved "https://registry.yarnpkg.com/cspell-glob/-/cspell-glob-0.1.18.tgz#6762774f58d2fe176b6d9ed347a9e5862dc551a8" + integrity sha512-j7XDtSRUgHZNLcnFNI2ngTvkAlC7AI43LAuOYTCgU3+zKMdwzq6C7m/a1c9tWjnPYJiIPf+OEkE9bAhIufzk3Q== dependencies: micromatch "^4.0.2" -cspell-io@^4.0.20: - version "4.0.20" - resolved "https://registry.yarnpkg.com/cspell-io/-/cspell-io-4.0.20.tgz#4aecc054852c712e96e075eb270dbbbc4482fca1" - integrity sha512-fomz1P308XgyyxaOEKdNbh82Ac4AKaz26p4JszV7YkJrGDsXMoByTQjVqdDloNN8FchogSEpLPeQoIg648exBA== +cspell-io@^4.0.21: + version "4.0.21" + resolved "https://registry.yarnpkg.com/cspell-io/-/cspell-io-4.0.21.tgz#f3c051294b5229f67caa17e3b4946985ec8f39c4" + integrity sha512-dht81s3CMPQTqtYqcJ/imEbE7WoYgGR4F52Fotgvd7Kky+H8GgSBnJYLJNk/PuT2xJ/8ebhx7v464v9cD73Okw== dependencies: iconv-lite "^0.4.24" iterable-to-stream "^1.0.1" -cspell-lib@^4.1.21: - version "4.1.21" - resolved "https://registry.yarnpkg.com/cspell-lib/-/cspell-lib-4.1.21.tgz#7321652e5bb8d5a1b0a1372d42d125dc275f4161" - integrity sha512-mcbYQRO9GeLjUU3fTrJEwD17pF/t4YlgYoEqVQkLgR0kCQ5exMFlj8II4UQHgNevx8GMJGpqQ9+fM6ZhCYKIzQ== +cspell-lib@^4.1.23: + version "4.1.23" + resolved "https://registry.yarnpkg.com/cspell-lib/-/cspell-lib-4.1.23.tgz#8d74bcb14f604c9d8eb44ddc3d713d59c331ab42" + integrity sha512-UNLsOEq12xbL8o4SWGsDl1xAwyR8BUlGkwI3uv5Acc7noolObMXOJLp/TLE36PrMKWVmbg8s/9pnUKwrcwTC3w== dependencies: comment-json "^1.1.3" configstore "^5.0.1" cspell-dict-bash "^1.0.3" - cspell-dict-companies "^1.0.20" + cspell-dict-companies "^1.0.21" cspell-dict-cpp "^1.1.26" cspell-dict-django "^1.0.15" cspell-dict-dotnet "^1.0.14" @@ -3905,39 +3847,40 @@ cspell-lib@^4.1.21: cspell-dict-ruby "^1.0.3" cspell-dict-rust "^1.0.12" cspell-dict-scala "^1.0.11" - cspell-dict-software-terms "^1.0.6" - cspell-dict-typescript "^1.0.3" - cspell-io "^4.0.20" - cspell-trie-lib "^4.1.8" - cspell-util-bundle "^4.0.9" + cspell-dict-software-terms "^1.0.7" + cspell-dict-typescript "^1.0.4" + cspell-io "^4.0.21" + cspell-trie-lib "^4.1.9" + cspell-util-bundle "^4.0.11" fs-extra "^8.1.0" - gensequence "^3.0.3" + gensequence "^3.1.1" + minimatch "^3.0.4" vscode-uri "^2.1.1" -cspell-trie-lib@^4.1.8: - version "4.1.8" - resolved "https://registry.yarnpkg.com/cspell-trie-lib/-/cspell-trie-lib-4.1.8.tgz#cc40c863c8c03920c61e5330c3acfcaf9871e40f" - integrity sha512-G0Jpybwxyl7rG3c4tzrROEVmiKAsyIjaDdnGxkzOFkl4tjcZeCh7GIVrqLyyk3VWslrWMVvmQi1/eLDccagepw== +cspell-trie-lib@^4.1.9: + version "4.1.9" + resolved "https://registry.yarnpkg.com/cspell-trie-lib/-/cspell-trie-lib-4.1.9.tgz#ebf38b5affd9a35289e945c7482b112152e5102f" + integrity sha512-Qf/bnXwEwm6oRaZPvELuIva6iJfCr+4WDbcNaNZUd+J3snanMpzp+TsqHyH3p1dPxnvO8eAEnU9RWVUdbXXnfA== dependencies: - gensequence "^3.0.3" + gensequence "^3.1.1" -cspell-util-bundle@^4.0.9: - version "4.0.9" - resolved "https://registry.yarnpkg.com/cspell-util-bundle/-/cspell-util-bundle-4.0.9.tgz#9e6a7f3dcd4aef1b9c6743d33d09379cf94ecd08" - integrity sha512-+xhIGJAkPxD7aKl97S0E34B5dF+HSTSoEL6M2f6Y46tusFGc9VdhA/iIZQooZZx2RQy4WaHw/ABfsRfxtnFVLw== +cspell-util-bundle@^4.0.11: + version "4.0.11" + resolved "https://registry.yarnpkg.com/cspell-util-bundle/-/cspell-util-bundle-4.0.11.tgz#838e493a33a063e2f28df0bd81bcf86c3cf15385" + integrity sha512-6AJRN0KbeTJB+IPpwKb11zFUVz2Q8Rgm4qmy/wsbhw6ICFfmgWG5Fr2OzJpZBCm8GJJg1Tjs/VZimSvCdnRj7g== -cspell@^4.0.55: - version "4.0.55" - resolved "https://registry.yarnpkg.com/cspell/-/cspell-4.0.55.tgz#4295b88c9cb7b1bf7290027212913203be5f3f9d" - integrity sha512-LmBk2VNrBSXFPOpmhJalqYGdDF1x68H4wI3c7RDMRLfG/zOaFoZUEuJUYOC07tFXDosczXMu38Qt9cnEVZmrAA== +cspell@^4.0.57: + version "4.0.57" + resolved "https://registry.yarnpkg.com/cspell/-/cspell-4.0.57.tgz#8323c9d198cbc6dc90bb3ce42f2e5a9585bc0f6d" + integrity sha512-iKQ6iWP4nhMiuu1PnbcVGfZ0tE/NXRqRjYA1Kq/UW35a90WLSecIq8YgJn2J48FtnfWujPzXl/U7Tj4WqleGXg== dependencies: chalk "^2.4.2" commander "^2.20.3" comment-json "^1.1.3" - cspell-glob "^0.1.17" - cspell-lib "^4.1.21" + cspell-glob "^0.1.18" + cspell-lib "^4.1.23" fs-extra "^8.1.0" - gensequence "^3.0.3" + gensequence "^3.1.1" get-stdin "^7.0.0" glob "^7.1.6" minimatch "^3.0.4" @@ -4281,10 +4224,10 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" -electron-to-chromium@^1.3.390: - version "1.3.398" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.398.tgz#4c01e29091bf39e578ac3f66c1f157d92fa5725d" - integrity sha512-BJjxuWLKFbM5axH3vES7HKMQgAknq9PZHBkMK/rEXUQG9i1Iw5R+6hGkm6GtsQSANjSUrh/a6m32nzCNDNo/+w== +electron-to-chromium@^1.3.413: + version "1.3.415" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.415.tgz#e50241c1e2553e46cfe956c9d95f9ab3fc9a9134" + integrity sha512-GbtYqKffx3sU8G0HxwXuJFfs58Q7+iwLa5rBwaULwET6jWW8IAQSrVnu7vEfiUIcMVfbYyFg7cw3zdm+EbBJmw== elegant-spinner@^1.0.1: version "1.0.1" @@ -4397,10 +4340,10 @@ escodegen@^1.11.1, escodegen@^1.14.1: optionalDependencies: source-map "~0.6.1" -eslint-config-prettier@^6.10.0: - version "6.10.1" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.10.1.tgz#129ef9ec575d5ddc0e269667bf09defcd898642a" - integrity sha512-svTy6zh1ecQojvpbJSgH3aei/Rt7C6i090l5f2WQ4aB05lYHeZIR1qL4wZyyILTbtmnbHP5Yn8MrsOJMGa8RkQ== +eslint-config-prettier@^6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz#f6d2238c1290d01c859a8b5c1f7d352a0b0da8b1" + integrity sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA== dependencies: get-stdin "^6.0.0" @@ -4418,23 +4361,23 @@ eslint-plugin-license-header@^0.2.0: dependencies: requireindex "^1.2.0" -eslint-plugin-notice@^0.8.9: - version "0.8.9" - resolved "https://registry.yarnpkg.com/eslint-plugin-notice/-/eslint-plugin-notice-0.8.9.tgz#b3b55ba218b36a01fd4de998f68c66a8bf238a82" - integrity sha512-Z6xit9Yv7pCG/rS3DohSou1BeDffPOhmuQzE7UWMxV2h/MJmsOq3QZFyXmbi18cExlyWbz4+ztAogi2edeTbjA== +eslint-plugin-notice@^0.8.10: + version "0.8.10" + resolved "https://registry.yarnpkg.com/eslint-plugin-notice/-/eslint-plugin-notice-0.8.10.tgz#a9307cf42ab38c4e548e45197d4f98aaeea6b15b" + integrity sha512-vtUZ3FMt+SJ/2THV6mgtYS3a5Xe0EiASnSY948Z53uOhpUFYCVNyTIOSd1zDGWYe0J4L1shZevMlgPlkYJ34vw== dependencies: find-root "^1.1.0" lodash "^4.17.15" metric-lcs "^0.1.2" -eslint-plugin-prettier@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz#432e5a667666ab84ce72f945c72f77d996a5c9ba" - integrity sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA== +eslint-plugin-prettier@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.3.tgz#ae116a0fc0e598fdae48743a4430903de5b4e6ca" + integrity sha512-+HG5jmu/dN3ZV3T6eCD7a4BlAySdN7mLIbJYo0z1cFQuI+r2DiTJEFeF68ots93PsnrMxbzIZ2S/ieX+mkrBeQ== dependencies: prettier-linter-helpers "^1.0.0" -eslint-plugin-tsdoc@^0.2.3: +eslint-plugin-tsdoc@^0.2.4: version "0.2.4" resolved "https://registry.yarnpkg.com/eslint-plugin-tsdoc/-/eslint-plugin-tsdoc-0.2.4.tgz#b4e554838b9d0b09acd0955b6d9a0dd00978dc93" integrity sha512-iUHb4SkithNERIfrHGWAdsR0cjHplF9F9Mop4cnDSplAw/0oKyPb9eDjcqwFfO4E2pz+JLv24TzgM7gFAGqO9A== @@ -4532,11 +4475,11 @@ esprima@^4.0.0, esprima@^4.0.1: integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esquery@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.2.0.tgz#a010a519c0288f2530b3404124bfb5f02e9797fe" - integrity sha512-weltsSqdeWIX9G2qQZz7KlTRJdkkOCTPgLYJUz1Hacf48R4YOwGPHO3+ORfWedqJKbq5WQmsgK90n+pFLIKt/Q== + version "1.3.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" + integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== dependencies: - estraverse "^5.0.0" + estraverse "^5.1.0" esrecurse@^4.1.0: version "4.2.1" @@ -4550,10 +4493,10 @@ estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -estraverse@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.0.0.tgz#ac81750b482c11cca26e4b07e83ed8f75fbcdc22" - integrity sha512-j3acdrMzqrxmJTNj5dbr1YbjacrYgAxVMeF0gK16E3j494mOe7xygM/ZLIguEQ0ETwAg2hlJCtHRGav+y0Ny5A== +estraverse@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" + integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== esutils@^2.0.2: version "2.0.3" @@ -4583,7 +4526,7 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -execa@^3.2.0, execa@^3.4.0: +execa@^3.2.0: version "3.4.0" resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g== @@ -4599,6 +4542,21 @@ execa@^3.2.0, execa@^3.4.0: signal-exit "^3.0.2" strip-final-newline "^2.0.0" +execa@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.0.tgz#7f37d6ec17f09e6b8fc53288611695b6d12b9daf" + integrity sha512-JbDUxwV3BoT5ZVXQrSVbAiaXhXUkIwvbhPIwZ0N13kX+5yCzOhUNdocxB/UQRuYOHRYYwAxKYwJYc0T4D12pDA== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + 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" + strip-final-newline "^2.0.0" + exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -4939,9 +4897,9 @@ fs.realpath@^1.0.0: integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= fsevents@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" - integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== function-bind@^1.1.1: version "1.1.1" @@ -4972,10 +4930,10 @@ genfun@^5.0.0: resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537" integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA== -gensequence@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/gensequence/-/gensequence-3.0.3.tgz#5e76326bb893147e80d6f2ae495c7e9a2795f7cc" - integrity sha512-KM4L8AfWAfjIvdnBhl7erj35iBNf75pP0+8Ww3BKssVEBv95Dqu40cG62kAyVXtuLplb96wh/GUr+GhM6YG9gQ== +gensequence@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/gensequence/-/gensequence-3.1.1.tgz#95c1afc7c0680f92942c17f2d6f83f3d26ea97af" + integrity sha512-ys3h0hiteRwmY6BsvSttPmkhC0vEQHPJduANBRtH/dlDPZ0UBIb/dXy80IcckXyuQ6LKg+PloRqvGER9IS7F7g== gensync@^1.0.0-beta.1: version "1.0.0-beta.1" @@ -5450,14 +5408,14 @@ humanize-ms@^1.2.1: dependencies: ms "^2.0.0" -husky@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/husky/-/husky-4.2.3.tgz#3b18d2ee5febe99e27f2983500202daffbc3151e" - integrity sha512-VxTsSTRwYveKXN4SaH1/FefRJYCtx+wx04sSVcOpD7N2zjoHxa+cEJ07Qg5NmV3HAK+IRKOyNVpi2YBIVccIfQ== +husky@^4.2.5: + version "4.2.5" + resolved "https://registry.yarnpkg.com/husky/-/husky-4.2.5.tgz#2b4f7622673a71579f901d9885ed448394b5fa36" + integrity sha512-SYZ95AjKcX7goYVZtVZF2i6XiZcHknw50iXvY7b0MiGoj5RwdgRQNEHdb+gPDPCXKlzwrybjFjkL6FOj8uRhZQ== dependencies: - chalk "^3.0.0" + chalk "^4.0.0" ci-info "^2.0.0" - compare-versions "^3.5.1" + compare-versions "^3.6.0" cosmiconfig "^6.0.0" find-versions "^3.2.0" opencollective-postinstall "^2.0.2" @@ -6083,17 +6041,7 @@ jest-config@^25.4.0: pretty-format "^25.4.0" realpath-native "^2.0.0" -jest-diff@^25.2.1: - version "25.2.6" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.2.6.tgz#a6d70a9ab74507715ea1092ac513d1ab81c1b5e7" - integrity sha512-KuadXImtRghTFga+/adnNrv9s61HudRMR7gVSbP35UKZdn4IK2/0N0PpGZIqtmllK9aUyye54I3nu28OYSnqOg== - dependencies: - chalk "^3.0.0" - diff-sequences "^25.2.6" - jest-get-type "^25.2.6" - pretty-format "^25.2.6" - -jest-diff@^25.4.0: +jest-diff@^25.2.1, jest-diff@^25.4.0: version "25.4.0" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.4.0.tgz#260b70f19a46c283adcad7f081cae71eb784a634" integrity sha512-kklLbJVXW0y8UKOWOdYhI6TH5MG6QAxrWiBMgQaPIuhj3dNFGirKCd+/xfplBXICQ7fI+3QcqHm9p9lWu1N6ug== @@ -6150,25 +6098,6 @@ jest-get-type@^25.2.6: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== -jest-haste-map@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-25.2.6.tgz#4aa6bcfa15310afccdb9ca77af58a98add8cedb8" - integrity sha512-nom0+fnY8jwzelSDQnrqaKAcDZczYQvMEwcBjeL3PQ4MlcsqeB7dmrsAniUw/9eLkngT5DE6FhnenypilQFsgA== - dependencies: - "@jest/types" "^25.2.6" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.3" - jest-serializer "^25.2.6" - jest-util "^25.2.6" - jest-worker "^25.2.6" - micromatch "^4.0.2" - sane "^4.0.3" - walker "^1.0.7" - which "^2.0.2" - optionalDependencies: - fsevents "^2.1.2" - jest-haste-map@^25.4.0: version "25.4.0" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-25.4.0.tgz#da7c309dd7071e0a80c953ba10a0ec397efb1ae2" @@ -6363,16 +6292,6 @@ jest-snapshot@^25.4.0: pretty-format "^25.4.0" semver "^6.3.0" -jest-util@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-25.2.6.tgz#3c1c95cdfd653126728b0ed861a86610e30d569c" - integrity sha512-gpXy0H5ymuQ0x2qgl1zzHg7LYHZYUmDEq6F7lhHA8M0eIwDB2WteOcCnQsohl9c/vBKZ3JF2r4EseipCZz3s4Q== - dependencies: - "@jest/types" "^25.2.6" - chalk "^3.0.0" - is-ci "^2.0.0" - make-dir "^3.0.0" - jest-util@^25.4.0: version "25.4.0" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-25.4.0.tgz#6a093d09d86d2b41ef583e5fe7dd3976346e1acd" @@ -6407,14 +6326,6 @@ jest-watcher@^25.4.0: jest-util "^25.4.0" string-length "^3.1.0" -jest-worker@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.2.6.tgz#d1292625326794ce187c38f51109faced3846c58" - integrity sha512-FJn9XDUSxcOR4cwDzRfL1z56rUofNTFs539FGASpd50RHdb6EVkhxQqktodW2mI49l+W3H+tFJDotCHUQF6dmA== - dependencies: - merge-stream "^2.0.0" - supports-color "^7.0.0" - jest-worker@^25.4.0: version "25.4.0" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.4.0.tgz#ee0e2ceee5a36ecddf5172d6d7e0ab00df157384" @@ -6423,7 +6334,7 @@ jest-worker@^25.4.0: merge-stream "^2.0.0" supports-color "^7.0.0" -jest@^25.3.0: +jest@^25.4.0: version "25.4.0" resolved "https://registry.yarnpkg.com/jest/-/jest-25.4.0.tgz#fb96892c5c4e4a6b9bcb12068849cddf4c5f8cc7" integrity sha512-XWipOheGB4wai5JfCYXd6vwsWNwM/dirjRoZgAa7H2wd8ODWbli2AiKjqG8AYhyx+8+5FBEdpO92VhGlBydzbw== @@ -6708,17 +6619,17 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= -lint-staged@^10.0.8: - version "10.1.2" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.1.2.tgz#beaefc58037ea9e02fe7639cb323d584312a7957" - integrity sha512-Vtbe8rhWbJxPNlnXk6jczRh6wvAVjGg+VhELAIjLakOjTACdB4qJOD4W2R8oUXLRCqL1t9WMUsXbSlVK34A8Lg== +lint-staged@^10.1.7: + version "10.1.7" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.1.7.tgz#b628f8b010083fe4e116d0af7949a32f1ea6b3a7" + integrity sha512-ZkK8t9Ep/AHuJQKV95izSa+DqotftGnSsNeEmCSqbQ6j4C4H0jDYhEZqVOGD1Q2Oe227igbqjMWycWyYbQtpoA== dependencies: - chalk "^3.0.0" - commander "^4.0.1" + chalk "^4.0.0" + commander "^5.0.0" cosmiconfig "^6.0.0" debug "^4.1.1" dedent "^0.7.0" - execa "^3.4.0" + execa "^4.0.0" listr "^0.14.3" log-symbols "^3.0.0" micromatch "^4.0.2" @@ -6993,9 +6904,9 @@ make-dir@^2.1.0: semver "^5.6.0" make-dir@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.2.tgz#04a1acbf22221e1d6ef43559f43e05a90dbb4392" - integrity sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w== + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== dependencies: semver "^6.0.0" @@ -8229,22 +8140,12 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.4.tgz#2d1bae173e355996ee355ec9830a7a1ee05457ef" - integrity sha512-SVJIQ51spzFDvh4fIbCLvciiDMCrRhlN3mbZvv/+ycjvmF5E73bKdGfU8QDLNmjYJf+lsGnDBC4UUnvTe5OO0w== - -pretty-format@^25.2.1, pretty-format@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.2.6.tgz#542a1c418d019bbf1cca2e3620443bc1323cb8d7" - integrity sha512-DEiWxLBaCHneffrIT4B+TpMvkV9RNvvJrd3lY9ew1CEQobDzEXmYT1mg0hJhljZty7kCc10z13ohOFAE8jrUDg== - dependencies: - "@jest/types" "^25.2.6" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^16.12.0" +prettier@2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.5.tgz#d6d56282455243f2f92cc1716692c08aa31522d4" + integrity sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg== -pretty-format@^25.4.0: +pretty-format@^25.2.1, pretty-format@^25.4.0: version "25.4.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.4.0.tgz#c58801bb5c4926ff4a677fe43f9b8b99812c7830" integrity sha512-PI/2dpGjXK5HyXexLPZU/jw5T9Q6S1YVXxxVxco+LIqzUFHXIbKZKdUVt7GcX7QUCr31+3fzhi4gN4/wUYPVxQ== @@ -8791,9 +8692,9 @@ resolve@1.1.7: integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= resolve@^1.1.6, resolve@^1.10.0, resolve@^1.15.1, resolve@^1.3.2: - version "1.15.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" - integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== dependencies: path-parse "^1.0.6" @@ -8941,9 +8842,9 @@ saxes@^3.1.9: xmlchars "^2.1.1" saxes@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.0.tgz#b7d30284d7583a5ca6ad0248b56d8889da53788b" - integrity sha512-LXTZygxhf8lfwKaTP/8N9CsVdjTlea3teze4lL6u37ivbgGbV0GGMuNtS/I9rnD/HC2/txUM7Df4S2LVl1qhiA== + version "5.0.1" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== dependencies: xmlchars "^2.2.0" @@ -9167,9 +9068,9 @@ source-map-resolve@^0.5.0: urix "^0.1.0" source-map-support@^0.5.6: - version "0.5.16" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" - integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== + version "0.5.18" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.18.tgz#f5f33489e270bd7f7d7e7b8debf283f3a4066960" + integrity sha512-9luZr/BZ2QeU6tO2uG8N2aZpVSli4TSAOAqFOyTO51AJcD9P99c0K1h6dD6r6qo5dyT44BR5exweOaLLeldTkQ== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -9208,9 +9109,9 @@ spdx-correct@^3.0.0: spdx-license-ids "^3.0.0" spdx-exceptions@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" - integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== spdx-expression-parse@^3.0.0: version "3.0.0" @@ -9360,9 +9261,9 @@ string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: strip-ansi "^6.0.0" string.prototype.trimend@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.0.tgz#ee497fd29768646d84be2c9b819e292439614373" - integrity sha512-EEJnGqa/xNfIg05SxiPSqRS7S9qwDhYts1TSLR1BQfYUfPe1stofgGKvwERK9+9yf+PpfBMlpBaCHucXGPQfUA== + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" + integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== dependencies: define-properties "^1.1.3" es-abstract "^1.17.5" @@ -9386,9 +9287,9 @@ string.prototype.trimright@^2.1.1: string.prototype.trimend "^1.0.0" string.prototype.trimstart@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.0.tgz#afe596a7ce9de905496919406c9734845f01a2f2" - integrity sha512-iCP8g01NFYiiBOnwG1Xc3WZLyoo+RuBymwIlWncShXDDJYWN6DbnM3odslBJdgCdRlq94B5s63NWAZlcn2CS4w== + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" + integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== dependencies: define-properties "^1.1.3" es-abstract "^1.17.5" @@ -9854,12 +9755,11 @@ typescript@^3.8.3: integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w== uglify-js@^3.1.4: - version "3.8.1" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.8.1.tgz#43bb15ce6f545eaa0a64c49fd29375ea09fa0f93" - integrity sha512-W7KxyzeaQmZvUFbGj4+YFshhVrMBGSg2IbcYAjGWGvx8DHvJMclbTDMpffdxFUGPBHjIytk7KJUR/KUXstUGDw== + version "3.9.1" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.9.1.tgz#a56a71c8caa2d36b5556cc1fd57df01ae3491539" + integrity sha512-JUPoL1jHsc9fOjVFHdQIhqEEJsQvfKDjlubcCilu8U26uZ73qOg8VsN8O1jbuei44ZPlwL7kmbAdM4tzaUvqnA== dependencies: commander "~2.20.3" - source-map "~0.6.1" uid-number@0.0.6: version "0.0.6" @@ -10108,9 +10008,9 @@ webidl-conversions@^5.0.0: integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== webidl-conversions@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.0.0.tgz#ff41d921371f43e772dba311b146ab6c0ef0ead4" - integrity sha512-jTZAeJnc6D+yAOjygbJOs33kVQIk5H6fj9SFDOhIKjsf9HiAzL/c+tAJsc8ASWafvhNkH+wJZms47pmajkhatA== + version "6.1.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5: version "1.0.5" @@ -10327,11 +10227,11 @@ yallist@^4.0.0: integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== yaml@^1.7.2: - version "1.8.3" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.8.3.tgz#2f420fca58b68ce3a332d0ca64be1d191dd3f87a" - integrity sha512-X/v7VDnK+sxbQ2Imq4Jt2PRUsRsP7UcpSl3Llg6+NRRqWLIvxkMFYtH1FmvwNGYRKKPa+EPA4qDBlI9WVG1UKw== + version "1.9.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.9.2.tgz#f0cfa865f003ab707663e4f04b3956957ea564ed" + integrity sha512-HPT7cGGI0DuRcsO51qC1j9O16Dh1mZ2bnXwsi0jrSpsLz0WxOLSLXfkABVl6bZO629py3CU+OMJtpNHDLB97kg== dependencies: - "@babel/runtime" "^7.8.7" + "@babel/runtime" "^7.9.2" yargs-parser@^10.0.0: version "10.1.0" @@ -10349,9 +10249,9 @@ yargs-parser@^15.0.1: decamelize "^1.2.0" yargs-parser@^18.1.1: - version "18.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.2.tgz#2f482bea2136dbde0861683abea7756d30b504f1" - integrity sha512-hlIPNR3IzC1YuL1c2UwwDKpXlNFBqD1Fswwh1khz5+d8Cq/8yc/Mn0i+rQXduu8hcrFKvO7Eryk+09NecTQAAQ== + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" From f8649b26c24e093439948db4c1adf7ead4f1d224 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Thu, 23 Apr 2020 20:00:33 -0700 Subject: [PATCH 12/61] improvement(jest): use matcher hint util to format message --- README.md | 4 ++-- packages/jest/README.md | 14 +++++++++----- packages/jest/src/jest.ts | 17 ++++++++++------- 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index fb2bcc78..1070c24a 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,6 @@ This repo contains the following packages - format raw a11y issues JSON output from axe into an easy to consume format by consolidating and cross-referencing -### Jest integration (TBD) +### Jest integration(./packages/jest/README.md) -- integrates [assertAccessible API](./packages/assert/README.md) with the [Jest assertion API](https://jestjs.io/docs/en/using-matchers) +- provides a `toBeAccessible()` accessibility matcher for Jest integrating the [assertAccessible API](./packages/assert/README.md) with the [Jest assertion API](https://jestjs.io/docs/en/using-matchers) diff --git a/packages/jest/README.md b/packages/jest/README.md index ae963643..8ba7b9df 100644 --- a/packages/jest/README.md +++ b/packages/jest/README.md @@ -1,15 +1,19 @@ # `jest` -Accessibility helpers for [Jest](https://jestjs.io) +Accessibility matcher for [Jest](https://jestjs.io) ## Usage ``` import { toBeAccessible } from '@sa11y/jest' -// Setup DOM to be tested for accessibility -// ... - // Assert that the DOM is accessible -expect().toBeAccessible() +it('should be accessible', async () => { + // Setup DOM to be tested for accessibility + ... + // assert that dom is accessible (using EXTENDED preset rules) + await expect(document).toBeAccessible(); + // use RECOMMENDED preset rules + await expect(document).toBeAccessible(RECOMMENDED); +}); ``` diff --git a/packages/jest/src/jest.ts b/packages/jest/src/jest.ts index 8adc56dd..9d42b13a 100644 --- a/packages/jest/src/jest.ts +++ b/packages/jest/src/jest.ts @@ -7,6 +7,9 @@ import { assertAccessible } from '@sa11y/assert'; import { A11yConfig, extended } from '@sa11y/preset-rules'; +import { matcherHint } from 'jest-matcher-utils'; + +export const matcherHintMsg = `expected document to have no accessibility violations but found`; // Type def for custom jest a11y matcher toBeAccessible // Ref: https://jestjs.io/docs/en/expect.html#expectextendmatchers @@ -20,23 +23,23 @@ declare global { } /** - * Jest expect matcher to check document for accessibility issues - * @param received - Document to be tested for accessibility + * Jest expect matcher to check DOM for accessibility issues + * @param dom - Document to be tested for accessibility * @param config - A11yConfig to be used to test for accessibility. Defaults to extended. */ -export async function toBeAccessible(received: Document = document, config: A11yConfig = extended) { +export async function toBeAccessible(dom: Document = document, config: A11yConfig = extended) { let isAccessible = true; let a11yViolations = ''; try { - await assertAccessible(received, config); + await assertAccessible(dom, config); } catch (e) { isAccessible = false; a11yViolations = e; } return { + actual: a11yViolations, pass: isAccessible, - message: (): string => `expected document to have no accessibility violations ${a11yViolations}`, + // Display assertion for the report when a test fails + message: (): string => matcherHint(`${toBeAccessible.name}: ${matcherHintMsg} ${a11yViolations}`), }; } - -expect.extend({ toBeAccessible }); From b5bee0f6672a8d28481e1b13a4963ea0cc98f96d Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Thu, 23 Apr 2020 20:02:52 -0700 Subject: [PATCH 13/61] build(root): check staged files before invoking commit process to prevent failed commit process due to failed checks in staged files --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 9a7797b5..3154c4ee 100644 --- a/package.json +++ b/package.json @@ -15,11 +15,11 @@ "packages/*" ], "scripts": { - "commit": "! git diff --cached --exit-code && git-cz", + "commit": "! git diff --cached --exit-code && lint-staged && git-cz", "lint": "lockfile-lint --path yarn.lock --allowed-hosts registry.yarnpkg.com --validate-https && eslint .", "lint:fix": "yarn lint --fix", "lint:staged": "lint-staged", - "update": "yarn ncu; yarn lerna exec ncu; yarn install; yarn upgrade; yarn audit; yarn outdated", + "update": "ncu; lerna exec ncu; yarn install; yarn upgrade; yarn audit; yarn outdated", "test": "jest --coverage", "build": "tsc --build", "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s && git add CHANGELOG.md", From c7184e4de9ec69f01139734569b7e9c956bed42b Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Mon, 27 Apr 2020 14:21:29 -0700 Subject: [PATCH 14/61] test(jest): fix dom lang setup, test names, err msgs --- packages/jest/__tests__/jest.test.ts | 31 +++++++++++++++++++--------- packages/jest/src/jest.ts | 5 +++-- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/packages/jest/__tests__/jest.test.ts b/packages/jest/__tests__/jest.test.ts index 27ba7fa8..324407a7 100644 --- a/packages/jest/__tests__/jest.test.ts +++ b/packages/jest/__tests__/jest.test.ts @@ -6,9 +6,13 @@ */ import 'global-jsdom/lib/register'; // https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#required-globals -import { toBeAccessible } from '../src/jest'; +import { matcherHintMsg, toBeAccessible } from '../src/jest'; import { extended, recommended } from '@sa11y/preset-rules'; +// TODO (Fix): Error when using "await" with "toBeAccessible": "Unexpected await of a non-Promise (non-"Thenable") value" +// Needs to be fixed before release as it would affect usability of the API for users. +/* eslint-disable @typescript-eslint/await-thenable */ + // TODO (de-duplicate): Extract into a common place and reuse across packages const domWithA11yIssues = ` @@ -37,24 +41,31 @@ const domWithNoA11yIssues = ` beforeAll(() => { expect.extend({ toBeAccessible }); + document.documentElement.lang = 'en'; // required for a11y lang check }); afterEach(() => { document.body.innerHTML = ''; // reset dom body }); -describe('toBeAccessible Jest API', function () { - // TODO (refactor): Sep basic functionality into their own tests from testing default args - // Use https://github.com/dankogai/js-combinatorics - document.body.innerHTML = domWithA11yIssues; - it.each([document, undefined])('throws no error for dom with no a11y issues: %#', (dom) => { - expect(dom).toBeAccessible(); +describe('toBeAccessible Jest a11y matcher', function () { + it.each([document, undefined])('should not throw error for dom with no a11y issues (Dom arg: %#)', async (dom) => { + document.body.innerHTML = domWithNoA11yIssues; + await expect(dom).toBeAccessible(); }); it.each([extended, recommended, undefined])( - 'toBeAccessible throws error for dom with a11y issues with config: %#', - (config) => { - expect(domWithA11yIssues).toBeAccessible(config); + 'should throw error for dom with a11y issues with config: %#', + async (config) => { + document.body.innerHTML = domWithA11yIssues; + // using the 'not' matcher just for testing, not expecting this to be used out of here + await expect(document).not.toBeAccessible(config); + // using without the 'not' matcher which should be the primary way the API is used (without error catching) + try { + await expect(document).toBeAccessible(config); + } catch (e) { + expect(e.message).toContain(matcherHintMsg); + } } ); }); diff --git a/packages/jest/src/jest.ts b/packages/jest/src/jest.ts index 9d42b13a..27be1cc6 100644 --- a/packages/jest/src/jest.ts +++ b/packages/jest/src/jest.ts @@ -9,7 +9,7 @@ import { assertAccessible } from '@sa11y/assert'; import { A11yConfig, extended } from '@sa11y/preset-rules'; import { matcherHint } from 'jest-matcher-utils'; -export const matcherHintMsg = `expected document to have no accessibility violations but found`; +export const matcherHintMsg = `expected document to have no accessibility violations but found following issues: `; // Type def for custom jest a11y matcher toBeAccessible // Ref: https://jestjs.io/docs/en/expect.html#expectextendmatchers @@ -30,6 +30,7 @@ declare global { export async function toBeAccessible(dom: Document = document, config: A11yConfig = extended) { let isAccessible = true; let a11yViolations = ''; + try { await assertAccessible(dom, config); } catch (e) { @@ -40,6 +41,6 @@ export async function toBeAccessible(dom: Document = document, config: A11yConfi actual: a11yViolations, pass: isAccessible, // Display assertion for the report when a test fails - message: (): string => matcherHint(`${toBeAccessible.name}: ${matcherHintMsg} ${a11yViolations}`), + message: (): string => matcherHint(`${toBeAccessible.name}: ${matcherHintMsg} \n\n ${a11yViolations}`), }; } From 1554fdf56ae91cb8672ccfe502c93e4e16b86269 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Mon, 27 Apr 2020 14:51:58 -0700 Subject: [PATCH 15/61] build(root): add eslint watcher package and watch scripts --- package.json | 4 ++ yarn.lock | 133 +++++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 129 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 3154c4ee..d54b8217 100644 --- a/package.json +++ b/package.json @@ -19,9 +19,12 @@ "lint": "lockfile-lint --path yarn.lock --allowed-hosts registry.yarnpkg.com --validate-https && eslint .", "lint:fix": "yarn lint --fix", "lint:staged": "lint-staged", + "lint:watch": "esw --watch --changed --color --ext .js,.ts", "update": "ncu; lerna exec ncu; yarn install; yarn upgrade; yarn audit; yarn outdated", "test": "jest --coverage", + "test:watch": "yarn test --watch", "build": "tsc --build", + "build:watch": "yarn build --watch", "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s && git add CHANGELOG.md", "ci": "yarn install --frozen-lockfile && yarn build && yarn lint && yarn test", "clean:build": "tsc --build --clean", @@ -66,6 +69,7 @@ "eslint-plugin-notice": "^0.8.10", "eslint-plugin-prettier": "^3.1.3", "eslint-plugin-tsdoc": "^0.2.4", + "eslint-watch": "^6.0.1", "husky": "^4.2.5", "jest": "^25.4.0", "lerna": "^3.20.2", diff --git a/yarn.lock b/yarn.lock index 185ea25c..d469e698 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2498,7 +2498,7 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -anymatch@^3.0.3: +anymatch@^3.0.3, anymatch@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== @@ -2754,6 +2754,11 @@ before-after-hook@^2.0.0: resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.1.0.tgz#b6c03487f44e24200dd30ca5e6a1979c5d2fb635" integrity sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A== +binary-extensions@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" + integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== + bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" @@ -2797,7 +2802,7 @@ braces@^2.3.1: split-string "^3.0.2" to-regex "^3.0.1" -braces@^3.0.1: +braces@^3.0.1, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== @@ -3054,6 +3059,21 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== +chokidar@^3.1.1: + version "3.4.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.0.tgz#b30611423ce376357c765b9b8f904b9fba3c0be8" + integrity sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.4.0" + optionalDependencies: + fsevents "~2.1.2" + chownr@^1.1.1, chownr@^1.1.2, chownr@^1.1.3, chownr@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" @@ -3584,6 +3604,11 @@ core-js@^2.4.0, core-js@^2.5.0: resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== +core-js@^3.2.1: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" + integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA== + core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -4412,6 +4437,24 @@ eslint-visitor-keys@^1.1.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== +eslint-watch@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/eslint-watch/-/eslint-watch-6.0.1.tgz#e098391658a7c148deca172ad2095065ada05359" + integrity sha512-tWT6gQQWzGVn4KMs6ZAdG+nkNNQHg+c6wGdw/mwhp+jWyA7OWEOLxQnRhrP34ddJjpgDafhHOHBNtpVOtXXv4g== + dependencies: + chokidar "^3.1.1" + core-js "^3.2.1" + debug "^4.1.0" + execa "^2.0.4" + keypress "^0.2.1" + lodash.debounce "^4.0.8" + lodash.isempty "^4.4.0" + lodash.isequal "^4.5.0" + lodash.kebabcase "^4.1.1" + lodash.unionwith "^4.6.0" + optionator "^0.8.2" + source-map-support "^0.5.13" + eslint@^6.8.0: version "6.8.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" @@ -4526,6 +4569,21 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +execa@^2.0.4: + version "2.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-2.1.0.tgz#e5d3ecd837d2a60ec50f3da78fd39767747bbe99" + integrity sha512-Y/URAVapfbYy2Xp/gb6A0E7iR8xeqOCXsuuaoMn7A5PzrXUK84E1gyiEfq0wQd/GHA6GsoHWwhNq8anb0mleIw== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^3.0.0" + onetime "^5.1.0" + p-finally "^2.0.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + execa@^3.2.0: version "3.4.0" resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" @@ -4896,7 +4954,7 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^2.1.2: +fsevents@^2.1.2, fsevents@~2.1.2: version "2.1.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== @@ -5083,7 +5141,7 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.0.0: +glob-parent@^5.0.0, glob-parent@~5.1.0: version "5.1.1" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== @@ -5642,6 +5700,13 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -5752,7 +5817,7 @@ is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" -is-glob@^4.0.0, is-glob@^4.0.1: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== @@ -6518,6 +6583,11 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" +keypress@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/keypress/-/keypress-0.2.1.tgz#1e80454250018dbad4c3fe94497d6e67b6269c77" + integrity sha1-HoBFQlABjbrUw/6USX1uZ7YmnHc= + keyv@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" @@ -6766,16 +6836,36 @@ lodash.clonedeep@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= +lodash.isempty@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e" + integrity sha1-b4bL7di+TsmHvpqvM8loTbGzHn4= + +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= + lodash.ismatch@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" integrity sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc= +lodash.kebabcase@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" + integrity sha1-hImxyw0p/4gZXM7KRI/21swpXDY= + lodash.map@^4.5.1: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" @@ -6806,6 +6896,11 @@ lodash.templatesettings@^4.0.0: dependencies: lodash._reinterpolate "^3.0.0" +lodash.unionwith@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.unionwith/-/lodash.unionwith-4.6.0.tgz#74d140b5ca8146e6c643c3724f5152538d9ac1f0" + integrity sha1-dNFAtcqBRubGQ8NyT1FSU42awfA= + lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" @@ -7426,7 +7521,7 @@ normalize-path@^2.1.1: dependencies: remove-trailing-separator "^1.0.1" -normalize-path@^3.0.0: +normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== @@ -7578,6 +7673,13 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" +npm-run-path@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-3.1.0.tgz#7f91be317f6a466efed3c9f2980ad8a4ee8b0fa5" + integrity sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg== + dependencies: + path-key "^3.0.0" + npm-run-path@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" @@ -7702,7 +7804,7 @@ opencollective-postinstall@^2.0.2: resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz#5657f1bede69b6e33a45939b061eb53d3c6c3a89" integrity sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw== -optionator@^0.8.1, optionator@^0.8.3: +optionator@^0.8.1, optionator@^0.8.2, optionator@^0.8.3: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== @@ -8046,7 +8148,7 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -picomatch@^2.0.4, picomatch@^2.0.5: +picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: version "2.2.2" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== @@ -8425,6 +8527,13 @@ readdir-scoped-modules@^1.0.0, readdir-scoped-modules@^1.1.0: graceful-fs "^4.1.2" once "^1.3.0" +readdirp@~3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" + integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== + dependencies: + picomatch "^2.2.1" + realpath-native@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-2.0.0.tgz#7377ac429b6e1fd599dc38d08ed942d0d7beb866" @@ -9067,6 +9176,14 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" +source-map-support@^0.5.13: + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map-support@^0.5.6: version "0.5.18" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.18.tgz#f5f33489e270bd7f7d7e7b8debf283f3a4066960" From ecbfbf9f1a5c8e148be3e0d3b7c523ac192e46df Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Mon, 27 Apr 2020 17:54:03 -0700 Subject: [PATCH 16/61] feat(jest): add toBeAccessibleWith jest a11y matcher for use with config --- packages/jest/README.md | 4 +- packages/jest/__tests__/jest.test.ts | 65 +++++++++++++++++++++------- packages/jest/src/jest.ts | 23 ++++++++-- 3 files changed, 70 insertions(+), 22 deletions(-) diff --git a/packages/jest/README.md b/packages/jest/README.md index 8ba7b9df..a317c25f 100644 --- a/packages/jest/README.md +++ b/packages/jest/README.md @@ -5,7 +5,7 @@ Accessibility matcher for [Jest](https://jestjs.io) ## Usage ``` -import { toBeAccessible } from '@sa11y/jest' +import { toBeAccessible, toBeAccessibleWith } from '@sa11y/jest' // Assert that the DOM is accessible it('should be accessible', async () => { @@ -14,6 +14,6 @@ it('should be accessible', async () => { // assert that dom is accessible (using EXTENDED preset rules) await expect(document).toBeAccessible(); // use RECOMMENDED preset rules - await expect(document).toBeAccessible(RECOMMENDED); + await expect(document).toBeAccessibleWith(RECOMMENDED); }); ``` diff --git a/packages/jest/__tests__/jest.test.ts b/packages/jest/__tests__/jest.test.ts index 324407a7..9efc4a92 100644 --- a/packages/jest/__tests__/jest.test.ts +++ b/packages/jest/__tests__/jest.test.ts @@ -6,7 +6,7 @@ */ import 'global-jsdom/lib/register'; // https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#required-globals -import { matcherHintMsg, toBeAccessible } from '../src/jest'; +import { matcherHintMsg, toBeAccessible, toBeAccessibleWith } from '../src/jest'; import { extended, recommended } from '@sa11y/preset-rules'; // TODO (Fix): Error when using "await" with "toBeAccessible": "Unexpected await of a non-Promise (non-"Thenable") value" @@ -39,8 +39,20 @@ const domWithNoA11yIssues = ` `; +// Collection of values to be tested passed in as different API parameters +const a11yConfigParams = [extended, recommended, undefined]; +const domParams = [document, undefined]; + +// Ref: https://eddmann.com/posts/cartesian-product-in-javascript/ +const flatten = (arr) => [].concat([], ...arr); +const cartesianProduct = (...sets) => + sets.reduce((acc, set) => flatten(acc.map((x) => set.map((y) => [...x, y]))), [[]]); + +const domConfigParams = cartesianProduct(domParams, a11yConfigParams); + beforeAll(() => { expect.extend({ toBeAccessible }); + expect.extend({ toBeAccessibleWith }); document.documentElement.lang = 'en'; // required for a11y lang check }); @@ -48,24 +60,45 @@ afterEach(() => { document.body.innerHTML = ''; // reset dom body }); -describe('toBeAccessible Jest a11y matcher', function () { - it.each([document, undefined])('should not throw error for dom with no a11y issues (Dom arg: %#)', async (dom) => { +describe('toBeAccessible jest a11y matcher', () => { + it.each(domParams)('should not throw error for dom with no a11y issues (Dom arg: %#)', async (dom) => { document.body.innerHTML = domWithNoA11yIssues; await expect(dom).toBeAccessible(); }); - it.each([extended, recommended, undefined])( - 'should throw error for dom with a11y issues with config: %#', - async (config) => { - document.body.innerHTML = domWithA11yIssues; - // using the 'not' matcher just for testing, not expecting this to be used out of here - await expect(document).not.toBeAccessible(config); - // using without the 'not' matcher which should be the primary way the API is used (without error catching) - try { - await expect(document).toBeAccessible(config); - } catch (e) { - expect(e.message).toContain(matcherHintMsg); - } + it.each(a11yConfigParams)('should throw error for dom with a11y issues with config: %#', async (config) => { + document.body.innerHTML = domWithA11yIssues; + expect.assertions(3); + // using the 'not' matcher just for testing, not expecting this to be used out of the unit testing context + await expect(document).not.toBeAccessible(config); + // using without the 'not' matcher which should be the primary way the API is used (without error catching) + try { + await expect(document).toBeAccessible(config); + } catch (e) { + expect(e.message).toContain(matcherHintMsg); } - ); + }); +}); + +// Note: "toBeAccessibleWith" needs to be its own test. Combining using .each([toBeAccessible, toBeAccessibleWith]) +// and function references doesn't seem to work with matchers. Error: "not a function". +// TODO (de-duplicate): Figure out a way to reduce duplication between tests for 2 matchers - extract common code into functions +describe('toBeAccessibleWith jest a11y matcher', () => { + it.each(domConfigParams)('should not throw error for dom with no a11y issues (arg: %#)', async (dom, config) => { + document.body.innerHTML = domWithNoA11yIssues; + await expect(dom).toBeAccessibleWith(config); + }); + + it.each(a11yConfigParams)('should throw error for dom with a11y issues with config: %#', async (config) => { + document.body.innerHTML = domWithA11yIssues; + expect.assertions(3); + // using the 'not' matcher just for testing, not expecting this to be used out of the unit testing context + await expect(document).not.toBeAccessibleWith(config); + // using without the 'not' matcher which should be the primary way the API is used (without error catching) + try { + await expect(document).toBeAccessibleWith(config); + } catch (e) { + expect(e.message).toContain(matcherHintMsg); + } + }); }); diff --git a/packages/jest/src/jest.ts b/packages/jest/src/jest.ts index 27be1cc6..3020200f 100644 --- a/packages/jest/src/jest.ts +++ b/packages/jest/src/jest.ts @@ -18,29 +18,44 @@ declare global { namespace jest { interface Matchers { toBeAccessible(config?: A11yConfig): R; + toBeAccessibleWith(config: A11yConfig): R; } } } /** * Jest expect matcher to check DOM for accessibility issues - * @param dom - Document to be tested for accessibility + * @param receivedDom - DOM to be tested for accessibility * @param config - A11yConfig to be used to test for accessibility. Defaults to extended. */ -export async function toBeAccessible(dom: Document = document, config: A11yConfig = extended) { +export async function toBeAccessible( + receivedDom: Document = document, + config: A11yConfig = extended +): Promise { let isAccessible = true; let a11yViolations = ''; try { - await assertAccessible(dom, config); + await assertAccessible(receivedDom, config); } catch (e) { isAccessible = false; a11yViolations = e; } return { - actual: a11yViolations, pass: isAccessible, // Display assertion for the report when a test fails message: (): string => matcherHint(`${toBeAccessible.name}: ${matcherHintMsg} \n\n ${a11yViolations}`), }; } + +/** + * Jest expect matcher to check DOM for accessibility issues + * @param receivedDom - DOM to be tested for accessibility + * @param config - A11yConfig to be used to test for accessibility. + */ +export function toBeAccessibleWith( + receivedDom: Document = document, + config: A11yConfig +): Promise { + return toBeAccessible(receivedDom, config); +} From 2a1c1bfe392be706af3fd2e2d7dd53cbf6e5d2b9 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Tue, 28 Apr 2020 14:25:58 -0700 Subject: [PATCH 17/61] feat(test-utils): add a test utilities package --- README.md | 6 +- packages/test-utils/README.md | 35 ++ .../__snapshots__/test-utils.test.ts.snap | 505 ++++++++++++++++++ .../test-utils/__tests__/test-utils.test.ts | 46 ++ packages/test-utils/package.json | 18 + packages/test-utils/src/index.ts | 10 + packages/test-utils/src/jest-setup.ts | 31 ++ packages/test-utils/src/test-data.ts | 33 ++ packages/test-utils/src/utils.ts | 16 + packages/test-utils/tsconfig.json | 8 + 10 files changed, 707 insertions(+), 1 deletion(-) create mode 100644 packages/test-utils/README.md create mode 100644 packages/test-utils/__tests__/__snapshots__/test-utils.test.ts.snap create mode 100644 packages/test-utils/__tests__/test-utils.test.ts create mode 100644 packages/test-utils/package.json create mode 100644 packages/test-utils/src/index.ts create mode 100644 packages/test-utils/src/jest-setup.ts create mode 100644 packages/test-utils/src/test-data.ts create mode 100644 packages/test-utils/src/utils.ts create mode 100644 packages/test-utils/tsconfig.json diff --git a/README.md b/README.md index 1070c24a..72c941f7 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,10 @@ This repo contains the following packages - format raw a11y issues JSON output from axe into an easy to consume format by consolidating and cross-referencing -### Jest integration(./packages/jest/README.md) +### [Jest integration](./packages/jest/README.md) - provides a `toBeAccessible()` accessibility matcher for Jest integrating the [assertAccessible API](./packages/assert/README.md) with the [Jest assertion API](https://jestjs.io/docs/en/using-matchers) + +### [Test utilities](./packages/test-utils/README.md) + +- Private package providing test utilities for `@sa11y` packages diff --git a/packages/test-utils/README.md b/packages/test-utils/README.md new file mode 100644 index 00000000..2e910b4c --- /dev/null +++ b/packages/test-utils/README.md @@ -0,0 +1,35 @@ +# `@sa11y/test-utils` + +Private package providing test utilities for @sa11y packages + +## Usage + +``` +import { + afterEachCleanup, + beforeAllSetup, + domWithA11yIssues, + domWithNoA11yIssues, +} from '@sa11y/test-utils'; + +import { toBeAccessible } from '@sa11y/jest'; + + +beforeAll(() => { + beforeAllSetup(); +}); + +afterEach(() => { + afterEachCleanup(); +}); + +describe('..', () => { + it.('...', () => { + document.body.innerHTML = domWithNoA11yIssues; + await expect(document).toBeAccessible(); + + document.body.innerHTML = domWithA11yIssues; + await expect(document).not.toBeAccessible(); + }); + +``` diff --git a/packages/test-utils/__tests__/__snapshots__/test-utils.test.ts.snap b/packages/test-utils/__tests__/__snapshots__/test-utils.test.ts.snap new file mode 100644 index 00000000..99b1fc2e --- /dev/null +++ b/packages/test-utils/__tests__/__snapshots__/test-utils.test.ts.snap @@ -0,0 +1,505 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`test utils cartesian product should work as expected 1`] = ` +Array [ + Array [ + 0, + "a", + ], + Array [ + 0, + "b", + ], + Array [ + 0, + "c", + ], + Array [ + 0, + "d", + ], + Array [ + 0, + "e", + ], + Array [ + 1, + "a", + ], + Array [ + 1, + "b", + ], + Array [ + 1, + "c", + ], + Array [ + 1, + "d", + ], + Array [ + 1, + "e", + ], + Array [ + 2, + "a", + ], + Array [ + 2, + "b", + ], + Array [ + 2, + "c", + ], + Array [ + 2, + "d", + ], + Array [ + 2, + "e", + ], + Array [ + 3, + "a", + ], + Array [ + 3, + "b", + ], + Array [ + 3, + "c", + ], + Array [ + 3, + "d", + ], + Array [ + 3, + "e", + ], + Array [ + 4, + "a", + ], + Array [ + 4, + "b", + ], + Array [ + 4, + "c", + ], + Array [ + 4, + "d", + ], + Array [ + 4, + "e", + ], + Array [ + 5, + "a", + ], + Array [ + 5, + "b", + ], + Array [ + 5, + "c", + ], + Array [ + 5, + "d", + ], + Array [ + 5, + "e", + ], +] +`; + +exports[`test utils cartesian product should work as expected 2`] = ` +Array [ + Array [ + "a", + 0, + ], + Array [ + "a", + 1, + ], + Array [ + "a", + 2, + ], + Array [ + "a", + 3, + ], + Array [ + "a", + 4, + ], + Array [ + "a", + 5, + ], + Array [ + "b", + 0, + ], + Array [ + "b", + 1, + ], + Array [ + "b", + 2, + ], + Array [ + "b", + 3, + ], + Array [ + "b", + 4, + ], + Array [ + "b", + 5, + ], + Array [ + "c", + 0, + ], + Array [ + "c", + 1, + ], + Array [ + "c", + 2, + ], + Array [ + "c", + 3, + ], + Array [ + "c", + 4, + ], + Array [ + "c", + 5, + ], + Array [ + "d", + 0, + ], + Array [ + "d", + 1, + ], + Array [ + "d", + 2, + ], + Array [ + "d", + 3, + ], + Array [ + "d", + 4, + ], + Array [ + "d", + 5, + ], + Array [ + "e", + 0, + ], + Array [ + "e", + 1, + ], + Array [ + "e", + 2, + ], + Array [ + "e", + 3, + ], + Array [ + "e", + 4, + ], + Array [ + "e", + 5, + ], +] +`; + +exports[`test utils cartesian product should work as expected 3`] = ` +Array [ + Array [ + 0, + 0, + ], + Array [ + 0, + 1, + ], + Array [ + 0, + 2, + ], + Array [ + 0, + 3, + ], + Array [ + 0, + 4, + ], + Array [ + 0, + 5, + ], + Array [ + 1, + 0, + ], + Array [ + 1, + 1, + ], + Array [ + 1, + 2, + ], + Array [ + 1, + 3, + ], + Array [ + 1, + 4, + ], + Array [ + 1, + 5, + ], + Array [ + 2, + 0, + ], + Array [ + 2, + 1, + ], + Array [ + 2, + 2, + ], + Array [ + 2, + 3, + ], + Array [ + 2, + 4, + ], + Array [ + 2, + 5, + ], + Array [ + 3, + 0, + ], + Array [ + 3, + 1, + ], + Array [ + 3, + 2, + ], + Array [ + 3, + 3, + ], + Array [ + 3, + 4, + ], + Array [ + 3, + 5, + ], + Array [ + 4, + 0, + ], + Array [ + 4, + 1, + ], + Array [ + 4, + 2, + ], + Array [ + 4, + 3, + ], + Array [ + 4, + 4, + ], + Array [ + 4, + 5, + ], + Array [ + 5, + 0, + ], + Array [ + 5, + 1, + ], + Array [ + 5, + 2, + ], + Array [ + 5, + 3, + ], + Array [ + 5, + 4, + ], + Array [ + 5, + 5, + ], +] +`; + +exports[`test utils cartesian product should work as expected 4`] = ` +Array [ + Array [ + "a", + "a", + ], + Array [ + "a", + "b", + ], + Array [ + "a", + "c", + ], + Array [ + "a", + "d", + ], + Array [ + "a", + "e", + ], + Array [ + "b", + "a", + ], + Array [ + "b", + "b", + ], + Array [ + "b", + "c", + ], + Array [ + "b", + "d", + ], + Array [ + "b", + "e", + ], + Array [ + "c", + "a", + ], + Array [ + "c", + "b", + ], + Array [ + "c", + "c", + ], + Array [ + "c", + "d", + ], + Array [ + "c", + "e", + ], + Array [ + "d", + "a", + ], + Array [ + "d", + "b", + ], + Array [ + "d", + "c", + ], + Array [ + "d", + "d", + ], + Array [ + "d", + "e", + ], + Array [ + "e", + "a", + ], + Array [ + "e", + "b", + ], + Array [ + "e", + "c", + ], + Array [ + "e", + "d", + ], + Array [ + "e", + "e", + ], +] +`; diff --git a/packages/test-utils/__tests__/test-utils.test.ts b/packages/test-utils/__tests__/test-utils.test.ts new file mode 100644 index 00000000..48f3ebe6 --- /dev/null +++ b/packages/test-utils/__tests__/test-utils.test.ts @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2020, salesforce.com, inc. + * All rights reserved. + * SPDX-License-Identifier: BSD-3-Clause + * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause + */ +import { afterEachCleanup, beforeAllSetup, cartesianProduct } from '../src'; +import { extended, recommended } from '@sa11y/preset-rules'; + +const testDOMCleanupContent = 'foo'; + +beforeAll(() => { + beforeAllSetup(); + // Populate DOM to test cleanup after each test + document.body.innerHTML = testDOMCleanupContent; +}); + +afterEach(() => { + afterEachCleanup(); +}); + +describe('test utils jest setup', () => { + it('should setup jsdom as expected', () => { + expect(document.documentElement.lang).toBe('en'); + }); + + it.each([extended, recommended])('should customize preset-rules as expected', (config) => { + expect(config.rules['color-contrast'].enabled).toBe(false); + }); + + it('should cleanup document', () => { + expect(document.body.innerHTML).not.toEqual(testDOMCleanupContent); + expect(document.body.innerHTML).toEqual(''); + }); +}); + +describe('test utils cartesian product', () => { + const numArr = [0, 1, 2, 3, 4, 5]; + const alphabetArr = ['a', 'b', 'c', 'd', 'e']; + it('should work as expected', () => { + expect(cartesianProduct(numArr, alphabetArr)).toMatchSnapshot(); + expect(cartesianProduct(alphabetArr, numArr)).toMatchSnapshot(); + expect(cartesianProduct(numArr, numArr)).toMatchSnapshot(); + expect(cartesianProduct(alphabetArr, alphabetArr)).toMatchSnapshot(); + }); +}); diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json new file mode 100644 index 00000000..950ae0e4 --- /dev/null +++ b/packages/test-utils/package.json @@ -0,0 +1,18 @@ +{ + "name": "@sa11y/test-utils", + "version": "0.1.0", + "private": true, + "description": "Private package providing test utilities for @sa11y packages", + "license": "BSD-3-Clause", + "homepage": "https://github.com/salesforce/sa11y/tree/master/packages/test-utils#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/salesforce/sa11y.git", + "directory": "packages/test-utils" + }, + "main": "dist/index.js", + "types": "dist/index.d.ts", + "files": [ + "dist/**/*.js" + ] +} diff --git a/packages/test-utils/src/index.ts b/packages/test-utils/src/index.ts new file mode 100644 index 00000000..a53fa0f3 --- /dev/null +++ b/packages/test-utils/src/index.ts @@ -0,0 +1,10 @@ +/* + * Copyright (c) 2020, salesforce.com, inc. + * All rights reserved. + * SPDX-License-Identifier: BSD-3-Clause + * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause + */ + +export { domWithA11yIssues, domWithNoA11yIssues } from './test-data'; +export { cartesianProduct } from './utils'; +export { beforeAllSetup, afterEachCleanup } from './jest-setup'; diff --git a/packages/test-utils/src/jest-setup.ts b/packages/test-utils/src/jest-setup.ts new file mode 100644 index 00000000..4b21f121 --- /dev/null +++ b/packages/test-utils/src/jest-setup.ts @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2020, salesforce.com, inc. + * All rights reserved. + * SPDX-License-Identifier: BSD-3-Clause + * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause + */ +import { extended, recommended } from '@sa11y/preset-rules'; + +// TODO: Can these functions be moved into @sa11y/jest as utils or as setupFiles so that API users can also use them? + +/** + * Common Jest setup that sets up jsdom and customizes preset-rules for jsdom + */ +export function beforeAllSetup(): void { + document.documentElement.lang = 'en'; // required for a11y lang check + + // Customize rules specific to jsdom + [extended, recommended].forEach( + (config) => + (config.rules = { + 'color-contrast': { enabled: false }, // Disable color-contrast for jsdom + }) + ); +} + +/** + * Common Jest cleanup after each test + */ +export function afterEachCleanup(): void { + document.body.innerHTML = ''; // reset dom body +} diff --git a/packages/test-utils/src/test-data.ts b/packages/test-utils/src/test-data.ts new file mode 100644 index 00000000..7f12e54b --- /dev/null +++ b/packages/test-utils/src/test-data.ts @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2020, salesforce.com, inc. + * All rights reserved. + * SPDX-License-Identifier: BSD-3-Clause + * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause + */ + +// DOM with no a11y issues +export const domWithA11yIssues = ` + + + + `; + +// DOM containing a11y issues +// From https://github.com/dequelabs/axe-selenium-java/blob/develop/src/test/resources/test-app.js--> +export const domWithNoA11yIssues = ` + + + Test Page + + +
+

This is a test

+

This is a test page with no violations

+
+ + + + `; diff --git a/packages/test-utils/src/utils.ts b/packages/test-utils/src/utils.ts new file mode 100644 index 00000000..af574e55 --- /dev/null +++ b/packages/test-utils/src/utils.ts @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2020, salesforce.com, inc. + * All rights reserved. + * SPDX-License-Identifier: BSD-3-Clause + * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause + */ + +/** + * Cartesian product of arrays + * Ref: https://eddmann.com/posts/cartesian-product-in-javascript/ + */ +export function cartesianProduct(...sets: Array): Array { + // TODO(types): Fix types for the cartesianProduct function - from any to generics + const flatten = (arr: Array) => [].concat([], ...arr); + return sets.reduce((acc, set) => flatten(acc.map((x: any) => set.map((y: any) => [...x, y]))), [[]]); +} diff --git a/packages/test-utils/tsconfig.json b/packages/test-utils/tsconfig.json new file mode 100644 index 00000000..fe6e6983 --- /dev/null +++ b/packages/test-utils/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig.common.json", + "compilerOptions": { + "rootDir": "src", + "outDir": "dist" + }, + "include": ["src"] +} From ba71b582a2a59301af43a2e452ed8c6e7f8edd12 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Tue, 28 Apr 2020 14:27:22 -0700 Subject: [PATCH 18/61] refactor(test-utils): refactor packages to use the common code --- packages/assert/__tests__/assert.test.ts | 54 ++++++------------------ packages/assert/package.json | 1 + packages/jest/__tests__/jest.test.ts | 43 ++++--------------- packages/jest/package.json | 1 + tsconfig.json | 8 +++- 5 files changed, 30 insertions(+), 77 deletions(-) diff --git a/packages/assert/__tests__/assert.test.ts b/packages/assert/__tests__/assert.test.ts index 683c8302..6ecbfae8 100644 --- a/packages/assert/__tests__/assert.test.ts +++ b/packages/assert/__tests__/assert.test.ts @@ -7,49 +7,16 @@ import 'global-jsdom/lib/register'; // https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#required-globals import { assertAccessible, axeRuntimeExceptionMsgPrefix } from '../src/assert'; -import { extended } from '@sa11y/preset-rules'; -import { getA11yConfig } from '@sa11y/preset-rules'; +import { extended, getA11yConfig, recommended } from '@sa11y/preset-rules'; import { a11yResultsFormatter } from '@sa11y/format'; - -// Test HTML content -// TODO (cleanup): Move inline html content into individual test data files, reusable across packages -const domWithA11yIssues = ` - - - - `; - -// From https://github.com/dequelabs/axe-selenium-java/blob/develop/src/test/resources/test-app.js--> -const domWithNoA11yIssues = ` - - - Test Page - - -
-

This is a test

-

This is a test page with no violations

-
- - - - `; - -// Customize rules specific to jsdom -const jsdomRules = extended; -jsdomRules.rules = { - 'color-contrast': { enabled: false }, // Disable color-contrast for jsdom -}; +import { afterEachCleanup, beforeAllSetup, domWithA11yIssues, domWithNoA11yIssues } from '@sa11y/test-utils'; beforeAll(() => { - document.documentElement.lang = 'en'; // required for a11y lang check + beforeAllSetup(); }); afterEach(() => { - document.body.innerHTML = ''; // reset dom body + afterEachCleanup(); }); /** @@ -60,7 +27,7 @@ afterEach(() => { async function testDOMWithA11yIssues(formatter = a11yResultsFormatter) { document.body.innerHTML = domWithA11yIssues; expect.assertions(3); - await assertAccessible(document, jsdomRules, formatter).catch((e) => { + await assertAccessible(document, extended, formatter).catch((e) => { expect(e).toBeDefined(); expect(e.toString()).not.toContain(axeRuntimeExceptionMsgPrefix); expect(e).toMatchSnapshot(); @@ -78,10 +45,13 @@ describe('assertAccessible API', () => { }); // eslint-disable-next-line jest/expect-expect - it('should throw no errors for dom with no a11y issues', async () => { - document.body.innerHTML = domWithNoA11yIssues; - await assertAccessible(document, jsdomRules); // No error thrown - }); + it.each([recommended, extended])( + 'should throw no errors for dom with no a11y issues with config %#', + async (config) => { + document.body.innerHTML = domWithNoA11yIssues; + await assertAccessible(document, config); // No error thrown + } + ); it.each([ // DOM to test, expected assertions diff --git a/packages/assert/package.json b/packages/assert/package.json index 2bf0b8b0..9430faa5 100644 --- a/packages/assert/package.json +++ b/packages/assert/package.json @@ -25,6 +25,7 @@ "axe-core": "^3.5.3" }, "devDependencies": { + "@sa11y/test-utils": "0.1.0", "global-jsdom": "^6.1.0", "jsdom": "^16.2.2" } diff --git a/packages/jest/__tests__/jest.test.ts b/packages/jest/__tests__/jest.test.ts index 9efc4a92..44885fe2 100644 --- a/packages/jest/__tests__/jest.test.ts +++ b/packages/jest/__tests__/jest.test.ts @@ -8,56 +8,31 @@ import 'global-jsdom/lib/register'; // https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#required-globals import { matcherHintMsg, toBeAccessible, toBeAccessibleWith } from '../src/jest'; import { extended, recommended } from '@sa11y/preset-rules'; +import { + afterEachCleanup, + beforeAllSetup, + cartesianProduct, + domWithA11yIssues, + domWithNoA11yIssues, +} from '@sa11y/test-utils'; // TODO (Fix): Error when using "await" with "toBeAccessible": "Unexpected await of a non-Promise (non-"Thenable") value" // Needs to be fixed before release as it would affect usability of the API for users. /* eslint-disable @typescript-eslint/await-thenable */ -// TODO (de-duplicate): Extract into a common place and reuse across packages -const domWithA11yIssues = ` - - - - `; - -// From https://github.com/dequelabs/axe-selenium-java/blob/develop/src/test/resources/test-app.js--> -const domWithNoA11yIssues = ` - - - Test Page - - -
-

This is a test

-

This is a test page with no violations

-
- - - - `; - // Collection of values to be tested passed in as different API parameters const a11yConfigParams = [extended, recommended, undefined]; const domParams = [document, undefined]; - -// Ref: https://eddmann.com/posts/cartesian-product-in-javascript/ -const flatten = (arr) => [].concat([], ...arr); -const cartesianProduct = (...sets) => - sets.reduce((acc, set) => flatten(acc.map((x) => set.map((y) => [...x, y]))), [[]]); - const domConfigParams = cartesianProduct(domParams, a11yConfigParams); beforeAll(() => { + beforeAllSetup(); expect.extend({ toBeAccessible }); expect.extend({ toBeAccessibleWith }); - document.documentElement.lang = 'en'; // required for a11y lang check }); afterEach(() => { - document.body.innerHTML = ''; // reset dom body + afterEachCleanup(); }); describe('toBeAccessible jest a11y matcher', () => { diff --git a/packages/jest/package.json b/packages/jest/package.json index 323386b6..ea4c8867 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -28,6 +28,7 @@ "jest": "^25.4.0" }, "devDependencies": { + "@sa11y/test-utils": "0.1.0", "axe-core": "^3.5.3", "global-jsdom": "^6.1.0", "jsdom": "^16.2.2" diff --git a/tsconfig.json b/tsconfig.json index ab92f02a..92e0a5b3 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,6 +3,12 @@ "files": [ /* only process references */ ], - "references": [{ "path": "./packages/preset-rules" }, { "path": "./packages/assert" }], + "references": [ + { "path": "./packages/preset-rules" }, + { "path": "./packages/format" }, + { "path": "./packages/test-utils" }, + { "path": "./packages/assert" }, + { "path": "./packages/jest" } + ], "exclude": ["**/node_modules"] } From 2481a06ff9d61cbdd46533f2e776f7c6850af868 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Tue, 28 Apr 2020 17:30:32 -0700 Subject: [PATCH 19/61] build(root): add markdown link checker dep, scripts, config --- mdLinkChecker.json | 8 ++++++ package.json | 2 ++ yarn.lock | 64 ++++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 mdLinkChecker.json diff --git a/mdLinkChecker.json b/mdLinkChecker.json new file mode 100644 index 00000000..ea2f11d7 --- /dev/null +++ b/mdLinkChecker.json @@ -0,0 +1,8 @@ +{ + "ignorePatterns": [ + { + "TODO": "REMOVE after package is published", + "pattern": "^https://github.com/salesforce/sa11y" + } + ] +} diff --git a/package.json b/package.json index d54b8217..d42dd07b 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "**/*.{js,ts}": "eslint --fix", "**/*.{js,ts,json,yaml,yml,md}": "prettier --write", "**/*.{js,ts,md}": "cspell -- --no-summary", + "**/*.md": "markdown-link-check --quiet --config mdLinkChecker.json", "yarn.lock": "lockfile-lint --path yarn.lock" }, "devDependencies": { @@ -75,6 +76,7 @@ "lerna": "^3.20.2", "lint-staged": "^10.1.7", "lockfile-lint": "^4.2.2", + "markdown-link-check": "^3.8.1", "npm-check-updates": "^4.1.2", "prettier": "2.0.5", "typescript": "^3.8.3" diff --git a/yarn.lock b/yarn.lock index d469e698..4b3b78ec 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2615,6 +2615,11 @@ astral-regex@^1.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +async@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.0.tgz#b3a2685c5ebb641d3de02d161002c60fc9f85720" + integrity sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw== + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -5681,6 +5686,11 @@ ip@1.1.5: resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= +is-absolute-url@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== + is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -5917,6 +5927,13 @@ is-regexp@^1.0.0: resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= +is-relative-url@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-relative-url/-/is-relative-url-3.0.0.tgz#f623c8e26baa5bd3742b3b7ec074f50f3b45b3f3" + integrity sha512-U1iSYRlY2GIMGuZx7gezlB5dp1Kheaym7zKzO1PV06mOihiWTXejLwm4poEJysPyXF+HtK/BEd0DVlcCh30pEA== + dependencies: + is-absolute-url "^3.0.0" + is-ssh@^1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.3.1.tgz#f349a8cadd24e65298037a522cf7520f2e81a0f3" @@ -5978,6 +5995,13 @@ isarray@1.0.0, isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= +isemail@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/isemail/-/isemail-3.2.0.tgz#59310a021931a9fb06bbb51e155ce0b3f236832c" + integrity sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg== + dependencies: + punycode "2.x.x" + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -6689,6 +6713,16 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= +link-check@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/link-check/-/link-check-4.5.0.tgz#d0755fb50a86f889c19544acde40a306171c306d" + integrity sha512-7PWHakA/+O5uaZ9yD290fiG2PUK9weoHAMgtoH3VPllL8ukYHe1YEbwgK9jjnUSE7Xa3zgT41mg+7TnZAPLxkQ== + dependencies: + is-relative-url "^3.0.0" + isemail "^3.2.0" + ms "^2.1.2" + request "^2.88.2" + lint-staged@^10.1.7: version "10.1.7" resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.1.7.tgz#b628f8b010083fe4e116d0af7949a32f1ea6b3a7" @@ -7072,6 +7106,32 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +markdown-link-check@^3.8.1: + version "3.8.1" + resolved "https://registry.yarnpkg.com/markdown-link-check/-/markdown-link-check-3.8.1.tgz#526cdf27fdac2c88fc98687bbc0ebb0928452a14" + integrity sha512-R6k8ytdJZePDAdb8NT0NvrNvu6n25IwLPIoJ4guHWC5yqyTlnUpRT7j3XE4ioBXwqOhG/LlUcuckD621kZkl4w== + dependencies: + async "^3.2.0" + chalk "^4.0.0" + commander "^5.0.0" + link-check "^4.5.0" + lodash "^4.17.15" + markdown-link-extractor "^1.2.3" + progress "^2.0.3" + request "^2.88.2" + +markdown-link-extractor@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/markdown-link-extractor/-/markdown-link-extractor-1.2.3.tgz#926b9b4cf5ea2a0ce1328603fe676c4e602e7679" + integrity sha512-BGgBPPNjRpwKzkMxuY5YG2ntPmSL8UMnGiYxRR/9etK3ABLv9SsKHt70PUxv6MaBSC3TnpRsvcIOmnCFWvjcRA== + dependencies: + marked "^0.8.2" + +marked@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/marked/-/marked-0.8.2.tgz#4faad28d26ede351a7a1aaa5fec67915c869e355" + integrity sha512-EGwzEeCcLniFX51DhTpmTom+dSA/MG/OBUDjnWtHbEnjAH180VzUeAw+oE4+Zv+CoYBWyRlYOTR0N8SO9R1PVw== + meow@5.0.0, meow@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/meow/-/meow-5.0.0.tgz#dfc73d63a9afc714a5e371760eb5c88b91078aa4" @@ -7360,7 +7420,7 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@^2.0.0, ms@^2.1.1: +ms@^2.0.0, ms@^2.1.1, ms@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== @@ -8347,7 +8407,7 @@ pumpify@^1.3.3: inherits "^2.0.3" pump "^2.0.0" -punycode@^2.1.0, punycode@^2.1.1: +punycode@2.x.x, punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== From 37f5f8fa1dd115ef52721805b754faf1c34f4b0a Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Tue, 28 Apr 2020 18:29:40 -0700 Subject: [PATCH 20/61] build(root): add eslint plugin to check code snippets in markdown files --- .eslintrc.js | 1 + package.json | 7 +- yarn.lock | 218 +++++++++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 219 insertions(+), 7 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 31e912f4..29d79c33 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -14,6 +14,7 @@ module.exports = { 'jest', 'prettier', 'notice', // checks for and fixes copyright header in each file + 'markdown', ], extends: [ 'eslint:recommended', diff --git a/package.json b/package.json index d42dd07b..11de3948 100644 --- a/package.json +++ b/package.json @@ -42,9 +42,11 @@ } }, "lint-staged": { - "**/*.{js,ts}": "eslint --fix", "**/*.{js,ts,json,yaml,yml,md}": "prettier --write", - "**/*.{js,ts,md}": "cspell -- --no-summary", + "**/*.{js,ts,md}": [ + "eslint --fix", + "cspell -- --no-summary" + ], "**/*.md": "markdown-link-check --quiet --config mdLinkChecker.json", "yarn.lock": "lockfile-lint --path yarn.lock" }, @@ -67,6 +69,7 @@ "eslint-config-prettier": "^6.11.0", "eslint-plugin-jest": "^23.8.2", "eslint-plugin-license-header": "^0.2.0", + "eslint-plugin-markdown": "^1.0.2", "eslint-plugin-notice": "^0.8.10", "eslint-plugin-prettier": "^3.1.3", "eslint-plugin-tsdoc": "^0.2.4", diff --git a/yarn.lock b/yarn.lock index 4b3b78ec..70390e46 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2729,6 +2729,11 @@ babel-runtime@^6.23.0, babel-runtime@^6.26.0: core-js "^2.4.0" regenerator-runtime "^0.11.0" +bail@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" + integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== + balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -3059,6 +3064,21 @@ chalk@^4.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +character-entities-legacy@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" + integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== + +character-entities@^1.0.0: + version "1.2.4" + resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b" + integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== + +character-reference-invalid@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" + integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== + chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -3197,6 +3217,11 @@ code-point-at@^1.0.0: resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= +collapse-white-space@^1.0.2: + version "1.0.6" + resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" + integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ== + collect-v8-coverage@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" @@ -4391,6 +4416,15 @@ eslint-plugin-license-header@^0.2.0: dependencies: requireindex "^1.2.0" +eslint-plugin-markdown@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-markdown/-/eslint-plugin-markdown-1.0.2.tgz#79274bf17ce3ead48e4a55cbcb6d7ce735754280" + integrity sha512-BfvXKsO0K+zvdarNc801jsE/NTLmig4oKhZ1U3aSUgTf2dB/US5+CrfGxMsCK2Ki1vS1R3HPok+uYpufFndhzw== + dependencies: + object-assign "^4.0.1" + remark-parse "^5.0.0" + unified "^6.1.2" + eslint-plugin-notice@^0.8.10: version "0.8.10" resolved "https://registry.yarnpkg.com/eslint-plugin-notice/-/eslint-plugin-notice-0.8.10.tgz#a9307cf42ab38c4e548e45197d4f98aaeea6b15b" @@ -4672,7 +4706,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@~3.0.2: +extend@^3.0.0, extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== @@ -5583,7 +5617,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: +inherits@2, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -5705,6 +5739,19 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" +is-alphabetical@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" + integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== + +is-alphanumerical@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" + integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A== + dependencies: + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -5717,7 +5764,7 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-buffer@^1.1.5: +is-buffer@^1.1.4, is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== @@ -5753,6 +5800,11 @@ is-date-object@^1.0.1: resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== +is-decimal@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" + integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== + is-descriptor@^0.1.0: version "0.1.6" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" @@ -5834,6 +5886,11 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" +is-hexadecimal@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" + integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== + is-installed-globally@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" @@ -5975,11 +6032,21 @@ is-utf8@^0.2.0, is-utf8@^0.2.1: resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= +is-whitespace-character@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7" + integrity sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w== + is-windows@^1.0.0, is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== +is-word-character@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230" + integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA== + is-wsl@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.1.1.tgz#4a1c152d429df3d441669498e2486d3596ebaf1d" @@ -7106,6 +7173,11 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +markdown-escapes@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535" + integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg== + markdown-link-check@^3.8.1: version "3.8.1" resolved "https://registry.yarnpkg.com/markdown-link-check/-/markdown-link-check-3.8.1.tgz#526cdf27fdac2c88fc98687bbc0ebb0928452a14" @@ -8072,6 +8144,18 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +parse-entities@^1.1.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.2.2.tgz#c31bf0f653b6661354f8973559cb86dd1d5edf50" + integrity sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg== + dependencies: + character-entities "^1.0.0" + character-entities-legacy "^1.0.0" + character-reference-invalid "^1.0.0" + is-alphanumerical "^1.0.0" + is-decimal "^1.0.0" + is-hexadecimal "^1.0.0" + parse-github-repo-url@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz#9e7d8bb252a6cb6ba42595060b7bf6df3dbc1f50" @@ -8713,6 +8797,27 @@ regjsparser@^0.6.4: dependencies: jsesc "~0.5.0" +remark-parse@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-5.0.0.tgz#4c077f9e499044d1d5c13f80d7a98cf7b9285d95" + integrity sha512-b3iXszZLH1TLoyUzrATcTQUZrwNl1rE70rVdSruJFlDaJ9z5aMkhrG43Pp68OgfHndL/ADz6V69Zow8cTQu+JA== + dependencies: + collapse-white-space "^1.0.2" + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" + is-whitespace-character "^1.0.0" + is-word-character "^1.0.0" + markdown-escapes "^1.0.0" + parse-entities "^1.1.0" + repeat-string "^1.5.4" + state-toggle "^1.0.0" + trim "0.0.1" + trim-trailing-lines "^1.0.0" + unherit "^1.0.4" + unist-util-remove-position "^1.0.0" + vfile-location "^2.0.0" + xtend "^4.0.1" + remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" @@ -8723,7 +8828,7 @@ repeat-element@^1.1.2: resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== -repeat-string@^1.6.1: +repeat-string@^1.5.4, repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= @@ -8735,6 +8840,11 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" +replace-ext@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" + integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= + request-promise-core@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" @@ -9363,6 +9473,11 @@ stack-utils@^1.0.1: resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== +state-toggle@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" + integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ== + static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -9858,6 +9973,21 @@ trim-off-newlines@^1.0.0: resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM= +trim-trailing-lines@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.3.tgz#7f0739881ff76657b7776e10874128004b625a94" + integrity sha512-4ku0mmjXifQcTVfYDfR5lpgV7zVqPg6zV9rdZmwOPqq0+Zq19xDqEgagqVbc4pOOShbncuAOIs59R3+3gcF3ZA== + +trim@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" + integrity sha1-WFhUf2spB1fulczMZm+1AITEYN0= + +trough@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" + integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== + tslib@^1.8.1, tslib@^1.9.0: version "1.11.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" @@ -9948,6 +10078,14 @@ umask@^1.1.0: resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" integrity sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0= +unherit@^1.0.4: + version "1.1.3" + resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22" + integrity sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ== + dependencies: + inherits "^2.0.0" + xtend "^4.0.0" + unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" @@ -9971,6 +10109,18 @@ unicode-property-aliases-ecmascript@^1.0.4: resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== +unified@^6.1.2: + version "6.2.0" + resolved "https://registry.yarnpkg.com/unified/-/unified-6.2.0.tgz#7fbd630f719126d67d40c644b7e3f617035f6dba" + integrity sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA== + dependencies: + bail "^1.0.0" + extend "^3.0.0" + is-plain-obj "^1.1.0" + trough "^1.0.0" + vfile "^2.0.0" + x-is-string "^0.1.0" + union-value@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" @@ -10002,6 +10152,37 @@ unique-string@^2.0.0: dependencies: crypto-random-string "^2.0.0" +unist-util-is@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-3.0.0.tgz#d9e84381c2468e82629e4a5be9d7d05a2dd324cd" + integrity sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A== + +unist-util-remove-position@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz#ec037348b6102c897703eee6d0294ca4755a2020" + integrity sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A== + dependencies: + unist-util-visit "^1.1.0" + +unist-util-stringify-position@^1.0.0, unist-util-stringify-position@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz#3f37fcf351279dcbca7480ab5889bb8a832ee1c6" + integrity sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ== + +unist-util-visit-parents@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz#25e43e55312166f3348cae6743588781d112c1e9" + integrity sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g== + dependencies: + unist-util-is "^3.0.0" + +unist-util-visit@^1.1.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.4.1.tgz#4724aaa8486e6ee6e26d7ff3c8685960d560b1e3" + integrity sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw== + dependencies: + unist-util-visit-parents "^2.0.0" + universal-user-agent@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-4.0.1.tgz#fd8d6cb773a679a709e967ef8288a31fcc03e557" @@ -10132,6 +10313,28 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +vfile-location@^2.0.0: + version "2.0.6" + resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.6.tgz#8a274f39411b8719ea5728802e10d9e0dff1519e" + integrity sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA== + +vfile-message@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-1.1.1.tgz#5833ae078a1dfa2d96e9647886cd32993ab313e1" + integrity sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA== + dependencies: + unist-util-stringify-position "^1.1.1" + +vfile@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-2.3.0.tgz#e62d8e72b20e83c324bc6c67278ee272488bf84a" + integrity sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w== + dependencies: + is-buffer "^1.1.4" + replace-ext "1.0.0" + unist-util-stringify-position "^1.0.0" + vfile-message "^1.0.0" + vscode-uri@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-2.1.1.tgz#5aa1803391b6ebdd17d047f51365cf62c38f6e90" @@ -10368,6 +10571,11 @@ ws@^7.0.0, ws@^7.2.3: resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.3.tgz#a5411e1fb04d5ed0efee76d26d5c46d830c39b46" integrity sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ== +x-is-string@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82" + integrity sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI= + xdg-basedir@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" @@ -10383,7 +10591,7 @@ xmlchars@^2.1.1, xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -xtend@~4.0.1: +xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== From 28e628f593425379fd85424ffbcbd24be119b6f5 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Tue, 28 Apr 2020 19:56:20 -0700 Subject: [PATCH 21/61] improvement(jest): fix return types on the matcher interface Fixes Error when using "await" with "toBeAccessible": "Unexpected await of a non-Promise (non-"Thenable") value" --- packages/jest/__tests__/jest.test.ts | 4 ---- packages/jest/src/jest.ts | 6 +++--- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/packages/jest/__tests__/jest.test.ts b/packages/jest/__tests__/jest.test.ts index 44885fe2..60a0f8ee 100644 --- a/packages/jest/__tests__/jest.test.ts +++ b/packages/jest/__tests__/jest.test.ts @@ -16,10 +16,6 @@ import { domWithNoA11yIssues, } from '@sa11y/test-utils'; -// TODO (Fix): Error when using "await" with "toBeAccessible": "Unexpected await of a non-Promise (non-"Thenable") value" -// Needs to be fixed before release as it would affect usability of the API for users. -/* eslint-disable @typescript-eslint/await-thenable */ - // Collection of values to be tested passed in as different API parameters const a11yConfigParams = [extended, recommended, undefined]; const domParams = [document, undefined]; diff --git a/packages/jest/src/jest.ts b/packages/jest/src/jest.ts index 3020200f..bea81b6e 100644 --- a/packages/jest/src/jest.ts +++ b/packages/jest/src/jest.ts @@ -17,8 +17,8 @@ declare global { // eslint-disable-next-line @typescript-eslint/no-namespace namespace jest { interface Matchers { - toBeAccessible(config?: A11yConfig): R; - toBeAccessibleWith(config: A11yConfig): R; + toBeAccessible(config?: A11yConfig): Promise; + toBeAccessibleWith(config: A11yConfig): Promise; } } } @@ -49,7 +49,7 @@ export async function toBeAccessible( } /** - * Jest expect matcher to check DOM for accessibility issues + * Jest expect matcher to check DOM for accessibility issues with a `@sa11y/preset-rule` * @param receivedDom - DOM to be tested for accessibility * @param config - A11yConfig to be used to test for accessibility. */ From 35314582bc81f7a498011f965d6d3df4de58da66 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Tue, 28 Apr 2020 20:17:44 -0700 Subject: [PATCH 22/61] build(root): upgrade to next version of eslint markdown plugin that supports typescript among other things --- .eslintrc.js | 7 +++++++ package.json | 2 +- yarn.lock | 9 ++++----- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 29d79c33..afc86be4 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -35,6 +35,13 @@ module.exports = { ], 'tsdoc/syntax': 'warn', }, + overrides: [ + { + // Enable the Markdown processor for all .md files. + files: ['**/*.md'], + processor: 'markdown/markdown', + }, + ], env: { browser: true, node: true, diff --git a/package.json b/package.json index 11de3948..4f4fa80b 100644 --- a/package.json +++ b/package.json @@ -69,7 +69,7 @@ "eslint-config-prettier": "^6.11.0", "eslint-plugin-jest": "^23.8.2", "eslint-plugin-license-header": "^0.2.0", - "eslint-plugin-markdown": "^1.0.2", + "eslint-plugin-markdown": "^2.0.0-alpha.0", "eslint-plugin-notice": "^0.8.10", "eslint-plugin-prettier": "^3.1.3", "eslint-plugin-tsdoc": "^0.2.4", diff --git a/yarn.lock b/yarn.lock index 70390e46..b45e1d4b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4416,12 +4416,11 @@ eslint-plugin-license-header@^0.2.0: dependencies: requireindex "^1.2.0" -eslint-plugin-markdown@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-markdown/-/eslint-plugin-markdown-1.0.2.tgz#79274bf17ce3ead48e4a55cbcb6d7ce735754280" - integrity sha512-BfvXKsO0K+zvdarNc801jsE/NTLmig4oKhZ1U3aSUgTf2dB/US5+CrfGxMsCK2Ki1vS1R3HPok+uYpufFndhzw== +eslint-plugin-markdown@^2.0.0-alpha.0: + version "2.0.0-alpha.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-markdown/-/eslint-plugin-markdown-2.0.0-alpha.0.tgz#4316c3dc32e37cefbae6cd6b6676344a2982e5e8" + integrity sha512-NIp6WBiGDRWkGuuG1s5biJ55s4E+B5wbfrIlf3m8cLeTFD2ijkxrP1l3LXx0BexnL7XL2Hz5Ce1e2nOazdaTHg== dependencies: - object-assign "^4.0.1" remark-parse "^5.0.0" unified "^6.1.2" From 3dbd29aebf1b82425fae64938ef807f38c084883 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Tue, 28 Apr 2020 20:19:32 -0700 Subject: [PATCH 23/61] docs(root): add typescript tag to code blocks in docs to enable markdown eslint plugin to check them --- packages/assert/README.md | 3 ++- packages/format/README.md | 2 +- packages/preset-rules/README.md | 3 ++- packages/test-utils/README.md | 10 +++++----- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/packages/assert/README.md b/packages/assert/README.md index 774cfe71..553edc7b 100644 --- a/packages/assert/README.md +++ b/packages/assert/README.md @@ -6,8 +6,9 @@ Provides assertAccessible API to check DOM for accessibility issues // TODO(doc): Generate usage docs from code (using JSDOC, TSDOC etc) -``` +```typescript import { assertAccessible } from '@sa11y/assert'; +import { extended } from "@sa11y/preset-rules"; // Setup DOM in the state to be tested for accessibility ... diff --git a/packages/format/README.md b/packages/format/README.md index 73e7a570..98a2843d 100644 --- a/packages/format/README.md +++ b/packages/format/README.md @@ -4,7 +4,7 @@ Format accessibility results from axe ## Usage -``` +```typescript import axe from 'axe-core'; import { a11yResultsFormatter } from '@sa11y/format'; diff --git a/packages/preset-rules/README.md b/packages/preset-rules/README.md index 9dc3742b..ef9336fe 100644 --- a/packages/preset-rules/README.md +++ b/packages/preset-rules/README.md @@ -4,9 +4,10 @@ Accessibility preset rule configs for axe ## Usage -``` +```typescript import axe from 'axe-core'; import { extended } from '@sa11y/preset-rules'; const a11yResults = await axe.run(extended); +console.log(a11yResults); ``` diff --git a/packages/test-utils/README.md b/packages/test-utils/README.md index 2e910b4c..2fb7f2cf 100644 --- a/packages/test-utils/README.md +++ b/packages/test-utils/README.md @@ -4,7 +4,7 @@ Private package providing test utilities for @sa11y packages ## Usage -``` +```typescript import { afterEachCleanup, beforeAllSetup, @@ -14,22 +14,22 @@ import { import { toBeAccessible } from '@sa11y/jest'; - beforeAll(() => { beforeAllSetup(); + expect.extend({toBeAccessible}); }); afterEach(() => { afterEachCleanup(); }); -describe('..', () => { - it.('...', () => { +describe('...', () => { + it.('...', async () => { document.body.innerHTML = domWithNoA11yIssues; await expect(document).toBeAccessible(); document.body.innerHTML = domWithA11yIssues; await expect(document).not.toBeAccessible(); }); - +}); ``` From 342f577d5207c68b9134463baa7ef2edd59c90dc Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Tue, 28 Apr 2020 20:32:00 -0700 Subject: [PATCH 24/61] build(root): update dependencies --- package.json | 12 +- packages/jest/package.json | 4 +- yarn.lock | 1137 ++++++++++++++++++------------------ 3 files changed, 585 insertions(+), 568 deletions(-) diff --git a/package.json b/package.json index 4f4fa80b..9b21ffdb 100644 --- a/package.json +++ b/package.json @@ -59,9 +59,9 @@ "@types/jest": "^25.2.1", "@types/jsdom": "^16.2.1", "@types/node": "^12.12.31", - "@typescript-eslint/eslint-plugin": "^2.29.0", - "@typescript-eslint/parser": "^2.29.0", - "babel-jest": "^25.4.0", + "@typescript-eslint/eslint-plugin": "^2.30.0", + "@typescript-eslint/parser": "^2.30.0", + "babel-jest": "^25.5.0", "commitizen": "^4.0.4", "conventional-changelog-cli": "^2.0.31", "cspell": "^4.0.57", @@ -70,14 +70,14 @@ "eslint-plugin-jest": "^23.8.2", "eslint-plugin-license-header": "^0.2.0", "eslint-plugin-markdown": "^2.0.0-alpha.0", - "eslint-plugin-notice": "^0.8.10", + "eslint-plugin-notice": "^0.9.10", "eslint-plugin-prettier": "^3.1.3", "eslint-plugin-tsdoc": "^0.2.4", "eslint-watch": "^6.0.1", "husky": "^4.2.5", - "jest": "^25.4.0", + "jest": "^25.5.0", "lerna": "^3.20.2", - "lint-staged": "^10.1.7", + "lint-staged": "^10.2.0", "lockfile-lint": "^4.2.2", "markdown-link-check": "^3.8.1", "npm-check-updates": "^4.1.2", diff --git a/packages/jest/package.json b/packages/jest/package.json index ea4c8867..065cb06c 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -22,10 +22,10 @@ "dist/**/*.js" ], "dependencies": { - "jest-matcher-utils": "^25.4.0" + "jest-matcher-utils": "^25.5.0" }, "peerDependencies": { - "jest": "^25.4.0" + "jest": "^25.5.0" }, "devDependencies": { "@sa11y/test-utils": "0.1.0", diff --git a/yarn.lock b/yarn.lock index b45e1d4b..9b1ab42f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -767,7 +767,7 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.7.4", "@babel/template@^7.8.3", "@babel/template@^7.8.6": +"@babel/template@^7.3.3", "@babel/template@^7.7.4", "@babel/template@^7.8.3", "@babel/template@^7.8.6": version "7.8.6" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== @@ -791,7 +791,7 @@ globals "^11.1.0" lodash "^4.17.13" -"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.4", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0", "@babel/types@^7.9.5": +"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0", "@babel/types@^7.9.5": version "7.9.5" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.5.tgz#89231f82915a8a566a703b3b20133f73da6b9444" integrity sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg== @@ -1032,44 +1032,44 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== -"@jest/console@^25.4.0": - version "25.4.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-25.4.0.tgz#e2760b532701137801ba824dcff6bc822c961bac" - integrity sha512-CfE0erx4hdJ6t7RzAcE1wLG6ZzsHSmybvIBQDoCkDM1QaSeWL9wJMzID/2BbHHa7ll9SsbbK43HjbERbBaFX2A== +"@jest/console@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-25.5.0.tgz#770800799d510f37329c508a9edd0b7b447d9abb" + integrity sha512-T48kZa6MK1Y6k4b89sexwmSF4YLeZS/Udqg3Jj3jG/cHH+N/sLFCEoXEDMOKugJQ9FxPN1osxIknvKkxt6MKyw== dependencies: - "@jest/types" "^25.4.0" + "@jest/types" "^25.5.0" chalk "^3.0.0" - jest-message-util "^25.4.0" - jest-util "^25.4.0" + jest-message-util "^25.5.0" + jest-util "^25.5.0" slash "^3.0.0" -"@jest/core@^25.4.0": - version "25.4.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-25.4.0.tgz#cc1fe078df69b8f0fbb023bb0bcee23ef3b89411" - integrity sha512-h1x9WSVV0+TKVtATGjyQIMJENs8aF6eUjnCoi4jyRemYZmekLr8EJOGQqTWEX8W6SbZ6Skesy9pGXrKeAolUJw== +"@jest/core@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-25.5.0.tgz#e71ddcac282e965081688cac5e9f100b237a7b32" + integrity sha512-YQPhBtPQa8QJCMpseg1b/DqJE0iG16uhUQOAOdRX2dbIzgZeobNQn4Cmigr1va6IC3RTnGPTUF7QmWOzsiJtbQ== dependencies: - "@jest/console" "^25.4.0" - "@jest/reporters" "^25.4.0" - "@jest/test-result" "^25.4.0" - "@jest/transform" "^25.4.0" - "@jest/types" "^25.4.0" + "@jest/console" "^25.5.0" + "@jest/reporters" "^25.5.0" + "@jest/test-result" "^25.5.0" + "@jest/transform" "^25.5.0" + "@jest/types" "^25.5.0" ansi-escapes "^4.2.1" chalk "^3.0.0" exit "^0.1.2" - graceful-fs "^4.2.3" - jest-changed-files "^25.4.0" - jest-config "^25.4.0" - jest-haste-map "^25.4.0" - jest-message-util "^25.4.0" + graceful-fs "^4.2.4" + jest-changed-files "^25.5.0" + jest-config "^25.5.0" + jest-haste-map "^25.5.0" + jest-message-util "^25.5.0" jest-regex-util "^25.2.6" - jest-resolve "^25.4.0" - jest-resolve-dependencies "^25.4.0" - jest-runner "^25.4.0" - jest-runtime "^25.4.0" - jest-snapshot "^25.4.0" - jest-util "^25.4.0" - jest-validate "^25.4.0" - jest-watcher "^25.4.0" + jest-resolve "^25.5.0" + jest-resolve-dependencies "^25.5.0" + jest-runner "^25.5.0" + jest-runtime "^25.5.0" + jest-snapshot "^25.5.0" + jest-util "^25.5.0" + jest-validate "^25.5.0" + jest-watcher "^25.5.0" micromatch "^4.0.2" p-each-series "^2.1.0" realpath-native "^2.0.0" @@ -1077,49 +1077,59 @@ slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^25.4.0": - version "25.4.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-25.4.0.tgz#45071f525f0d8c5a51ed2b04fd42b55a8f0c7cb3" - integrity sha512-KDctiak4mu7b4J6BIoN/+LUL3pscBzoUCP+EtSPd2tK9fqyDY5OF+CmkBywkFWezS9tyH5ACOQNtpjtueEDH6Q== +"@jest/environment@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-25.5.0.tgz#aa33b0c21a716c65686638e7ef816c0e3a0c7b37" + integrity sha512-U2VXPEqL07E/V7pSZMSQCvV5Ea4lqOlT+0ZFijl/i316cRMHvZ4qC+jBdryd+lmRetjQo0YIQr6cVPNxxK87mA== dependencies: - "@jest/fake-timers" "^25.4.0" - "@jest/types" "^25.4.0" - jest-mock "^25.4.0" + "@jest/fake-timers" "^25.5.0" + "@jest/types" "^25.5.0" + jest-mock "^25.5.0" -"@jest/fake-timers@^25.4.0": - version "25.4.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-25.4.0.tgz#3a9a4289ba836abd084953dca406389a57e00fbd" - integrity sha512-lI9z+VOmVX4dPPFzyj0vm+UtaB8dCJJ852lcDnY0uCPRvZAaVGnMwBBc1wxtf+h7Vz6KszoOvKAt4QijDnHDkg== +"@jest/fake-timers@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-25.5.0.tgz#46352e00533c024c90c2bc2ad9f2959f7f114185" + integrity sha512-9y2+uGnESw/oyOI3eww9yaxdZyHq7XvprfP/eeoCsjqKYts2yRlsHS/SgjPDV8FyMfn2nbMy8YzUk6nyvdLOpQ== dependencies: - "@jest/types" "^25.4.0" - jest-message-util "^25.4.0" - jest-mock "^25.4.0" - jest-util "^25.4.0" + "@jest/types" "^25.5.0" + jest-message-util "^25.5.0" + jest-mock "^25.5.0" + jest-util "^25.5.0" lolex "^5.0.0" -"@jest/reporters@^25.4.0": - version "25.4.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-25.4.0.tgz#836093433b32ce4e866298af2d6fcf6ed351b0b0" - integrity sha512-bhx/buYbZgLZm4JWLcRJ/q9Gvmd3oUh7k2V7gA4ZYBx6J28pIuykIouclRdiAC6eGVX1uRZT+GK4CQJLd/PwPg== +"@jest/globals@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-25.5.0.tgz#2e36037e0e96d34870f99a024d4dc1485bcbd775" + integrity sha512-yC+WlD1ytYPZvTSbmSeZM+BNbkFXtkTBBjtmoFDYxjznwugl2Qv2KW7csxL7nTxJOxyjkffy6ngLZ6YMqAe7MA== + dependencies: + "@jest/environment" "^25.5.0" + "@jest/types" "^25.5.0" + expect "^25.5.0" + +"@jest/reporters@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-25.5.0.tgz#749e035119ec22c76af9bb587108a27c15dfe40d" + integrity sha512-CnrfHhrxGgMI2Va/w0e406CRmf+P1ZBAahgM4aaETWy8IQ5n3aGEDNE+tuh7vexIFCfZ1QFsVMYzvcVT4o9XOQ== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^25.4.0" - "@jest/test-result" "^25.4.0" - "@jest/transform" "^25.4.0" - "@jest/types" "^25.4.0" + "@jest/console" "^25.5.0" + "@jest/test-result" "^25.5.0" + "@jest/transform" "^25.5.0" + "@jest/types" "^25.5.0" chalk "^3.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.2" + graceful-fs "^4.2.4" istanbul-lib-coverage "^3.0.0" istanbul-lib-instrument "^4.0.0" istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.0.2" - jest-haste-map "^25.4.0" - jest-resolve "^25.4.0" - jest-util "^25.4.0" - jest-worker "^25.4.0" + jest-haste-map "^25.5.0" + jest-resolve "^25.5.0" + jest-util "^25.5.0" + jest-worker "^25.5.0" slash "^3.0.0" source-map "^0.6.0" string-length "^3.1.0" @@ -1128,50 +1138,51 @@ optionalDependencies: node-notifier "^6.0.0" -"@jest/source-map@^25.2.6": - version "25.2.6" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-25.2.6.tgz#0ef2209514c6d445ebccea1438c55647f22abb4c" - integrity sha512-VuIRZF8M2zxYFGTEhkNSvQkUKafQro4y+mwUxy5ewRqs5N/ynSFUODYp3fy1zCnbCMy1pz3k+u57uCqx8QRSQQ== +"@jest/source-map@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-25.5.0.tgz#df5c20d6050aa292c2c6d3f0d2c7606af315bd1b" + integrity sha512-eIGx0xN12yVpMcPaVpjXPnn3N30QGJCJQSkEDUt9x1fI1Gdvb07Ml6K5iN2hG7NmMP6FDmtPEssE3z6doOYUwQ== dependencies: callsites "^3.0.0" - graceful-fs "^4.2.3" + graceful-fs "^4.2.4" source-map "^0.6.0" -"@jest/test-result@^25.4.0": - version "25.4.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-25.4.0.tgz#6f2ec2c8da9981ef013ad8651c1c6f0cb20c6324" - integrity sha512-8BAKPaMCHlL941eyfqhWbmp3MebtzywlxzV+qtngQ3FH+RBqnoSAhNEPj4MG7d2NVUrMOVfrwuzGpVIK+QnMAA== +"@jest/test-result@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-25.5.0.tgz#139a043230cdeffe9ba2d8341b27f2efc77ce87c" + integrity sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A== dependencies: - "@jest/console" "^25.4.0" - "@jest/types" "^25.4.0" + "@jest/console" "^25.5.0" + "@jest/types" "^25.5.0" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^25.4.0": - version "25.4.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-25.4.0.tgz#2b96f9d37f18dc3336b28e3c8070f97f9f55f43b" - integrity sha512-240cI+nsM3attx2bMp9uGjjHrwrpvxxrZi8Tyqp/cfOzl98oZXVakXBgxODGyBYAy/UGXPKXLvNc2GaqItrsJg== +"@jest/test-sequencer@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-25.5.0.tgz#edc249d26f73804172dbf30a140d04b494a9dc38" + integrity sha512-c9Go3EK4+5erD2HKibIyt8JqImV23iGTWfaqMKdtD3aish8CDcXlq1X+L/CMFPOORJDV63quN4obR6iHpARapg== dependencies: - "@jest/test-result" "^25.4.0" - jest-haste-map "^25.4.0" - jest-runner "^25.4.0" - jest-runtime "^25.4.0" + "@jest/test-result" "^25.5.0" + graceful-fs "^4.2.4" + jest-haste-map "^25.5.0" + jest-runner "^25.5.0" + jest-runtime "^25.5.0" -"@jest/transform@^25.4.0": - version "25.4.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-25.4.0.tgz#eef36f0367d639e2fd93dccd758550377fbb9962" - integrity sha512-t1w2S6V1sk++1HHsxboWxPEuSpN8pxEvNrZN+Ud/knkROWtf8LeUmz73A4ezE8476a5AM00IZr9a8FO9x1+j3g== +"@jest/transform@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-25.5.0.tgz#a0f3719a1e158be442a99988d3134d577cb1c1be" + integrity sha512-yqxpmosig2JWKHVbyEl8I7btXCinLIL8b3ENJYMvl9TqzZ9KulnV2t08wp4Wbv/pFKYqTd5NWyEzi4xCpcQ3mg== dependencies: "@babel/core" "^7.1.0" - "@jest/types" "^25.4.0" + "@jest/types" "^25.5.0" babel-plugin-istanbul "^6.0.0" chalk "^3.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.3" - jest-haste-map "^25.4.0" + graceful-fs "^4.2.4" + jest-haste-map "^25.5.0" jest-regex-util "^25.2.6" - jest-util "^25.4.0" + jest-util "^25.5.0" micromatch "^4.0.2" pirates "^4.0.1" realpath-native "^2.0.0" @@ -1179,10 +1190,10 @@ source-map "^0.6.1" write-file-atomic "^3.0.0" -"@jest/types@^25.4.0": - version "25.4.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.4.0.tgz#5afeb8f7e1cba153a28e5ac3c9fe3eede7206d59" - integrity sha512-XBeaWNzw2PPnGW5aXvZt3+VO60M+34RY3XDsCK5tW7kyj3RK0XClRutCfjqcBuaR2aBQTbluEDME9b5MB9UAPw== +"@jest/types@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" + integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw== dependencies: "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^1.1.1" @@ -1917,15 +1928,17 @@ integrity sha512-JtktVH7ASBVIWsQTFlFpeOzhBJskvoBCTfeeRhhZy7ybATcUvwiwotZ8j5rkqUUyB69lIy/AvboiiiGBjYBKBA== "@npmcli/git@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-2.0.1.tgz#d7ecaa9c945de6bb1af5a7e6ea634771193c168b" - integrity sha512-hVatexiBtx71F01Ars38Hr5AFUGmJgHAfQtRlO5fJlnAawRGSXwEFgjB5i3XdUUmElZU/RXy7fefN02dZKxgPw== + version "2.0.2" + resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-2.0.2.tgz#41d75caf59e4799c62b354a3e4eed3b0e64310c0" + integrity sha512-uv9+EuP5YWluNPgkEOL+iyB/+MVt4U5PMBCfl+I8korKluFdiSp7RxjXYzpWM/wU4wXaROAUFiOiCMmBftonjw== dependencies: "@npmcli/promise-spawn" "^1.1.0" + lru-cache "^5.1.1" mkdirp "^1.0.3" npm-pick-manifest "^6.0.0" promise-inflight "^1.0.1" promise-retry "^1.1.1" + semver "^7.3.2" unique-filename "^1.1.1" which "^2.0.2" @@ -1939,13 +1952,23 @@ read-package-json-fast "^1.1.1" readdir-scoped-modules "^1.1.0" -"@npmcli/promise-spawn@^1.1.0": +"@npmcli/promise-spawn@^1.1.0", "@npmcli/promise-spawn@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-1.2.0.tgz#167d70b926f771c8bd8b9183bfc8b5aec29d7e45" integrity sha512-nFtqjVETliApiRdjbYwKwhlSHx2ZMagyj5b9YbNt0BWeeOVxJd47ZVE2u16vxDHyTOZvk+YLV7INwfAE9a2uow== dependencies: infer-owner "^1.0.4" +"@npmcli/run-script@^1.3.0": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-1.3.1.tgz#dc8934646634338b99898614ce083dabcd14edf3" + integrity sha512-9Ea57XJjNLtBFRAaiKqqdoqRrL2QkM0vvCbMjPecljhog5IHupStPtZULbl0CoGN00N3lhLWJ4PaIEC0MGjqJw== + dependencies: + "@npmcli/promise-spawn" "^1.2.0" + infer-owner "^1.0.4" + node-gyp "^6.1.0" + read-package-json-fast "^1.1.3" + "@octokit/auth-token@^2.4.0": version "2.4.0" resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.0.tgz#b64178975218b99e4dfe948253f0673cbbb59d9f" @@ -2042,9 +2065,9 @@ universal-user-agent "^4.0.0" "@octokit/types@^2.0.0", "@octokit/types@^2.0.1", "@octokit/types@^2.11.1": - version "2.12.1" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.12.1.tgz#4a26b4a85ec121043d3b0745b5798f9d8fd968ca" - integrity sha512-LRLR1tjbcCfAmUElvTmMvLEzstpx6Xt/aQVTg2xvd+kHA2Ekp1eWl5t+gU7bcwjXHYEAzh4hH4WH+kS3vh+wRw== + version "2.12.2" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.12.2.tgz#e9fbffa294adb54140946d436da9f73bc94b169c" + integrity sha512-1GHLI/Jll3j6F0GbYyZPFTcHZMGjAiRfkTEoRUyaVVk2IWbDdwEiClAJvXzfXCDayuGSNCqAUH8lpjZtqW9GDw== dependencies: "@types/node" ">= 8" @@ -2106,9 +2129,9 @@ "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.0.10" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.10.tgz#d9a99f017317d9b3d1abc2ced45d3bca68df0daf" - integrity sha512-74fNdUGrWsgIB/V9kTO5FGHPWYY6Eqn+3Z7L6Hc4e/BxjYV7puvBqp5HwsVYYfLm6iURYBNCx4Ut37OF9yitCw== + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.11.tgz#1ae3010e8bf8851d324878b42acec71986486d18" + integrity sha512-ddHK5icION5U6q11+tV2f9Mo6CZVuT8GJKld2q9LqHSZbvLbH34Kcu2yFGckZut453+eQU6btIA3RihmnRgI+Q== dependencies: "@babel/types" "^7.3.0" @@ -2184,9 +2207,9 @@ integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== "@types/node@*", "@types/node@>= 8": - version "13.13.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.2.tgz#160d82623610db590a64e8ca81784e11117e5a54" - integrity sha512-LB2R1Oyhpg8gu4SON/mfforE525+Hi/M1ineICEDftqNVTyFg1aRIeGuTvXAoWHc4nbrFncWtJgMmoyRvuGh7A== + version "13.13.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.4.tgz#1581d6c16e3d4803eb079c87d4ac893ee7501c2c" + integrity sha512-x26ur3dSXgv5AwKS0lNfbjpCakGIduWU1DU91Zz58ONRWrIKGunmZBNv4P7N+e27sJkiGDsw/3fT4AtsqQBrBA== "@types/node@^12.12.31": version "12.12.37" @@ -2235,40 +2258,40 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^2.29.0": - version "2.29.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.29.0.tgz#c9efab7624e3dd6d144a0e4577a541d1bd42c2ac" - integrity sha512-X/YAY7azKirENm4QRpT7OVmzok02cSkqeIcLmdz6gXUQG4Hk0Fi9oBAynSAyNXeGdMRuZvjBa0c1Lu0dn/u6VA== +"@typescript-eslint/eslint-plugin@^2.30.0": + version "2.30.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.30.0.tgz#312a37e80542a764d96e8ad88a105316cdcd7b05" + integrity sha512-PGejii0qIZ9Q40RB2jIHyUpRWs1GJuHP1pkoCiaeicfwO9z7Fx03NQzupuyzAmv+q9/gFNHu7lo1ByMXe8PNyg== dependencies: - "@typescript-eslint/experimental-utils" "2.29.0" + "@typescript-eslint/experimental-utils" "2.30.0" functional-red-black-tree "^1.0.1" regexpp "^3.0.0" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@2.29.0", "@typescript-eslint/experimental-utils@^2.5.0": - version "2.29.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.29.0.tgz#3cb8060de9265ba131625a96bbfec31ba6d4a0fe" - integrity sha512-H/6VJr6eWYstyqjWXBP2Nn1hQJyvJoFdDtsHxGiD+lEP7piGnGpb/ZQd+z1ZSB1F7dN+WsxUDh8+S4LwI+f3jw== +"@typescript-eslint/experimental-utils@2.30.0", "@typescript-eslint/experimental-utils@^2.5.0": + version "2.30.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.30.0.tgz#9845e868c01f3aed66472c561d4b6bac44809dd0" + integrity sha512-L3/tS9t+hAHksy8xuorhOzhdefN0ERPDWmR9CclsIGOUqGKy6tqc/P+SoXeJRye5gazkuPO0cK9MQRnolykzkA== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.29.0" + "@typescript-eslint/typescript-estree" "2.30.0" eslint-scope "^5.0.0" eslint-utils "^2.0.0" -"@typescript-eslint/parser@^2.29.0": - version "2.29.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.29.0.tgz#6e3c4e21ed6393dc05b9d8b47f0b7e731ef21c9c" - integrity sha512-H78M+jcu5Tf6m/5N8iiFblUUv+HJDguMSdFfzwa6vSg9lKR8Mk9BsgeSjO8l2EshKnJKcbv0e8IDDOvSNjl0EA== +"@typescript-eslint/parser@^2.30.0": + version "2.30.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.30.0.tgz#7681c305a6f4341ae2579f5e3a75846c29eee9ce" + integrity sha512-9kDOxzp0K85UnpmPJqUzdWaCNorYYgk1yZmf4IKzpeTlSAclnFsrLjfwD9mQExctLoLoGAUXq1co+fbr+3HeFw== dependencies: "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.29.0" - "@typescript-eslint/typescript-estree" "2.29.0" + "@typescript-eslint/experimental-utils" "2.30.0" + "@typescript-eslint/typescript-estree" "2.30.0" eslint-visitor-keys "^1.1.0" -"@typescript-eslint/typescript-estree@2.29.0": - version "2.29.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.29.0.tgz#1be6612bb02fc37ac9f466521c1459a4744e8d3a" - integrity sha512-3YGbtnWy4az16Egy5Fj5CckkVlpIh0MADtAQza+jiMADRSKkjdpzZp/5WuvwK/Qib3Z0HtzrDFeWanS99dNhnA== +"@typescript-eslint/typescript-estree@2.30.0": + version "2.30.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.30.0.tgz#1b8e848b55144270255ffbfe4c63291f8f766615" + integrity sha512-nI5WOechrA0qAhnr+DzqwmqHsx7Ulr/+0H7bWCcClDhhWkSyZR5BmTvnBEyONwJCTWHfc5PAQExX24VD26IAVw== dependencies: debug "^4.1.1" eslint-visitor-keys "^1.1.0" @@ -2385,9 +2408,9 @@ agentkeepalive@^3.4.1: humanize-ms "^1.2.1" agentkeepalive@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.1.0.tgz#a48e040ed16745dd29ce923675f60c9c90f39ee0" - integrity sha512-CW/n1wxF8RpEuuiq6Vbn9S8m0VSYDMnZESqaJ6F2cWN9fY8rei2qaxweIaRgq+ek8TqfoFIsUjaGNKGGEHElSg== + version "4.1.2" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.1.2.tgz#d7bc3bafd7ea88032f6be22b6f1389b3d42c9c91" + integrity sha512-waNHE7tQBBn+2qXucI8HY0o2Y0OBPWldWOWsZwY71JcCm4SvrPnWdceFfB5NIXSqE8Ewq6VR/Qt5b1i69P6KCQ== dependencies: debug "^4.1.0" depd "^1.1.2" @@ -2428,12 +2451,17 @@ ansi-align@^3.0.0: dependencies: string-width "^3.0.0" -ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: +ansi-colors@^3.2.1: + version "3.2.4" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== + +ansi-escapes@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== -ansi-escapes@^4.2.1: +ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: version "4.3.1" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== @@ -2615,6 +2643,11 @@ astral-regex@^1.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + async@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/async/-/async-3.2.0.tgz#b3a2685c5ebb641d3de02d161002c60fc9f85720" @@ -2650,17 +2683,18 @@ axe-core@^3.5.3: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-3.5.3.tgz#5b7c0ee7c5197d546bd3a07c3ef701896f5773e9" integrity sha512-HZpLE7xu05+8AbpqXITGdxp1Xwk8ysAXrg7MiKRY27py3DAyEJpoJQo1727pWF3F+O79V3r+cTWhOzfB49P89w== -babel-jest@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-25.4.0.tgz#409eb3e2ddc2ad9a92afdbb00991f1633f8018d0" - integrity sha512-p+epx4K0ypmHuCnd8BapfyOwWwosNCYhedetQey1awddtfmEX0MmdxctGl956uwUmjwXR5VSS5xJcGX9DvdIog== +babel-jest@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-25.5.0.tgz#a310e74f76585cf24d526ed477e56ee83bce86c4" + integrity sha512-8AfVNU7MEMsa+MjbY/CmwrGuQdplZ/+GkeWJDpRPm4C4wJZf937Pd9KgWU3NbnWEcYvIiqR15wy0U6C028kTWw== dependencies: - "@jest/transform" "^25.4.0" - "@jest/types" "^25.4.0" + "@jest/transform" "^25.5.0" + "@jest/types" "^25.5.0" "@types/babel__core" "^7.1.7" babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^25.4.0" + babel-preset-jest "^25.5.0" chalk "^3.0.0" + graceful-fs "^4.2.4" slash "^3.0.0" babel-plugin-dynamic-import-node@^2.3.0: @@ -2681,11 +2715,13 @@ babel-plugin-istanbul@^6.0.0: istanbul-lib-instrument "^4.0.0" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.4.0.tgz#0c122c1b93fb76f52d2465be2e8069e798e9d442" - integrity sha512-M3a10JCtTyKevb0MjuH6tU+cP/NVQZ82QPADqI1RQYY1OphztsCeIeQmTsHmF/NS6m0E51Zl4QNsI3odXSQF5w== +babel-plugin-jest-hoist@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.5.0.tgz#129c80ba5c7fc75baf3a45b93e2e372d57ca2677" + integrity sha512-u+/W+WAjMlvoocYGTwthAiQSxDcJAyHpQ6oWlHdFZaaN+Rlk8Q7iiwDPg2lN/FyJtAYnKjFxbn7xus4HCFkg5g== dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" "@types/babel__traverse" "^7.0.6" babel-polyfill@6.26.0: @@ -2713,12 +2749,12 @@ babel-preset-current-node-syntax@^0.1.2: "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -babel-preset-jest@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-25.4.0.tgz#10037cc32b751b994b260964629e49dc479abf4c" - integrity sha512-PwFiEWflHdu3JCeTr0Pb9NcHHE34qWFnPQRVPvqQITx4CsDCzs6o05923I10XvLvn9nNsRHuiVgB72wG/90ZHQ== +babel-preset-jest@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-25.5.0.tgz#c1d7f191829487a907764c65307faa0e66590b49" + integrity sha512-8ZczygctQkBU+63DtSOKGh7tFL0CeCuz+1ieud9lJ1WPQ9O6A1a/r+LGn6Y705PA6whHQ3T1XuB/PmpfNYf8Fw== dependencies: - babel-plugin-jest-hoist "^25.4.0" + babel-plugin-jest-hoist "^25.5.0" babel-preset-current-node-syntax "^0.1.2" babel-runtime@^6.23.0, babel-runtime@^6.26.0: @@ -2894,12 +2930,12 @@ cacache@^12.0.0, cacache@^12.0.3: unique-filename "^1.1.1" y18n "^4.0.0" -cacache@^15.0.0: - version "15.0.0" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.0.tgz#133b59edbd2a37ea8ef2d54964c6f247e47e5059" - integrity sha512-L0JpXHhplbJSiDGzyJJnJCTL7er7NzbBgxzVqLswEb4bO91Zbv17OUMuUeu/q0ZwKn3V+1HM4wb9tO4eVE/K8g== +cacache@^15.0.0, cacache@^15.0.3: + version "15.0.3" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.3.tgz#2225c2d1dd8e872339950d6a39c051e0e9334392" + integrity sha512-bc3jKYjqv7k4pWh7I/ixIjfcjPul4V4jme/WbjvwGS5LzoPL/GzXr4C5EgPNLO/QEZl9Oi61iGitYEdwcrwLCQ== dependencies: - chownr "^1.1.2" + chownr "^2.0.0" fs-minipass "^2.0.0" glob "^7.1.4" infer-owner "^1.0.4" @@ -2909,12 +2945,12 @@ cacache@^15.0.0: minipass-flush "^1.0.5" minipass-pipeline "^1.2.2" mkdirp "^1.0.3" - move-concurrently "^1.0.1" - p-map "^3.0.0" + move-file "^2.0.0" + p-map "^4.0.0" promise-inflight "^1.0.1" - rimraf "^2.7.1" + rimraf "^3.0.2" ssri "^8.0.0" - tar "^6.0.1" + tar "^6.0.2" unique-filename "^1.1.1" cache-base@^1.0.1: @@ -3012,9 +3048,9 @@ camelcase@^5.0.0, camelcase@^5.3.1: integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== caniuse-lite@^1.0.30001043: - version "1.0.30001046" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001046.tgz#7a06d3e8fd8aa7f4d21c9a2e313f35f2d06b013e" - integrity sha512-CsGjBRYWG6FvgbyGy+hBbaezpwiqIOLkxQPY4A4Ea49g1eNsnQuESB+n4QM0BKii1j80MyJ26Ir5ywTQkbRE4g== + version "1.0.30001048" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001048.tgz#4bb4f1bc2eb304e5e1154da80b93dee3f1cf447e" + integrity sha512-g1iSHKVxornw0K8LG9LLdf+Fxnv7T1Z+mMsf0/YYLclQX4Cd522Ap0Lrw6NFqHgezit78dtyWxzlV2Xfc7vgRg== capture-exit@^2.0.0: version "2.0.0" @@ -3037,7 +3073,7 @@ chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.1, chalk@^2.4. escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: +chalk@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= @@ -3099,11 +3135,16 @@ chokidar@^3.1.1: optionalDependencies: fsevents "~2.1.2" -chownr@^1.1.1, chownr@^1.1.2, chownr@^1.1.3, chownr@^1.1.4: +chownr@^1.1.1, chownr@^1.1.2: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" @@ -3134,7 +3175,7 @@ cli-boxes@^2.2.0: resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.0.tgz#538ecae8f9c6ca508e3c3c95b453fe93cb4c168d" integrity sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w== -cli-cursor@^2.0.0, cli-cursor@^2.1.0: +cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= @@ -3155,13 +3196,13 @@ cli-table@^0.3.1: dependencies: colors "1.0.3" -cli-truncate@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" - integrity sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ= +cli-truncate@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" + integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== dependencies: - slice-ansi "0.0.4" - string-width "^1.0.1" + slice-ansi "^3.0.0" + string-width "^4.2.0" cli-width@^2.0.0: version "2.2.1" @@ -3285,9 +3326,9 @@ commander@^2.20.3, commander@~2.20.3: integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== commander@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-5.0.0.tgz#dbf1909b49e5044f8fdaf0adc809f0c0722bdfd0" - integrity sha512-JrDGPAKjMGSP1G0DUoaceEJ3DZgAfr/q6X7FVk4+U5KxUSKviYGM2k6zWkfyyBHy5rAtzgYJFa1ro2O9PtoxwQ== + version "5.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" + integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== comment-json@^1.1.3: version "1.1.3" @@ -3845,9 +3886,9 @@ cspell-dict-scala@^1.0.11: configstore "^5.0.0" cspell-dict-software-terms@^1.0.7: - version "1.0.8" - resolved "https://registry.yarnpkg.com/cspell-dict-software-terms/-/cspell-dict-software-terms-1.0.8.tgz#14ac832dc3ca1c5ac15ff51ba0f85e5c5111019d" - integrity sha512-a8JkYf1pG5xUTKRPFp+7t4Gn7fhH9M5E94LXVuPPSQrns18pE0DGV0OEK/VbZUagsyRaDaHiZFqedIQ83M2Mpw== + version "1.0.9" + resolved "https://registry.yarnpkg.com/cspell-dict-software-terms/-/cspell-dict-software-terms-1.0.9.tgz#76d10575c6ef34bc040bad44fe95b68f862d6d96" + integrity sha512-SfnuDuT9Xae6cri/xfGqHQcgO7QBJ08LBeR+w0RIhGZSHoITiz6iCMnd3kdeQqst7c1FwkJ5s6m+zhlmQvDE9g== dependencies: configstore "^5.0.0" @@ -4015,11 +4056,6 @@ data-urls@^2.0.0: whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" -date-fns@^1.27.2: - version "1.30.1" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" - integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== - dateformat@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" @@ -4280,14 +4316,14 @@ ecc-jsbn@~0.1.1: safer-buffer "^2.1.0" electron-to-chromium@^1.3.413: - version "1.3.415" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.415.tgz#e50241c1e2553e46cfe956c9d95f9ab3fc9a9134" - integrity sha512-GbtYqKffx3sU8G0HxwXuJFfs58Q7+iwLa5rBwaULwET6jWW8IAQSrVnu7vEfiUIcMVfbYyFg7cw3zdm+EbBJmw== + version "1.3.421" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.421.tgz#4abfe7e49070b5b437ec2ce442543add8eb66800" + integrity sha512-ogxgmvHGfDuLA+GtgfK0jkFWlBb4MCZK2U1MM+l98sf4U3Ixtrfw1iC9w4mQqNvo+lHgM4pR62TqoT4QrvKJCw== -elegant-spinner@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" - integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= +elegant-spinner@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-2.0.0.tgz#f236378985ecd16da75488d166be4b688fd5af94" + integrity sha512-5YRYHhvhYzV/FC4AiMdeSIg3jAYGq9xFvbhZMpPlJoBsfYgrw2DSCYeXfat6tYBu45PWiyRr3+flaCPPmviPaA== emoji-regex@^7.0.1: version "7.0.3" @@ -4313,15 +4349,22 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: dependencies: once "^1.4.0" +enquirer@^2.3.4: + version "2.3.5" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.5.tgz#3ab2b838df0a9d8ab9e7dff235b0e8712ef92381" + integrity sha512-BNT1C08P9XD0vNg3J475yIUG+mVdp9T6towYFHUv897X0KoHBjB1shyrNmhmtHWKP17iSWgo7Gqh7BBuzLZMSA== + dependencies: + ansi-colors "^3.2.1" + env-paths@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43" integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA== envinfo@^7.3.1: - version "7.5.0" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.5.0.tgz#91410bb6db262fb4f1409bd506e9ff57e91023f4" - integrity sha512-jDgnJaF/Btomk+m3PZDTTCb5XIIIX3zYItnCRfF73zVgvinLoRomuhi75Y4su0PtQxWz4v66XnLLckyvyJTOIQ== + version "7.5.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.5.1.tgz#93c26897225a00457c75e734d354ea9106a72236" + integrity sha512-hQBkDf2iO4Nv0CNHpCuSBeaSrveU6nThVxFGTrq/eDlV716UQk09zChaJae4mZRsos1x4YLY2TaH3LHUae3ZmQ== err-code@^1.0.0: version "1.1.2" @@ -4424,10 +4467,10 @@ eslint-plugin-markdown@^2.0.0-alpha.0: remark-parse "^5.0.0" unified "^6.1.2" -eslint-plugin-notice@^0.8.10: - version "0.8.10" - resolved "https://registry.yarnpkg.com/eslint-plugin-notice/-/eslint-plugin-notice-0.8.10.tgz#a9307cf42ab38c4e548e45197d4f98aaeea6b15b" - integrity sha512-vtUZ3FMt+SJ/2THV6mgtYS3a5Xe0EiASnSY948Z53uOhpUFYCVNyTIOSd1zDGWYe0J4L1shZevMlgPlkYJ34vw== +eslint-plugin-notice@^0.9.10: + version "0.9.10" + resolved "https://registry.yarnpkg.com/eslint-plugin-notice/-/eslint-plugin-notice-0.9.10.tgz#89cf6377bf1c004a219c4e541321ea9125b408c8" + integrity sha512-rF79EuqdJKu9hhTmwUkNeSvLmmq03m/NXq/NHwUENHbdJ0wtoyOjxZBhW4QCug8v5xYE6cGe3AWkGqSIe9KUbQ== dependencies: find-root "^1.1.0" lodash "^4.17.15" @@ -4678,16 +4721,16 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" -expect@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-25.4.0.tgz#0b16c17401906d1679d173e59f0d4580b22f8dc8" - integrity sha512-7BDIX99BTi12/sNGJXA9KMRcby4iAmu1xccBOhyKCyEhjcVKS3hPmHdA/4nSI9QGIOkUropKqr3vv7WMDM5lvQ== +expect@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-25.5.0.tgz#f07f848712a2813bb59167da3fb828ca21f58bba" + integrity sha512-w7KAXo0+6qqZZhovCaBVPSIqQp7/UTcx4M9uKt2m6pd2VB1voyC8JizLRqeEqud3AAVP02g+hbErDu5gu64tlA== dependencies: - "@jest/types" "^25.4.0" + "@jest/types" "^25.5.0" ansi-styles "^4.0.0" jest-get-type "^25.2.6" - jest-matcher-utils "^25.4.0" - jest-message-util "^25.4.0" + jest-matcher-utils "^25.5.0" + jest-message-util "^25.5.0" jest-regex-util "^25.2.6" extend-shallow@^2.0.1: @@ -4792,14 +4835,6 @@ figgy-pudding@^3.4.1, figgy-pudding@^3.5.1: resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== -figures@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" - integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= - dependencies: - escape-string-regexp "^1.0.5" - object-assign "^4.1.0" - figures@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" @@ -4807,7 +4842,7 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" -figures@^3.0.0: +figures@^3.0.0, figures@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== @@ -5297,10 +5332,10 @@ got@^9.6.0: to-readable-stream "^1.0.0" url-parse-lax "^3.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" - integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== growly@^1.3.0: version "1.3.0" @@ -5930,13 +5965,6 @@ is-obj@^2.0.0: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== -is-observable@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e" - integrity sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA== - dependencies: - symbol-observable "^1.1.0" - is-path-inside@^3.0.1: version "3.0.2" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" @@ -5966,11 +5994,6 @@ is-potential-custom-element-name@^1.0.0: resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= -is-promise@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" - integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= - is-regex@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" @@ -6144,67 +6167,69 @@ iterable-to-stream@^1.0.1: resolved "https://registry.yarnpkg.com/iterable-to-stream/-/iterable-to-stream-1.0.1.tgz#37e86baacf6b1a0e9233dad4eb526d0423d08bf3" integrity sha512-O62gD5ADMUGtJoOoM9U6LQ7i4byPXUNoHJ6mqsmkQJcom331ZJGDApWgDESWyBMEHEJRjtHozgIiTzYo9RU4UA== -jest-changed-files@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-25.4.0.tgz#e573db32c2fd47d2b90357ea2eda0622c5c5cbd6" - integrity sha512-VR/rfJsEs4BVMkwOTuStRyS630fidFVekdw/lBaBQjx9KK3VZFOZ2c0fsom2fRp8pMCrCTP6LGna00o/DXGlqA== +jest-changed-files@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-25.5.0.tgz#141cc23567ceb3f534526f8614ba39421383634c" + integrity sha512-EOw9QEqapsDT7mKF162m8HFzRPbmP8qJQny6ldVOdOVBz3ACgPm/1nAn5fPQ/NDaYhX/AHkrGwwkCncpAVSXcw== dependencies: - "@jest/types" "^25.4.0" + "@jest/types" "^25.5.0" execa "^3.2.0" throat "^5.0.0" -jest-cli@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-25.4.0.tgz#5dac8be0fece6ce39f0d671395a61d1357322bab" - integrity sha512-usyrj1lzCJZMRN1r3QEdnn8e6E6yCx/QN7+B1sLoA68V7f3WlsxSSQfy0+BAwRiF4Hz2eHauf11GZG3PIfWTXQ== +jest-cli@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-25.5.0.tgz#91d96af92804ffedd5c159a7adb01321ee778049" + integrity sha512-zcUtEL1wD7BO7ehhwb7KodGS//B5dqgEIrmO3zY4xOjMnS7MMs06yzndvlDqzJqMylIkeOr1A3ToGYWFbBNSmQ== dependencies: - "@jest/core" "^25.4.0" - "@jest/test-result" "^25.4.0" - "@jest/types" "^25.4.0" + "@jest/core" "^25.5.0" + "@jest/test-result" "^25.5.0" + "@jest/types" "^25.5.0" chalk "^3.0.0" exit "^0.1.2" + graceful-fs "^4.2.4" import-local "^3.0.2" is-ci "^2.0.0" - jest-config "^25.4.0" - jest-util "^25.4.0" - jest-validate "^25.4.0" + jest-config "^25.5.0" + jest-util "^25.5.0" + jest-validate "^25.5.0" prompts "^2.0.1" realpath-native "^2.0.0" yargs "^15.3.1" -jest-config@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-25.4.0.tgz#56e5df3679a96ff132114b44fb147389c8c0a774" - integrity sha512-egT9aKYxMyMSQV1aqTgam0SkI5/I2P9qrKexN5r2uuM2+68ypnc+zPGmfUxK7p1UhE7dYH9SLBS7yb+TtmT1AA== +jest-config@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-25.5.0.tgz#6cc56bb8a72a1c1f36ed2d78668e810c844d7af5" + integrity sha512-ucmAX+AdcQAQCOnXOsefYygtFCdfkU7/pUdO+etV0JSgvO6WWnu/bWQLbff3SMw/gZLGl/t3S5Ts7Ct7Pejlwg== dependencies: "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^25.4.0" - "@jest/types" "^25.4.0" - babel-jest "^25.4.0" + "@jest/test-sequencer" "^25.5.0" + "@jest/types" "^25.5.0" + babel-jest "^25.5.0" chalk "^3.0.0" deepmerge "^4.2.2" glob "^7.1.1" - jest-environment-jsdom "^25.4.0" - jest-environment-node "^25.4.0" + graceful-fs "^4.2.4" + jest-environment-jsdom "^25.5.0" + jest-environment-node "^25.5.0" jest-get-type "^25.2.6" - jest-jasmine2 "^25.4.0" + jest-jasmine2 "^25.5.0" jest-regex-util "^25.2.6" - jest-resolve "^25.4.0" - jest-util "^25.4.0" - jest-validate "^25.4.0" + jest-resolve "^25.5.0" + jest-util "^25.5.0" + jest-validate "^25.5.0" micromatch "^4.0.2" - pretty-format "^25.4.0" + pretty-format "^25.5.0" realpath-native "^2.0.0" -jest-diff@^25.2.1, jest-diff@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.4.0.tgz#260b70f19a46c283adcad7f081cae71eb784a634" - integrity sha512-kklLbJVXW0y8UKOWOdYhI6TH5MG6QAxrWiBMgQaPIuhj3dNFGirKCd+/xfplBXICQ7fI+3QcqHm9p9lWu1N6ug== +jest-diff@^25.2.1, jest-diff@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.5.0.tgz#1dd26ed64f96667c068cef026b677dfa01afcfa9" + integrity sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A== dependencies: chalk "^3.0.0" diff-sequences "^25.2.6" jest-get-type "^25.2.6" - pretty-format "^25.4.0" + pretty-format "^25.5.0" jest-docblock@^25.3.0: version "25.3.0" @@ -6213,39 +6238,39 @@ jest-docblock@^25.3.0: dependencies: detect-newline "^3.0.0" -jest-each@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-25.4.0.tgz#ad4e46164764e8e77058f169a0076a7f86f6b7d4" - integrity sha512-lwRIJ8/vQU/6vq3nnSSUw1Y3nz5tkYSFIywGCZpUBd6WcRgpn8NmJoQICojbpZmsJOJNHm0BKdyuJ6Xdx+eDQQ== +jest-each@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-25.5.0.tgz#0c3c2797e8225cb7bec7e4d249dcd96b934be516" + integrity sha512-QBogUxna3D8vtiItvn54xXde7+vuzqRrEeaw8r1s+1TG9eZLVJE5ZkKoSUlqFwRjnlaA4hyKGiu9OlkFIuKnjA== dependencies: - "@jest/types" "^25.4.0" + "@jest/types" "^25.5.0" chalk "^3.0.0" jest-get-type "^25.2.6" - jest-util "^25.4.0" - pretty-format "^25.4.0" - -jest-environment-jsdom@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-25.4.0.tgz#bbfc7f85bb6ade99089062a830c79cb454565cf0" - integrity sha512-KTitVGMDrn2+pt7aZ8/yUTuS333w3pWt1Mf88vMntw7ZSBNDkRS6/4XLbFpWXYfWfp1FjcjQTOKzbK20oIehWQ== - dependencies: - "@jest/environment" "^25.4.0" - "@jest/fake-timers" "^25.4.0" - "@jest/types" "^25.4.0" - jest-mock "^25.4.0" - jest-util "^25.4.0" + jest-util "^25.5.0" + pretty-format "^25.5.0" + +jest-environment-jsdom@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-25.5.0.tgz#dcbe4da2ea997707997040ecf6e2560aec4e9834" + integrity sha512-7Jr02ydaq4jaWMZLY+Skn8wL5nVIYpWvmeatOHL3tOcV3Zw8sjnPpx+ZdeBfc457p8jCR9J6YCc+Lga0oIy62A== + dependencies: + "@jest/environment" "^25.5.0" + "@jest/fake-timers" "^25.5.0" + "@jest/types" "^25.5.0" + jest-mock "^25.5.0" + jest-util "^25.5.0" jsdom "^15.2.1" -jest-environment-node@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-25.4.0.tgz#188aef01ae6418e001c03fdd1c299961e1439082" - integrity sha512-wryZ18vsxEAKFH7Z74zi/y/SyI1j6UkVZ6QsllBuT/bWlahNfQjLNwFsgh/5u7O957dYFoXj4yfma4n4X6kU9A== +jest-environment-node@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-25.5.0.tgz#0f55270d94804902988e64adca37c6ce0f7d07a1" + integrity sha512-iuxK6rQR2En9EID+2k+IBs5fCFd919gVVK5BeND82fYeLWPqvRcFNPKu9+gxTwfB5XwBGBvZ0HFQa+cHtIoslA== dependencies: - "@jest/environment" "^25.4.0" - "@jest/fake-timers" "^25.4.0" - "@jest/types" "^25.4.0" - jest-mock "^25.4.0" - jest-util "^25.4.0" + "@jest/environment" "^25.5.0" + "@jest/fake-timers" "^25.5.0" + "@jest/types" "^25.5.0" + jest-mock "^25.5.0" + jest-util "^25.5.0" semver "^6.3.0" jest-get-type@^25.2.6: @@ -6253,18 +6278,18 @@ jest-get-type@^25.2.6: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== -jest-haste-map@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-25.4.0.tgz#da7c309dd7071e0a80c953ba10a0ec397efb1ae2" - integrity sha512-5EoCe1gXfGC7jmXbKzqxESrgRcaO3SzWXGCnvp9BcT0CFMyrB1Q6LIsjl9RmvmJGQgW297TCfrdgiy574Rl9HQ== +jest-haste-map@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-25.5.0.tgz#5cb0fb5a2887f1dcfe578aade20979afd500179d" + integrity sha512-GTyTQ7tvWRUNUZKDl6DBUDJdrhXClcJ7Y0NdoRBJbOmN1KbrZIjSEmcoTgaOLOL+VwvLWhgphMR7HJ9Ywtp76Q== dependencies: - "@jest/types" "^25.4.0" + "@jest/types" "^25.5.0" anymatch "^3.0.3" fb-watchman "^2.0.0" - graceful-fs "^4.2.3" - jest-serializer "^25.2.6" - jest-util "^25.4.0" - jest-worker "^25.4.0" + graceful-fs "^4.2.4" + jest-serializer "^25.5.0" + jest-util "^25.5.0" + jest-worker "^25.5.0" micromatch "^4.0.2" sane "^4.0.3" walker "^1.0.7" @@ -6272,66 +6297,67 @@ jest-haste-map@^25.4.0: optionalDependencies: fsevents "^2.1.2" -jest-jasmine2@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-25.4.0.tgz#3d3d19514022e2326e836c2b66d68b4cb63c5861" - integrity sha512-QccxnozujVKYNEhMQ1vREiz859fPN/XklOzfQjm2j9IGytAkUbSwjFRBtQbHaNZ88cItMpw02JnHGsIdfdpwxQ== +jest-jasmine2@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-25.5.0.tgz#55f5a0a264a200bc8b9fa21a5e909dbc2befd084" + integrity sha512-e66pVthiFQairNJddx7xoENQV9q3H8pNFj4SlCRb2/hi/ztVeO7RY3h41jpL/OZ5R4ewar36quJebL16jNoliQ== dependencies: "@babel/traverse" "^7.1.0" - "@jest/environment" "^25.4.0" - "@jest/source-map" "^25.2.6" - "@jest/test-result" "^25.4.0" - "@jest/types" "^25.4.0" + "@jest/environment" "^25.5.0" + "@jest/source-map" "^25.5.0" + "@jest/test-result" "^25.5.0" + "@jest/types" "^25.5.0" chalk "^3.0.0" co "^4.6.0" - expect "^25.4.0" + expect "^25.5.0" is-generator-fn "^2.0.0" - jest-each "^25.4.0" - jest-matcher-utils "^25.4.0" - jest-message-util "^25.4.0" - jest-runtime "^25.4.0" - jest-snapshot "^25.4.0" - jest-util "^25.4.0" - pretty-format "^25.4.0" + jest-each "^25.5.0" + jest-matcher-utils "^25.5.0" + jest-message-util "^25.5.0" + jest-runtime "^25.5.0" + jest-snapshot "^25.5.0" + jest-util "^25.5.0" + pretty-format "^25.5.0" throat "^5.0.0" -jest-leak-detector@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-25.4.0.tgz#cf94a160c78e53d810e7b2f40b5fd7ee263375b3" - integrity sha512-7Y6Bqfv2xWsB+7w44dvZuLs5SQ//fzhETgOGG7Gq3TTGFdYvAgXGwV8z159RFZ6fXiCPm/szQ90CyfVos9JIFQ== +jest-leak-detector@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-25.5.0.tgz#2291c6294b0ce404241bb56fe60e2d0c3e34f0bb" + integrity sha512-rV7JdLsanS8OkdDpZtgBf61L5xZ4NnYLBq72r6ldxahJWWczZjXawRsoHyXzibM5ed7C2QRjpp6ypgwGdKyoVA== dependencies: jest-get-type "^25.2.6" - pretty-format "^25.4.0" + pretty-format "^25.5.0" -jest-matcher-utils@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-25.4.0.tgz#dc3e7aec402a1e567ed80b572b9ad285878895e6" - integrity sha512-yPMdtj7YDgXhnGbc66bowk8AkQ0YwClbbwk3Kzhn5GVDrciiCr27U4NJRbrqXbTdtxjImONITg2LiRIw650k5A== +jest-matcher-utils@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-25.5.0.tgz#fbc98a12d730e5d2453d7f1ed4a4d948e34b7867" + integrity sha512-VWI269+9JS5cpndnpCwm7dy7JtGQT30UHfrnM3mXl22gHGt/b7NkjBqXfbhZ8V4B7ANUsjK18PlSBmG0YH7gjw== dependencies: chalk "^3.0.0" - jest-diff "^25.4.0" + jest-diff "^25.5.0" jest-get-type "^25.2.6" - pretty-format "^25.4.0" + pretty-format "^25.5.0" -jest-message-util@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-25.4.0.tgz#2899e8bc43f5317acf8dfdfe89ea237d354fcdab" - integrity sha512-LYY9hRcVGgMeMwmdfh9tTjeux1OjZHMusq/E5f3tJN+dAoVVkJtq5ZUEPIcB7bpxDUt2zjUsrwg0EGgPQ+OhXQ== +jest-message-util@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-25.5.0.tgz#ea11d93204cc7ae97456e1d8716251185b8880ea" + integrity sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA== dependencies: "@babel/code-frame" "^7.0.0" - "@jest/types" "^25.4.0" + "@jest/types" "^25.5.0" "@types/stack-utils" "^1.0.1" chalk "^3.0.0" + graceful-fs "^4.2.4" micromatch "^4.0.2" slash "^3.0.0" stack-utils "^1.0.1" -jest-mock@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-25.4.0.tgz#ded7d64b5328d81d78d2138c825d3a45e30ec8ca" - integrity sha512-MdazSfcYAUjJjuVTTnusLPzE0pE4VXpOUzWdj8sbM+q6abUjm3bATVPXFqTXrxSieR8ocpvQ9v/QaQCftioQFg== +jest-mock@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-25.5.0.tgz#a91a54dabd14e37ecd61665d6b6e06360a55387a" + integrity sha512-eXWuTV8mKzp/ovHc5+3USJMYsTBhyQ+5A1Mak35dey/RG8GlM4YWVylZuGgVXinaW6tpvk/RSecmF37FKUlpXA== dependencies: - "@jest/types" "^25.4.0" + "@jest/types" "^25.5.0" jest-pnp-resolver@^1.2.1: version "1.2.1" @@ -6343,160 +6369,166 @@ jest-regex-util@^25.2.6: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-25.2.6.tgz#d847d38ba15d2118d3b06390056028d0f2fd3964" integrity sha512-KQqf7a0NrtCkYmZZzodPftn7fL1cq3GQAFVMn5Hg8uKx/fIenLEobNanUxb7abQ1sjADHBseG/2FGpsv/wr+Qw== -jest-resolve-dependencies@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-25.4.0.tgz#783937544cfc40afcc7c569aa54748c4b3f83f5a" - integrity sha512-A0eoZXx6kLiuG1Ui7wITQPl04HwjLErKIJTt8GR3c7UoDAtzW84JtCrgrJ6Tkw6c6MwHEyAaLk7dEPml5pf48A== +jest-resolve-dependencies@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-25.5.0.tgz#d5e6ea2984aea22121f85a8cf5bcbdea35ae1d96" + integrity sha512-TXTYxNSfB9EBl1/bPUyC4gPCy+WI/DhTtePfWckvS9qworAhq9HJI1OBSoHFP5X2WeO/mx4rCfU3atWo+OH7IQ== dependencies: - "@jest/types" "^25.4.0" + "@jest/types" "^25.5.0" jest-regex-util "^25.2.6" - jest-snapshot "^25.4.0" + jest-snapshot "^25.5.0" -jest-resolve@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-25.4.0.tgz#6f4540ce0d419c4c720e791e871da32ba4da7a60" - integrity sha512-wOsKqVDFWUiv8BtLMCC6uAJ/pHZkfFgoBTgPtmYlsprAjkxrr2U++ZnB3l5ykBMd2O24lXvf30SMAjJIW6k2aA== +jest-resolve@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-25.5.0.tgz#0099a09857a68565429b17c973cfa4227f765015" + integrity sha512-quY4fdl64UwIGZhrbWgHCORC4xPgrM+UUzucYW0Oy1PjIUHgazVTji+XtW1iQRbsrJEpfs974L2oXX3QHaYBaA== dependencies: - "@jest/types" "^25.4.0" + "@jest/types" "^25.5.0" browser-resolve "^1.11.3" chalk "^3.0.0" + graceful-fs "^4.2.4" jest-pnp-resolver "^1.2.1" read-pkg-up "^7.0.1" realpath-native "^2.0.0" - resolve "^1.15.1" + resolve "^1.17.0" slash "^3.0.0" -jest-runner@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-25.4.0.tgz#6ca4a3d52e692bbc081228fa68f750012f1f29e5" - integrity sha512-wWQSbVgj2e/1chFdMRKZdvlmA6p1IPujhpLT7TKNtCSl1B0PGBGvJjCaiBal/twaU2yfk8VKezHWexM8IliBfA== +jest-runner@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-25.5.0.tgz#a32546675cbcf4e32086138f6c56c8423add6234" + integrity sha512-BJRbtZGe9V19Cv3ARFrpAfMHoHObUYLXNBKS4LTYBd85OJEp8DyFpxCG5g3AobrtmuMIvIbcNg4MvWlTtN3ODQ== dependencies: - "@jest/console" "^25.4.0" - "@jest/environment" "^25.4.0" - "@jest/test-result" "^25.4.0" - "@jest/types" "^25.4.0" + "@jest/console" "^25.5.0" + "@jest/environment" "^25.5.0" + "@jest/test-result" "^25.5.0" + "@jest/types" "^25.5.0" chalk "^3.0.0" exit "^0.1.2" - graceful-fs "^4.2.3" - jest-config "^25.4.0" + graceful-fs "^4.2.4" + jest-config "^25.5.0" jest-docblock "^25.3.0" - jest-haste-map "^25.4.0" - jest-jasmine2 "^25.4.0" - jest-leak-detector "^25.4.0" - jest-message-util "^25.4.0" - jest-resolve "^25.4.0" - jest-runtime "^25.4.0" - jest-util "^25.4.0" - jest-worker "^25.4.0" + jest-haste-map "^25.5.0" + jest-jasmine2 "^25.5.0" + jest-leak-detector "^25.5.0" + jest-message-util "^25.5.0" + jest-resolve "^25.5.0" + jest-runtime "^25.5.0" + jest-util "^25.5.0" + jest-worker "^25.5.0" source-map-support "^0.5.6" throat "^5.0.0" -jest-runtime@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-25.4.0.tgz#1e5227a9e2159d26ae27dcd426ca6bc041983439" - integrity sha512-lgNJlCDULtXu9FumnwCyWlOub8iytijwsPNa30BKrSNtgoT6NUMXOPrZvsH06U6v0wgD/Igwz13nKA2wEKU2VA== - dependencies: - "@jest/console" "^25.4.0" - "@jest/environment" "^25.4.0" - "@jest/source-map" "^25.2.6" - "@jest/test-result" "^25.4.0" - "@jest/transform" "^25.4.0" - "@jest/types" "^25.4.0" +jest-runtime@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-25.5.0.tgz#d1df2c601710974001f7095ab25c865ce5882cbc" + integrity sha512-s7TqawKRjaNaE82PjXxDYVhjrMQqjTiiY63N1jFcYtX2xtg05xsgCBk0ls6NMR3fy3AtvbPIQjD3FpssH01l6A== + dependencies: + "@jest/console" "^25.5.0" + "@jest/environment" "^25.5.0" + "@jest/globals" "^25.5.0" + "@jest/source-map" "^25.5.0" + "@jest/test-result" "^25.5.0" + "@jest/transform" "^25.5.0" + "@jest/types" "^25.5.0" "@types/yargs" "^15.0.0" chalk "^3.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.3" - graceful-fs "^4.2.3" - jest-config "^25.4.0" - jest-haste-map "^25.4.0" - jest-message-util "^25.4.0" - jest-mock "^25.4.0" + graceful-fs "^4.2.4" + jest-config "^25.5.0" + jest-haste-map "^25.5.0" + jest-message-util "^25.5.0" + jest-mock "^25.5.0" jest-regex-util "^25.2.6" - jest-resolve "^25.4.0" - jest-snapshot "^25.4.0" - jest-util "^25.4.0" - jest-validate "^25.4.0" + jest-resolve "^25.5.0" + jest-snapshot "^25.5.0" + jest-util "^25.5.0" + jest-validate "^25.5.0" realpath-native "^2.0.0" slash "^3.0.0" strip-bom "^4.0.0" yargs "^15.3.1" -jest-serializer@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-25.2.6.tgz#3bb4cc14fe0d8358489dbbefbb8a4e708ce039b7" - integrity sha512-RMVCfZsezQS2Ww4kB5HJTMaMJ0asmC0BHlnobQC6yEtxiFKIxohFA4QSXSabKwSggaNkqxn6Z2VwdFCjhUWuiQ== +jest-serializer@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-25.5.0.tgz#a993f484e769b4ed54e70e0efdb74007f503072b" + integrity sha512-LxD8fY1lByomEPflwur9o4e2a5twSQ7TaVNLlFUuToIdoJuBt8tzHfCsZ42Ok6LkKXWzFWf3AGmheuLAA7LcCA== + dependencies: + graceful-fs "^4.2.4" -jest-snapshot@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-25.4.0.tgz#e0b26375e2101413fd2ccb4278a5711b1922545c" - integrity sha512-J4CJ0X2SaGheYRZdLz9CRHn9jUknVmlks4UBeu270hPAvdsauFXOhx9SQP2JtRzhnR3cvro/9N9KP83/uvFfRg== +jest-snapshot@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-25.5.0.tgz#0344dc1b8a949aeffefa45075508bb6277ee07d1" + integrity sha512-DveG7ZRn6HEmpDxpZXXR/U5x/aKG5N88tdaB+CH0d5jpb9tuvLMZn8rGZeBiLPS0RCO5VIlu8HL/WtY6wMk0QA== dependencies: "@babel/types" "^7.0.0" - "@jest/types" "^25.4.0" + "@jest/types" "^25.5.0" "@types/prettier" "^1.19.0" chalk "^3.0.0" - expect "^25.4.0" - jest-diff "^25.4.0" + expect "^25.5.0" + graceful-fs "^4.2.4" + jest-diff "^25.5.0" jest-get-type "^25.2.6" - jest-matcher-utils "^25.4.0" - jest-message-util "^25.4.0" - jest-resolve "^25.4.0" + jest-matcher-utils "^25.5.0" + jest-message-util "^25.5.0" + jest-resolve "^25.5.0" make-dir "^3.0.0" natural-compare "^1.4.0" - pretty-format "^25.4.0" + pretty-format "^25.5.0" semver "^6.3.0" -jest-util@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-25.4.0.tgz#6a093d09d86d2b41ef583e5fe7dd3976346e1acd" - integrity sha512-WSZD59sBtAUjLv1hMeKbNZXmMcrLRWcYqpO8Dz8b4CeCTZpfNQw2q9uwrYAD+BbJoLJlu4ezVPwtAmM/9/SlZA== +jest-util@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-25.5.0.tgz#31c63b5d6e901274d264a4fec849230aa3fa35b0" + integrity sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA== dependencies: - "@jest/types" "^25.4.0" + "@jest/types" "^25.5.0" chalk "^3.0.0" + graceful-fs "^4.2.4" is-ci "^2.0.0" make-dir "^3.0.0" -jest-validate@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-25.4.0.tgz#2e177a93b716a137110eaf2768f3d9095abd3f38" - integrity sha512-hvjmes/EFVJSoeP1yOl8qR8mAtMR3ToBkZeXrD/ZS9VxRyWDqQ/E1C5ucMTeSmEOGLipvdlyipiGbHJ+R1MQ0g== +jest-validate@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-25.5.0.tgz#fb4c93f332c2e4cf70151a628e58a35e459a413a" + integrity sha512-okUFKqhZIpo3jDdtUXUZ2LxGUZJIlfdYBvZb1aczzxrlyMlqdnnws9MOxezoLGhSaFc2XYaHNReNQfj5zPIWyQ== dependencies: - "@jest/types" "^25.4.0" + "@jest/types" "^25.5.0" camelcase "^5.3.1" chalk "^3.0.0" jest-get-type "^25.2.6" leven "^3.1.0" - pretty-format "^25.4.0" + pretty-format "^25.5.0" -jest-watcher@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-25.4.0.tgz#63ec0cd5c83bb9c9d1ac95be7558dd61c995ff05" - integrity sha512-36IUfOSRELsKLB7k25j/wutx0aVuHFN6wO94gPNjQtQqFPa2rkOymmx9rM5EzbF3XBZZ2oqD9xbRVoYa2w86gw== +jest-watcher@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-25.5.0.tgz#d6110d101df98badebe435003956fd4a465e8456" + integrity sha512-XrSfJnVASEl+5+bb51V0Q7WQx65dTSk7NL4yDdVjPnRNpM0hG+ncFmDYJo9O8jaSRcAitVbuVawyXCRoxGrT5Q== dependencies: - "@jest/test-result" "^25.4.0" - "@jest/types" "^25.4.0" + "@jest/test-result" "^25.5.0" + "@jest/types" "^25.5.0" ansi-escapes "^4.2.1" chalk "^3.0.0" - jest-util "^25.4.0" + jest-util "^25.5.0" string-length "^3.1.0" -jest-worker@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.4.0.tgz#ee0e2ceee5a36ecddf5172d6d7e0ab00df157384" - integrity sha512-ghAs/1FtfYpMmYQ0AHqxV62XPvKdUDIBBApMZfly+E9JEmYh2K45G0R5dWxx986RN12pRCxsViwQVtGl+N4whw== +jest-worker@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1" + integrity sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw== dependencies: merge-stream "^2.0.0" supports-color "^7.0.0" -jest@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-25.4.0.tgz#fb96892c5c4e4a6b9bcb12068849cddf4c5f8cc7" - integrity sha512-XWipOheGB4wai5JfCYXd6vwsWNwM/dirjRoZgAa7H2wd8ODWbli2AiKjqG8AYhyx+8+5FBEdpO92VhGlBydzbw== +jest@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-25.5.0.tgz#60c1436335448edeae0eb008e152225d3c1d3617" + integrity sha512-wHCEcs3cyQmQfn2qNYoC/g51TGOE50F6dSsGNqgkkUHYDND29Cqe88FHDNXF04P7odYhkABxJ4Fe8kbig8R/8g== dependencies: - "@jest/core" "^25.4.0" + "@jest/core" "^25.5.0" import-local "^3.0.2" - jest-cli "^25.4.0" + jest-cli "^25.5.0" jju@^1.1.0, jju@~1.4.0: version "1.4.0" @@ -6789,10 +6821,10 @@ link-check@^4.5.0: ms "^2.1.2" request "^2.88.2" -lint-staged@^10.1.7: - version "10.1.7" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.1.7.tgz#b628f8b010083fe4e116d0af7949a32f1ea6b3a7" - integrity sha512-ZkK8t9Ep/AHuJQKV95izSa+DqotftGnSsNeEmCSqbQ6j4C4H0jDYhEZqVOGD1Q2Oe227igbqjMWycWyYbQtpoA== +lint-staged@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.2.0.tgz#e0356ab593ddc2cd4205d7f880c2205bb01f5e48" + integrity sha512-4Dw2XMtEOGpICl0wvicE5KT/eFlt/kmwMmpNS4v09I/ywRWuR5udbMWjdfZez24jE6r0bQmPpkLZ1+wUGE1S+w== dependencies: chalk "^4.0.0" commander "^5.0.0" @@ -6800,7 +6832,7 @@ lint-staged@^10.1.7: debug "^4.1.1" dedent "^0.7.0" execa "^4.0.0" - listr "^0.14.3" + listr2 "1.3.8" log-symbols "^3.0.0" micromatch "^4.0.2" normalize-path "^3.0.0" @@ -6808,49 +6840,25 @@ lint-staged@^10.1.7: string-argv "0.3.1" stringify-object "^3.3.0" -listr-silent-renderer@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" - integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4= - -listr-update-renderer@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz#4ea8368548a7b8aecb7e06d8c95cb45ae2ede6a2" - integrity sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA== - dependencies: - chalk "^1.1.3" - cli-truncate "^0.2.1" - elegant-spinner "^1.0.1" - figures "^1.7.0" - indent-string "^3.0.0" - log-symbols "^1.0.2" - log-update "^2.3.0" - strip-ansi "^3.0.1" - -listr-verbose-renderer@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz#f1132167535ea4c1261102b9f28dac7cba1e03db" - integrity sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw== - dependencies: - chalk "^2.4.1" - cli-cursor "^2.1.0" - date-fns "^1.27.2" - figures "^2.0.0" - -listr@^0.14.3: - version "0.14.3" - resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586" - integrity sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA== +listr2@1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-1.3.8.tgz#30924d79de1e936d8c40af54b6465cb814a9c828" + integrity sha512-iRDRVTgSDz44tBeBBg/35TQz4W+EZBWsDUq7hPpqeUHm7yLPNll0rkwW3lIX9cPAK7l+x95mGWLpxjqxftNfZA== dependencies: "@samverschueren/stream-to-observable" "^0.3.0" - is-observable "^1.1.0" - is-promise "^2.1.0" - is-stream "^1.1.0" - listr-silent-renderer "^1.1.1" - listr-update-renderer "^0.5.0" - listr-verbose-renderer "^0.5.0" - p-map "^2.0.0" + chalk "^3.0.0" + cli-cursor "^3.1.0" + cli-truncate "^2.1.0" + elegant-spinner "^2.0.0" + enquirer "^2.3.4" + figures "^3.2.0" + indent-string "^4.0.0" + log-update "^4.0.0" + p-map "^4.0.0" + pad "^3.2.0" rxjs "^6.3.3" + through "^2.3.8" + uuid "^7.0.2" load-json-file@^1.0.0: version "1.1.0" @@ -7011,13 +7019,6 @@ lodash@4.17.15, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17. resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== -log-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" - integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg= - dependencies: - chalk "^1.0.0" - log-symbols@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" @@ -7025,14 +7026,15 @@ log-symbols@^3.0.0: dependencies: chalk "^2.4.2" -log-update@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" - integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg= +log-update@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" + integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== dependencies: - ansi-escapes "^3.0.0" - cli-cursor "^2.0.0" - wrap-ansi "^3.0.1" + ansi-escapes "^4.3.0" + cli-cursor "^3.1.0" + slice-ansi "^4.0.0" + wrap-ansi "^6.2.0" lolex@^5.0.0: version "5.1.2" @@ -7296,17 +7298,17 @@ micromatch@^4.0.2: braces "^3.0.1" picomatch "^2.0.5" -mime-db@1.43.0: - version "1.43.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" - integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== +mime-db@1.44.0: + version "1.44.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" + integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== mime-types@^2.1.12, mime-types@~2.1.19: - version "2.1.26" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" - integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== + version "2.1.27" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" + integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== dependencies: - mime-db "1.43.0" + mime-db "1.44.0" mimic-fn@^1.0.0: version "1.2.0" @@ -7355,7 +7357,7 @@ minipass-collect@^1.0.2: dependencies: minipass "^3.0.0" -minipass-fetch@^1.1.2, minipass-fetch@^1.2.1: +minipass-fetch@^1.1.2: version "1.2.1" resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.2.1.tgz#1b97ecb559be56b09812d45b2e9509f1f59ece2f" integrity sha512-ssHt0dkljEDaKmTgQ04DQgx2ag6G2gMPxA5hpcsoeTbfDgRf2fC2gNSRc6kISjD7ckCpHwwQvXxuTBK8402fXg== @@ -7486,6 +7488,13 @@ move-concurrently@^1.0.1: rimraf "^2.5.4" run-queue "^1.0.3" +move-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/move-file/-/move-file-2.0.0.tgz#83ffa309b5d7f69d518b28e1333e2ffadf331e3e" + integrity sha512-cdkdhNCgbP5dvS4tlGxZbD+nloio9GIimP57EjqFhwLcMjnU+XJKAZzlmg/TN/AK1LuNAdTSvm3CPPP4Xkv0iQ== + dependencies: + path-exists "^4.0.0" + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -7601,6 +7610,23 @@ node-gyp@^5.0.2: tar "^4.4.12" which "^1.3.1" +node-gyp@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-6.1.0.tgz#64e31c61a4695ad304c1d5b82cf6b7c79cc79f3f" + integrity sha512-h4A2zDlOujeeaaTx06r4Vy+8MZ1679lU+wbCKDS4ZtvY2A37DESo37oejIw0mtmR3+rvNwts5B6Kpt1KrNYdNw== + dependencies: + env-paths "^2.2.0" + glob "^7.1.4" + graceful-fs "^4.2.2" + mkdirp "^0.5.1" + nopt "^4.0.1" + npmlog "^4.1.2" + request "^2.88.0" + rimraf "^2.6.3" + semver "^5.7.1" + tar "^4.4.12" + which "^1.3.1" + node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -8035,18 +8061,11 @@ p-map-series@^1.0.0: dependencies: p-reduce "^1.0.0" -p-map@^2.0.0, p-map@^2.1.0: +p-map@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== -p-map@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" - integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== - dependencies: - aggregate-error "^3.0.0" - p-map@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" @@ -8099,33 +8118,36 @@ package-json@^6.3.0: semver "^6.2.0" pacote@^11.1.4: - version "11.1.4" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-11.1.4.tgz#5529a453c59881b7f059da8af6903b0f79c124b2" - integrity sha512-eUGJvSSpWFZKn3z8gig/HgnBmUl6gIWByIIaHzSyEr3tOWX0w8tFEADXtpu8HGv5E0ShCeTP6enRq8iHKCHSvw== + version "11.1.6" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-11.1.6.tgz#8a9570e2553298baf2d7b9af28fd0fc6203d604b" + integrity sha512-0feWktUCz1DMBfSFYfEIr2C21+KpUmQcMA2AqmOQPMbv0NfLd7X7TiGFZWulVoVw8de15V9PMTtZkNji4aF7CQ== dependencies: "@npmcli/git" "^2.0.1" "@npmcli/installed-package-contents" "^1.0.5" "@npmcli/promise-spawn" "^1.1.0" - cacache "^15.0.0" - chownr "^1.1.4" + "@npmcli/run-script" "^1.3.0" + cacache "^15.0.3" + chownr "^2.0.0" fs-minipass "^2.1.0" infer-owner "^1.0.4" - lru-cache "^5.1.1" minipass "^3.0.1" - minipass-fetch "^1.2.1" mkdirp "^1.0.3" npm-package-arg "^8.0.1" npm-packlist "^2.1.0" npm-pick-manifest "^6.0.0" npm-registry-fetch "^8.0.0" - promise-inflight "^1.0.1" promise-retry "^1.1.1" read-package-json-fast "^1.1.3" - rimraf "^2.7.1" - semver "^7.1.3" + rimraf "^3.0.2" ssri "^8.0.0" tar "^6.0.1" - which "^2.0.2" + +pad@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/pad/-/pad-3.2.0.tgz#be7a1d1cb6757049b4ad5b70e71977158fea95d1" + integrity sha512-2u0TrjcGbOjBTJpyewEl4hBO3OeX5wWue7eIFPzQTg6wFSvoaHcBTTUY5m+n0hd04gmTCPuY0kCpVIVuw5etwg== + dependencies: + wcwidth "^1.0.1" parallel-transform@^1.1.0: version "1.2.0" @@ -8390,12 +8412,12 @@ prettier@2.0.5: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.5.tgz#d6d56282455243f2f92cc1716692c08aa31522d4" integrity sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg== -pretty-format@^25.2.1, pretty-format@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.4.0.tgz#c58801bb5c4926ff4a677fe43f9b8b99812c7830" - integrity sha512-PI/2dpGjXK5HyXexLPZU/jw5T9Q6S1YVXxxVxco+LIqzUFHXIbKZKdUVt7GcX7QUCr31+3fzhi4gN4/wUYPVxQ== +pretty-format@^25.2.1, pretty-format@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a" + integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ== dependencies: - "@jest/types" "^25.4.0" + "@jest/types" "^25.5.0" ansi-regex "^5.0.0" ansi-styles "^4.0.0" react-is "^16.12.0" @@ -8969,7 +8991,7 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.15.1, resolve@^1.3.2: +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.17.0, resolve@^1.3.2: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== @@ -9035,14 +9057,14 @@ rimraf@2.6.3: dependencies: glob "^7.1.3" -rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3, rimraf@^2.7.1: +rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== dependencies: glob "^7.1.3" -rimraf@^3.0.0: +rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== @@ -9055,11 +9077,9 @@ rsvp@^4.8.4: integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== run-async@^2.2.0, run-async@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.0.tgz#e59054a5b86876cfae07f431d18cbaddc594f1e8" - integrity sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg== - dependencies: - is-promise "^2.1.0" + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" @@ -9163,7 +9183,7 @@ semver@7.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@^7.0.0, semver@^7.1.1, semver@^7.1.3, semver@^7.2.1: +semver@^7.0.0, semver@^7.1.1, semver@^7.2.1, semver@^7.3.2: version "7.3.2" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== @@ -9248,11 +9268,6 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slice-ansi@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" - integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= - slice-ansi@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" @@ -9262,6 +9277,24 @@ slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" +slice-ansi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" + integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + slide@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" @@ -9345,7 +9378,7 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.5.13: +source-map-support@^0.5.13, source-map-support@^0.5.6: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== @@ -9353,14 +9386,6 @@ source-map-support@^0.5.13: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@^0.5.6: - version "0.5.18" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.18.tgz#f5f33489e270bd7f7d7e7b8debf283f3a4066960" - integrity sha512-9luZr/BZ2QeU6tO2uG8N2aZpVSli4TSAOAqFOyTO51AJcD9P99c0K1h6dD6r6qo5dyT44BR5exweOaLLeldTkQ== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" @@ -9525,7 +9550,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.1.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -9726,11 +9751,6 @@ supports-hyperlinks@^2.0.0: has-flag "^4.0.0" supports-color "^7.0.0" -symbol-observable@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" - integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== - symbol-tree@^3.2.2, symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" @@ -9759,12 +9779,12 @@ tar@^4.4.10, tar@^4.4.12, tar@^4.4.8: safe-buffer "^5.1.2" yallist "^3.0.3" -tar@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.0.1.tgz#7b3bd6c313cb6e0153770108f8d70ac298607efa" - integrity sha512-bKhKrrz2FJJj5s7wynxy/fyxpE0CmCjmOQ1KV4KkgXFWOgoIT/NbTMnB1n+LFNrNk0SSBVGGxcK5AGsyC+pW5Q== +tar@^6.0.1, tar@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.0.2.tgz#5df17813468a6264ff14f766886c622b84ae2f39" + integrity sha512-Glo3jkRtPcvpDlAs/0+hozav78yoXKFr+c4wgw62NNMO3oo4AaJdCo21Uu7lcwr55h39W2XD1LMERc64wtbItg== dependencies: - chownr "^1.1.3" + chownr "^2.0.0" fs-minipass "^2.0.0" minipass "^3.0.0" minizlib "^2.1.0" @@ -9867,7 +9887,7 @@ through2@^3.0.0: dependencies: readable-stream "2 || 3" -through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6: +through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -10274,6 +10294,11 @@ uuid@^3.0.1, uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== +uuid@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b" + integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg== + v8-compile-cache@^2.0.3: version "2.1.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" @@ -10369,7 +10394,7 @@ walker@^1.0.7, walker@~1.0.5: dependencies: makeerror "1.0.x" -wcwidth@^1.0.0: +wcwidth@^1.0.0, wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= @@ -10476,14 +10501,6 @@ wordwrap@^1.0.0: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= -wrap-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" - integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo= - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" @@ -10566,9 +10583,9 @@ write@1.0.3: mkdirp "^0.5.1" ws@^7.0.0, ws@^7.2.3: - version "7.2.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.3.tgz#a5411e1fb04d5ed0efee76d26d5c46d830c39b46" - integrity sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ== + version "7.2.5" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.5.tgz#abb1370d4626a5a9cd79d8de404aa18b3465d10d" + integrity sha512-C34cIU4+DB2vMyAbmEKossWq2ZQDr6QEyuuCzWrM9zfw1sGc0mYiJ0UnG9zzNykt49C2Fi34hvr2vssFQRS6EA== x-is-string@^0.1.0: version "0.1.0" From a88ef4d8e351329d7081c819f41fef9fcef49ee1 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Tue, 28 Apr 2020 20:48:59 -0700 Subject: [PATCH 25/61] build(root): add plugin to generate table of contents for markdown files --- package.json | 6 +- yarn.lock | 152 +++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 153 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 9b21ffdb..68389cbe 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,10 @@ "eslint --fix", "cspell -- --no-summary" ], - "**/*.md": "markdown-link-check --quiet --config mdLinkChecker.json", + "**/*.md": [ + "markdown-link-check --quiet --config mdLinkChecker.json", + "doctoc --github" + ], "yarn.lock": "lockfile-lint --path yarn.lock" }, "devDependencies": { @@ -65,6 +68,7 @@ "commitizen": "^4.0.4", "conventional-changelog-cli": "^2.0.31", "cspell": "^4.0.57", + "doctoc": "^1.4.0", "eslint": "^6.8.0", "eslint-config-prettier": "^6.11.0", "eslint-plugin-jest": "^23.8.2", diff --git a/yarn.lock b/yarn.lock index 9b1ab42f..cb37cb47 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2097,6 +2097,24 @@ dependencies: defer-to-connect "^1.0.1" +"@textlint/ast-node-types@^4.0.3": + version "4.2.5" + resolved "https://registry.yarnpkg.com/@textlint/ast-node-types/-/ast-node-types-4.2.5.tgz#ae13981bc8711c98313a6ac1c361194d6bf2d39b" + integrity sha512-+rEx4jLOeZpUcdvll7jEg/7hNbwYvHWFy4IGW/tk2JdbyB3SJVyIP6arAwzTH/sp/pO9jftfyZnRj4//sLbLvQ== + +"@textlint/markdown-to-ast@~6.0.9": + version "6.0.9" + resolved "https://registry.yarnpkg.com/@textlint/markdown-to-ast/-/markdown-to-ast-6.0.9.tgz#e7c89e5ad15d17dcd8e5a62758358936827658fa" + integrity sha512-hfAWBvTeUGh5t5kTn2U3uP3qOSM1BSrxzl1jF3nn0ywfZXpRBZr5yRjXnl4DzIYawCtZOshmRi/tI3/x4TE1jQ== + dependencies: + "@textlint/ast-node-types" "^4.0.3" + debug "^2.1.3" + remark-frontmatter "^1.2.0" + remark-parse "^5.0.0" + structured-source "^3.0.2" + traverse "^0.6.6" + unified "^6.1.6" + "@tootallnate/once@1": version "1.1.2" resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" @@ -2444,6 +2462,13 @@ ajv@~6.10.2: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +anchor-markdown-header@^0.5.5: + version "0.5.7" + resolved "https://registry.yarnpkg.com/anchor-markdown-header/-/anchor-markdown-header-0.5.7.tgz#045063d76e6a1f9cd327a57a0126aa0fdec371a7" + integrity sha1-BFBj125qH5zTJ6V6ASaqD97Dcac= + dependencies: + emoji-regex "~6.1.0" + ansi-align@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" @@ -2810,6 +2835,11 @@ bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== +boundary@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/boundary/-/boundary-1.0.1.tgz#4d67dc2602c0cc16dd9bce7ebf87e948290f5812" + integrity sha1-TWfcJgLAzBbdm85+v4fpSCkPWBI= + boxen@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" @@ -4075,7 +4105,7 @@ debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" -debug@^2.2.0, debug@^2.3.3: +debug@^2.1.3, debug@^2.2.0, debug@^2.3.3: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -4245,6 +4275,18 @@ dir-glob@^2.2.2: dependencies: path-type "^3.0.0" +doctoc@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/doctoc/-/doctoc-1.4.0.tgz#3115aa61d0a92f0abb0672036918ea904f5b9e02" + integrity sha512-8IAq3KdMkxhXCUF+xdZxdJxwuz8N2j25sMgqiu4U4JWluN9tRKMlAalxGASszQjlZaBprdD2YfXpL3VPWUD4eg== + dependencies: + "@textlint/markdown-to-ast" "~6.0.9" + anchor-markdown-header "^0.5.5" + htmlparser2 "~3.9.2" + minimist "~1.2.0" + underscore "~1.8.3" + update-section "^0.3.0" + doctrine@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" @@ -4252,6 +4294,24 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +dom-serializer@0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +domelementtype@1, domelementtype@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" + integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== + domexception@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" @@ -4266,6 +4326,21 @@ domexception@^2.0.1: dependencies: webidl-conversions "^5.0.0" +domhandler@^2.3.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== + dependencies: + domelementtype "1" + +domutils@^1.5.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + dot-prop@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" @@ -4335,6 +4410,11 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +emoji-regex@~6.1.0: + version "6.1.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.1.3.tgz#ec79a3969b02d2ecf2b72254279bf99bc7a83932" + integrity sha1-7HmjlpsC0uzytyJUJ5v5m8eoOTI= + encoding@^0.1.11, encoding@^0.1.12: version "0.1.12" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" @@ -4356,6 +4436,16 @@ enquirer@^2.3.4: dependencies: ansi-colors "^3.2.1" +entities@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + +entities@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" + integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw== + env-paths@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43" @@ -4823,6 +4913,13 @@ fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= +fault@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/fault/-/fault-1.0.4.tgz#eafcfc0a6d214fc94601e170df29954a4f842f13" + integrity sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA== + dependencies: + format "^0.2.0" + fb-watchman@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" @@ -4974,6 +5071,11 @@ form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" +format@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" + integrity sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs= + fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" @@ -5475,6 +5577,18 @@ html-escaper@^2.0.0: resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== +htmlparser2@~3.9.2: + version "3.9.2" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.9.2.tgz#1bdf87acca0f3f9e53fa4fcceb0f4b4cbb00b338" + integrity sha1-G9+HrMoPP55T+k/M6w9LTLsAszg= + dependencies: + domelementtype "^1.3.0" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^2.0.2" + http-cache-semantics@^3.8.1: version "3.8.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" @@ -7345,7 +7459,7 @@ minimist@1.2.3: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.3.tgz#3db5c0765545ab8637be71f333a104a965a9ca3f" integrity sha512-+bMdgqjMN/Z77a6NlY/I3U5LlRDbnmaAk6lDveAPKwSpcPM4tKAuYsvYF8xjhOPXhOYGe/73vVLVez5PW+jqhw== -minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: +minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5, minimist@~1.2.0: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== @@ -8660,7 +8774,7 @@ read@1, read@~1.0.1: dependencies: mute-stream "~0.0.4" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.6, readable-stream@~2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -8818,6 +8932,14 @@ regjsparser@^0.6.4: dependencies: jsesc "~0.5.0" +remark-frontmatter@^1.2.0: + version "1.3.3" + resolved "https://registry.yarnpkg.com/remark-frontmatter/-/remark-frontmatter-1.3.3.tgz#67ec63c89da5a84bb793ecec166e11b4eb47af10" + integrity sha512-fM5eZPBvu2pVNoq3ZPW22q+5Ativ1oLozq2qYt9I2oNyxiUd/tDl0iLLntEVAegpZIslPWg1brhcP1VsaSVUag== + dependencies: + fault "^1.0.1" + xtend "^4.0.1" + remark-parse@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-5.0.0.tgz#4c077f9e499044d1d5c13f80d7a98cf7b9285d95" @@ -9724,6 +9846,13 @@ strong-log-transformer@^2.0.0: minimist "^1.2.0" through "^2.3.4" +structured-source@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/structured-source/-/structured-source-3.0.2.tgz#dd802425e0f53dc4a6e7aca3752901a1ccda7af5" + integrity sha1-3YAkJeD1PcSm56yjdSkBoczaevU= + dependencies: + boundary "^1.0.1" + supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -9977,6 +10106,11 @@ tr46@^2.0.0: dependencies: punycode "^2.1.1" +traverse@^0.6.6: + version "0.6.6" + resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137" + integrity sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc= + trim-newlines@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" @@ -10097,6 +10231,11 @@ umask@^1.1.0: resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" integrity sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0= +underscore@~1.8.3: + version "1.8.3" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022" + integrity sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI= + unherit@^1.0.4: version "1.1.3" resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22" @@ -10128,7 +10267,7 @@ unicode-property-aliases-ecmascript@^1.0.4: resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== -unified@^6.1.2: +unified@^6.1.2, unified@^6.1.6: version "6.2.0" resolved "https://registry.yarnpkg.com/unified/-/unified-6.2.0.tgz#7fbd630f719126d67d40c644b7e3f617035f6dba" integrity sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA== @@ -10253,6 +10392,11 @@ update-notifier@^4.1.0: semver-diff "^3.1.1" xdg-basedir "^4.0.0" +update-section@^0.3.0: + version "0.3.3" + resolved "https://registry.yarnpkg.com/update-section/-/update-section-0.3.3.tgz#458f17820d37820dc60e20b86d94391b00123158" + integrity sha1-RY8Xgg03gg3GDiC4bZQ5GwASMVg= + uri-js@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" From a8322561af417206fb6730c3c67aa7b67ff97e67 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Tue, 28 Apr 2020 20:51:33 -0700 Subject: [PATCH 26/61] docs(root): update table of contents for all markdown docs --- CHANGELOG.md | 13 ++++++++++ CODE_OF_CONDUCT.md | 44 ++++++++++++++++++++++----------- README.md | 20 +++++++++------ cSpell.json | 2 ++ packages/assert/README.md | 7 ++++++ packages/format/README.md | 7 ++++++ packages/preset-rules/README.md | 7 ++++++ packages/test-utils/README.md | 7 ++++++ 8 files changed, 85 insertions(+), 22 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b5c7c3f4..d4b497b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,16 @@ + + + + +- [(2020-04-07)](#2020-04-07) + - [Bug Fixes](#bug-fixes) + - [Features](#features) +- [(2020-03-20)](#2020-03-20) + - [Bug Fixes](#bug-fixes-1) + - [Features](#features-1) + + + # (2020-04-07) ### Bug Fixes diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index c15c1069..53b14bfc 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,5 +1,19 @@ # Salesforce Open Source Community Code of Conduct + + + + +- [About the Code of Conduct](#about-the-code-of-conduct) +- [Our Pledge](#our-pledge) +- [Our Standards](#our-standards) +- [Our Responsibilities](#our-responsibilities) +- [Scope](#scope) +- [Enforcement](#enforcement) +- [Attribution](#attribution) + + + ## About the Code of Conduct Equality is a core value at Salesforce. We believe a diverse and inclusive @@ -35,23 +49,23 @@ socioeconomic status, or other similar personal characteristics. Examples of behavior that contributes to creating a positive environment include: -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy toward other community members +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy toward other community members Examples of unacceptable behavior by participants include: -* The use of sexualized language or imagery and unwelcome sexual attention or -advances -* Personal attacks, insulting/derogatory comments, or trolling -* Public or private harassment -* Publishing, or threatening to publish, others' private information—such as -a physical or electronic address—without explicit permission -* Other conduct which could reasonably be considered inappropriate in a -professional setting -* Advocating for or encouraging any of the above behaviors +- The use of sexualized language or imagery and unwelcome sexual attention or + advances +- Personal attacks, insulting/derogatory comments, or trolling +- Public or private harassment +- Publishing, or threatening to publish, others' private information—such as + a physical or electronic address—without explicit permission +- Other conduct which could reasonably be considered inappropriate in a + professional setting +- Advocating for or encouraging any of the above behaviors ## Our Responsibilities @@ -98,7 +112,7 @@ It includes adaptions and additions from [Go Community Code of Conduct][golang-c This Code of Conduct is licensed under the [Creative Commons Attribution 3.0 License][cc-by-3-us]. -[contributor-covenant-home]: https://www.contributor-covenant.org (https://www.contributor-covenant.org/) +[contributor-covenant-home]: https://www.contributor-covenant.org 'https://www.contributor-covenant.org/' [golang-coc]: https://golang.org/conduct [cncf-coc]: https://github.com/cncf/foundation/blob/master/code-of-conduct.md [microsoft-coc]: https://opensource.microsoft.com/codeofconduct/ diff --git a/README.md b/README.md index 72c941f7..5a5e278c 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,19 @@ Salesforce Accessibility Automated Testing Libraries and Tools (@sa11y packages) ![CI](https://github.com/salesforce/sa11y/workflows/CI/badge.svg) -- [Salesforce Accessibility Automation Libraries](#salesforce-accessibility-automation-libraries) - - [Docs](#docs) - - [Packages](#packages) - - [Preset accessibility rules](#preset-accessibility-rules) - - [assertAccessible API](#assertaccessible-api) - - [a11y results formatter](#a11y-results-formatter) - - [Jest integration (TBD)](#jest-integration-tbd) + + + + +- [Docs](#docs) +- [Packages](#packages) + - [Preset accessibility rules](#preset-accessibility-rules) + - [assertAccessible API](#assertaccessible-api) + - [a11y results formatter](#a11y-results-formatter) + - [Jest integration](#jest-integration) + - [Test utilities](#test-utilities) + + ## Docs diff --git a/cSpell.json b/cSpell.json index add80e47..e4eecb67 100644 --- a/cSpell.json +++ b/cSpell.json @@ -2,6 +2,8 @@ "ignorePaths": ["node_modules/**", "package.json"], "ignoreWords": [ "assertAccessible", + "doctoc", + "CNCF", "SPDX", // license header "tsdoc" ], diff --git a/packages/assert/README.md b/packages/assert/README.md index 553edc7b..bfa2ccc9 100644 --- a/packages/assert/README.md +++ b/packages/assert/README.md @@ -2,6 +2,13 @@ Provides assertAccessible API to check DOM for accessibility issues + + + +- [Usage](#usage) + + + ## Usage // TODO(doc): Generate usage docs from code (using JSDOC, TSDOC etc) diff --git a/packages/format/README.md b/packages/format/README.md index 98a2843d..73020f37 100644 --- a/packages/format/README.md +++ b/packages/format/README.md @@ -2,6 +2,13 @@ Format accessibility results from axe + + + +- [Usage](#usage) + + + ## Usage ```typescript diff --git a/packages/preset-rules/README.md b/packages/preset-rules/README.md index ef9336fe..3e0672d8 100644 --- a/packages/preset-rules/README.md +++ b/packages/preset-rules/README.md @@ -2,6 +2,13 @@ Accessibility preset rule configs for axe + + + +- [Usage](#usage) + + + ## Usage ```typescript diff --git a/packages/test-utils/README.md b/packages/test-utils/README.md index 2fb7f2cf..3a18c84d 100644 --- a/packages/test-utils/README.md +++ b/packages/test-utils/README.md @@ -2,6 +2,13 @@ Private package providing test utilities for @sa11y packages + + + +- [Usage](#usage) + + + ## Usage ```typescript From 97677cb768e904e4ebaefe3184db5cd78eb08e42 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Wed, 29 Apr 2020 11:47:44 -0700 Subject: [PATCH 27/61] build(root): add eslint plugins to check imports, comment directives refactor lint run scripts --- .eslintrc.js | 4 ++ package.json | 10 ++-- yarn.lock | 141 +++++++++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 148 insertions(+), 7 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index afc86be4..5504140e 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -25,6 +25,10 @@ module.exports = { 'plugin:jest/style', 'plugin:prettier/recommended', 'prettier/@typescript-eslint', + 'plugin:import/typescript', + // 'plugin:import/errors', // TODO(Debug): Import resolution errors (on interfaces) even though build is working fine + 'plugin:import/warnings', + 'plugin:eslint-comments/recommended', ], rules: { 'notice/notice': [ diff --git a/package.json b/package.json index 68389cbe..a5fcc207 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,9 @@ ], "scripts": { "commit": "! git diff --cached --exit-code && lint-staged && git-cz", - "lint": "lockfile-lint --path yarn.lock --allowed-hosts registry.yarnpkg.com --validate-https && eslint .", + "lint": "eslint . --ext ts,js,md", + "lint:all": "yarn lint && yarn lint:lockfile", + "lint:lockfile": "lockfile-lint --path yarn.lock --allowed-hosts registry.yarnpkg.com --validate-https", "lint:fix": "yarn lint --fix", "lint:staged": "lint-staged", "lint:watch": "esw --watch --changed --color --ext .js,.ts", @@ -26,7 +28,7 @@ "build": "tsc --build", "build:watch": "yarn build --watch", "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s && git add CHANGELOG.md", - "ci": "yarn install --frozen-lockfile && yarn build && yarn lint && yarn test", + "ci": "yarn install --frozen-lockfile && yarn build && yarn lint:all && yarn test", "clean:build": "tsc --build --clean", "clean:install": "lerna clean" }, @@ -51,7 +53,7 @@ "markdown-link-check --quiet --config mdLinkChecker.json", "doctoc --github" ], - "yarn.lock": "lockfile-lint --path yarn.lock" + "yarn.lock": "yarn lint:lockfile" }, "devDependencies": { "@babel/core": "^7.9.0", @@ -71,6 +73,8 @@ "doctoc": "^1.4.0", "eslint": "^6.8.0", "eslint-config-prettier": "^6.11.0", + "eslint-plugin-eslint-comments": "^3.1.2", + "eslint-plugin-import": "^2.20.2", "eslint-plugin-jest": "^23.8.2", "eslint-plugin-license-header": "^0.2.0", "eslint-plugin-markdown": "^2.0.0-alpha.0", diff --git a/yarn.lock b/yarn.lock index cb37cb47..d2ff7a81 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2619,6 +2619,15 @@ array-ify@^1.0.0: resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= +array-includes@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" + integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0" + is-string "^1.0.5" + array-union@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -2636,6 +2645,14 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= +array.prototype.flat@^1.2.1: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" + integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -3456,6 +3473,11 @@ console-control-strings@^1.0.0, console-control-strings@~1.1.0: resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + conventional-changelog-angular@^1.3.3: version "1.6.6" resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-1.6.6.tgz#b27f2b315c16d0a1f23eb181309d0e6a4698ea0f" @@ -4105,7 +4127,7 @@ debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" -debug@^2.1.3, debug@^2.2.0, debug@^2.3.3: +debug@^2.1.3, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -4287,6 +4309,14 @@ doctoc@^1.4.0: underscore "~1.8.3" update-section "^0.3.0" +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + doctrine@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" @@ -4468,7 +4498,7 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: +es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: version "1.17.5" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== @@ -4535,6 +4565,48 @@ eslint-config-prettier@^6.11.0: dependencies: get-stdin "^6.0.0" +eslint-import-resolver-node@^0.3.2: + version "0.3.3" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz#dbaa52b6b2816b50bc6711af75422de808e98404" + integrity sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg== + dependencies: + debug "^2.6.9" + resolve "^1.13.1" + +eslint-module-utils@^2.4.1: + version "2.6.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" + integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== + dependencies: + debug "^2.6.9" + pkg-dir "^2.0.0" + +eslint-plugin-eslint-comments@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.1.2.tgz#4ef6c488dbe06aa1627fea107b3e5d059fc8a395" + integrity sha512-QexaqrNeteFfRTad96W+Vi4Zj1KFbkHHNMMaHZEYcovKav6gdomyGzaxSDSL3GoIyUOo078wRAdYlu1caiauIQ== + dependencies: + escape-string-regexp "^1.0.5" + ignore "^5.0.5" + +eslint-plugin-import@^2.20.2: + version "2.20.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.20.2.tgz#91fc3807ce08be4837141272c8b99073906e588d" + integrity sha512-FObidqpXrR8OnCh4iNsxy+WACztJLXAHBO5hK79T1Hc77PgQZkyDGA5Ag9xAvRpglvLNxhH/zSmZ70/pZ31dHg== + dependencies: + array-includes "^3.0.3" + array.prototype.flat "^1.2.1" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.2" + eslint-module-utils "^2.4.1" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.0" + read-pkg-up "^2.0.0" + resolve "^1.12.0" + eslint-plugin-jest@^23.8.2: version "23.8.2" resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-23.8.2.tgz#6f28b41c67ef635f803ebd9e168f6b73858eb8d4" @@ -5693,6 +5765,11 @@ ignore@^4.0.3, ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== +ignore@^5.0.5: + version "5.1.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" + integrity sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A== + import-fresh@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" @@ -6144,6 +6221,11 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + is-symbol@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" @@ -6193,7 +6275,7 @@ is-yarn-global@^0.3.0: resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== -isarray@1.0.0, isarray@~1.0.0: +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= @@ -6985,6 +7067,16 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" @@ -8044,6 +8136,16 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" +object.values@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" + integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + octokit-pagination-methods@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4" @@ -8410,6 +8512,13 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + path-type@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" @@ -8466,6 +8575,13 @@ pirates@^4.0.1: dependencies: node-modules-regexp "^1.0.0" +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.0" + pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" @@ -8722,6 +8838,14 @@ read-pkg-up@^1.0.1: find-up "^1.0.0" read-pkg "^1.0.0" +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + read-pkg-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" @@ -8748,6 +8872,15 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" @@ -9113,7 +9246,7 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.17.0, resolve@^1.3.2: +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.3.2: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== From 23d4c4cdc4848da4224884eed518ffc78e3a7608 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Wed, 29 Apr 2020 11:57:07 -0700 Subject: [PATCH 28/61] improvement(root): fix conflicting settings for md files formatting --- .prettierrc.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.prettierrc.js b/.prettierrc.js index 26da45db..09f79fa5 100644 --- a/.prettierrc.js +++ b/.prettierrc.js @@ -3,4 +3,10 @@ module.exports = { printWidth: 120, singleQuote: true, trailingComma: 'es5', + overrides: [ + { + files: '*.md', + tabWidth: 2, // To accommodate doctoc formatting (no override for tab width in doctoc) + }, + ], }; From f54b9ac4dde10218f3f97dcd30fd22a2f4d9ebee Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Wed, 29 Apr 2020 18:53:04 -0700 Subject: [PATCH 29/61] improvement(root): add typescript resolver eslint import plugin to fix errors with the eslint import plugin with ts files --- .eslintrc.js | 10 +++- package.json | 1 + packages/assert/src/assert.ts | 8 +-- packages/jest/src/jest.ts | 2 +- packages/preset-rules/__tests__/rules.test.ts | 5 +- yarn.lock | 51 +++++++++++++++++++ 6 files changed, 68 insertions(+), 9 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 5504140e..b3ac8397 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -26,10 +26,18 @@ module.exports = { 'plugin:prettier/recommended', 'prettier/@typescript-eslint', 'plugin:import/typescript', - // 'plugin:import/errors', // TODO(Debug): Import resolution errors (on interfaces) even though build is working fine + 'plugin:import/errors', 'plugin:import/warnings', 'plugin:eslint-comments/recommended', ], + settings: { + 'import/resolver': { + // Makes plugin:import work with Typescript interfaces etc + typescript: { + alwaysTryTypes: true, // always try to resolve types under `@types` directory even it doesn't contain any source code + }, + }, + }, rules: { 'notice/notice': [ 'error', diff --git a/package.json b/package.json index a5fcc207..99ee79ed 100644 --- a/package.json +++ b/package.json @@ -73,6 +73,7 @@ "doctoc": "^1.4.0", "eslint": "^6.8.0", "eslint-config-prettier": "^6.11.0", + "eslint-import-resolver-typescript": "^2.0.0", "eslint-plugin-eslint-comments": "^3.1.2", "eslint-plugin-import": "^2.20.2", "eslint-plugin-jest": "^23.8.2", diff --git a/packages/assert/src/assert.ts b/packages/assert/src/assert.ts index 297c64c4..4bb1fc6c 100644 --- a/packages/assert/src/assert.ts +++ b/packages/assert/src/assert.ts @@ -5,10 +5,10 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ -import axe, { ElementContext, RunOptions } from 'axe-core'; -import { extended } from '@sa11y/preset-rules'; -import { A11yConfig } from '@sa11y/preset-rules'; -import { Formatter, a11yResultsFormatter } from '@sa11y/format'; +import * as axe from 'axe-core'; +import { ElementContext, RunOptions } from 'axe-core'; +import { A11yConfig, extended } from '@sa11y/preset-rules'; +import { a11yResultsFormatter, Formatter } from '@sa11y/format'; // Error message prefix for runtime exceptions when running axe // TODO (refactor): Should this be exported? Can private variables be imported in tests? diff --git a/packages/jest/src/jest.ts b/packages/jest/src/jest.ts index bea81b6e..5eda0060 100644 --- a/packages/jest/src/jest.ts +++ b/packages/jest/src/jest.ts @@ -6,7 +6,7 @@ */ import { assertAccessible } from '@sa11y/assert'; -import { A11yConfig, extended } from '@sa11y/preset-rules'; +import { extended, A11yConfig } from '@sa11y/preset-rules'; import { matcherHint } from 'jest-matcher-utils'; export const matcherHintMsg = `expected document to have no accessibility violations but found following issues: `; diff --git a/packages/preset-rules/__tests__/rules.test.ts b/packages/preset-rules/__tests__/rules.test.ts index 75be0841..1e2366d4 100644 --- a/packages/preset-rules/__tests__/rules.test.ts +++ b/packages/preset-rules/__tests__/rules.test.ts @@ -5,9 +5,8 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ -import axe from 'axe-core'; -import { extended } from '../src'; -import { recommended } from '../src'; +import * as axe from 'axe-core'; +import { extended, recommended } from '../src'; /** * TODO: diff --git a/yarn.lock b/yarn.lock index d2ff7a81..16b652f6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2219,6 +2219,11 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + "@types/minimatch@*": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" @@ -4573,6 +4578,17 @@ eslint-import-resolver-node@^0.3.2: debug "^2.6.9" resolve "^1.13.1" +eslint-import-resolver-typescript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.0.0.tgz#e95f126cc12d3018b9cc11692b4dbfd3e17d3ea6" + integrity sha512-bT5Frpl8UWoHBtY25vKUOMoVIMlJQOMefHLyQ4Tz3MQpIZ2N6yYKEEIHMo38bszBNUuMBW6M3+5JNYxeiGFH4w== + dependencies: + debug "^4.1.1" + is-glob "^4.0.1" + resolve "^1.12.0" + tiny-glob "^0.2.6" + tsconfig-paths "^3.9.0" + eslint-module-utils@^2.4.1: version "2.6.0" resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" @@ -5475,6 +5491,11 @@ globals@^12.1.0: dependencies: type-fest "^0.8.1" +globalyzer@^0.1.0: + version "0.1.4" + resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.4.tgz#bc8e273afe1ac7c24eea8def5b802340c5cc534f" + integrity sha512-LeguVWaxgHN0MNbWC6YljNMzHkrCny9fzjmEUdnF1kQ7wATFD1RHFRqA1qxaX2tgxGENlcxjOflopBwj3YZiXA== + globby@^9.2.0: version "9.2.0" resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" @@ -5489,6 +5510,11 @@ globby@^9.2.0: pify "^4.0.1" slash "^2.0.0" +globrex@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098" + integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== + got@^9.6.0: version "9.6.0" resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" @@ -6872,6 +6898,13 @@ json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + json5@^2.1.1, json5@^2.1.2: version "2.1.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" @@ -10154,6 +10187,14 @@ through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@^2.3.8: resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= +tiny-glob@^0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/tiny-glob/-/tiny-glob-0.2.6.tgz#9e056e169d9788fe8a734dfa1ff02e9b92ed7eda" + integrity sha512-A7ewMqPu1B5PWwC3m7KVgAu96Ch5LA0w4SnEN/LbDREj/gAD0nPWboRbn8YoP9ISZXqeNAlMvKSKoEuhcfK3Pw== + dependencies: + globalyzer "^0.1.0" + globrex "^0.1.1" + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -10274,6 +10315,16 @@ trough@^1.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== +tsconfig-paths@^3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" + integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" + tslib@^1.8.1, tslib@^1.9.0: version "1.11.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" From eafdc8c3ae6422885c21a49e33be6ccb047845e8 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Wed, 29 Apr 2020 19:00:40 -0700 Subject: [PATCH 30/61] chore(root): update dependencies Checking fixes for https://github.com/facebook/jest/issues/9916 --- package.json | 8 +- packages/jest/package.json | 2 +- yarn.lock | 422 +++++++++++++++++++------------------ 3 files changed, 220 insertions(+), 212 deletions(-) diff --git a/package.json b/package.json index 99ee79ed..117f0e90 100644 --- a/package.json +++ b/package.json @@ -56,8 +56,8 @@ "yarn.lock": "yarn lint:lockfile" }, "devDependencies": { - "@babel/core": "^7.9.0", - "@babel/preset-env": "^7.9.5", + "@babel/core": "^7.9.6", + "@babel/preset-env": "^7.9.6", "@babel/preset-typescript": "^7.9.0", "@commitlint/cli": "^8.3.5", "@commitlint/config-conventional": "^8.3.4", @@ -66,7 +66,7 @@ "@types/node": "^12.12.31", "@typescript-eslint/eslint-plugin": "^2.30.0", "@typescript-eslint/parser": "^2.30.0", - "babel-jest": "^25.5.0", + "babel-jest": "^25.5.1", "commitizen": "^4.0.4", "conventional-changelog-cli": "^2.0.31", "cspell": "^4.0.57", @@ -84,7 +84,7 @@ "eslint-plugin-tsdoc": "^0.2.4", "eslint-watch": "^6.0.1", "husky": "^4.2.5", - "jest": "^25.5.0", + "jest": "^25.5.2", "lerna": "^3.20.2", "lint-staged": "^10.2.0", "lockfile-lint": "^4.2.2", diff --git a/packages/jest/package.json b/packages/jest/package.json index 065cb06c..a6a95822 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -25,7 +25,7 @@ "jest-matcher-utils": "^25.5.0" }, "peerDependencies": { - "jest": "^25.5.0" + "jest": "^25.5.2" }, "devDependencies": { "@sa11y/test-utils": "0.1.0", diff --git a/yarn.lock b/yarn.lock index 16b652f6..34639612 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,28 +9,28 @@ dependencies: "@babel/highlight" "^7.8.3" -"@babel/compat-data@^7.8.6", "@babel/compat-data@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.9.0.tgz#04815556fc90b0c174abd2c0c1bb966faa036a6c" - integrity sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g== +"@babel/compat-data@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.9.6.tgz#3f604c40e420131affe6f2c8052e9a275ae2049b" + integrity sha512-5QPTrNen2bm7RBc7dsOmcA5hbrS4O2Vhmk5XOL4zWW/zD/hV0iinpefDlkm+tBBy8kDtFaaeEvmAqt+nURAV2g== dependencies: - browserslist "^4.9.1" + browserslist "^4.11.1" invariant "^2.2.4" semver "^5.5.0" -"@babel/core@^7.1.0", "@babel/core@^7.7.5", "@babel/core@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" - integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== +"@babel/core@^7.1.0", "@babel/core@^7.7.5", "@babel/core@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.6.tgz#d9aa1f580abf3b2286ef40b6904d390904c63376" + integrity sha512-nD3deLvbsApbHAHttzIssYqgb883yU/d9roe4RZymBCDaZryMJDbptVpEpeQuRh4BJ+SYI8le9YGxKvFEvl1Wg== dependencies: "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.0" + "@babel/generator" "^7.9.6" "@babel/helper-module-transforms" "^7.9.0" - "@babel/helpers" "^7.9.0" - "@babel/parser" "^7.9.0" + "@babel/helpers" "^7.9.6" + "@babel/parser" "^7.9.6" "@babel/template" "^7.8.6" - "@babel/traverse" "^7.9.0" - "@babel/types" "^7.9.0" + "@babel/traverse" "^7.9.6" + "@babel/types" "^7.9.6" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" @@ -40,12 +40,12 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.9.0", "@babel/generator@^7.9.5": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.5.tgz#27f0917741acc41e6eaaced6d68f96c3fa9afaf9" - integrity sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ== +"@babel/generator@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.6.tgz#5408c82ac5de98cda0d77d8124e99fa1f2170a43" + integrity sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ== dependencies: - "@babel/types" "^7.9.5" + "@babel/types" "^7.9.6" jsesc "^2.5.1" lodash "^4.17.13" source-map "^0.5.0" @@ -65,27 +65,27 @@ "@babel/helper-explode-assignable-expression" "^7.8.3" "@babel/types" "^7.8.3" -"@babel/helper-compilation-targets@^7.8.7": - version "7.8.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz#dac1eea159c0e4bd46e309b5a1b04a66b53c1dde" - integrity sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw== +"@babel/helper-compilation-targets@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.9.6.tgz#1e05b7ccc9d38d2f8b40b458b380a04dcfadd38a" + integrity sha512-x2Nvu0igO0ejXzx09B/1fGBxY9NXQlBW2kZsSxCJft+KHN8t9XWzIvFxtPHnBOAXpVsdxZKZFbRUC8TsNKajMw== dependencies: - "@babel/compat-data" "^7.8.6" - browserslist "^4.9.1" + "@babel/compat-data" "^7.9.6" + browserslist "^4.11.1" invariant "^2.2.4" levenary "^1.1.1" semver "^5.5.0" -"@babel/helper-create-class-features-plugin@^7.8.3": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.9.5.tgz#79753d44017806b481017f24b02fd4113c7106ea" - integrity sha512-IipaxGaQmW4TfWoXdqjY0TzoXQ1HRS0kPpEgvjosb3u7Uedcq297xFqDQiCcQtRRwzIMif+N1MLVI8C5a4/PAA== +"@babel/helper-create-class-features-plugin@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.9.6.tgz#965c8b0a9f051801fd9d3b372ca0ccf200a90897" + integrity sha512-6N9IeuyHvMBRyjNYOMJHrhwtu4WJMrYf8hVbEHD3pbbbmNOk1kmXSQs7bA4dYDUaIx4ZEzdnvo6NwC3WHd/Qow== dependencies: "@babel/helper-function-name" "^7.9.5" "@babel/helper-member-expression-to-functions" "^7.8.3" "@babel/helper-optimise-call-expression" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-replace-supers" "^7.9.6" "@babel/helper-split-export-declaration" "^7.8.3" "@babel/helper-create-regexp-features-plugin@^7.8.3", "@babel/helper-create-regexp-features-plugin@^7.8.8": @@ -194,15 +194,15 @@ "@babel/traverse" "^7.8.3" "@babel/types" "^7.8.3" -"@babel/helper-replace-supers@^7.8.3", "@babel/helper-replace-supers@^7.8.6": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz#5ada744fd5ad73203bf1d67459a27dcba67effc8" - integrity sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA== +"@babel/helper-replace-supers@^7.8.3", "@babel/helper-replace-supers@^7.8.6", "@babel/helper-replace-supers@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.9.6.tgz#03149d7e6a5586ab6764996cd31d6981a17e1444" + integrity sha512-qX+chbxkbArLyCImk3bWV+jB5gTNU/rsze+JlcF6Nf8tVTigPJSI1o1oBow/9Resa1yehUO9lIipsmu9oG4RzA== dependencies: "@babel/helper-member-expression-to-functions" "^7.8.3" "@babel/helper-optimise-call-expression" "^7.8.3" - "@babel/traverse" "^7.8.6" - "@babel/types" "^7.8.6" + "@babel/traverse" "^7.9.6" + "@babel/types" "^7.9.6" "@babel/helper-simple-access@^7.8.3": version "7.8.3" @@ -234,14 +234,14 @@ "@babel/traverse" "^7.8.3" "@babel/types" "^7.8.3" -"@babel/helpers@^7.9.0": - version "7.9.2" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.2.tgz#b42a81a811f1e7313b88cba8adc66b3d9ae6c09f" - integrity sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA== +"@babel/helpers@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.6.tgz#092c774743471d0bb6c7de3ad465ab3d3486d580" + integrity sha512-tI4bUbldloLcHWoRUMAj4g1bF313M/o6fBKhIsb3QnGVPwRm9JsNf/gqMkQ7zjqReABiffPV6RWj7hEglID5Iw== dependencies: "@babel/template" "^7.8.3" - "@babel/traverse" "^7.9.0" - "@babel/types" "^7.9.0" + "@babel/traverse" "^7.9.6" + "@babel/types" "^7.9.6" "@babel/highlight@^7.8.3": version "7.9.0" @@ -252,10 +252,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.7.5", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0": - version "7.9.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.4.tgz#68a35e6b0319bbc014465be43828300113f2f2e8" - integrity sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA== +"@babel/parser@^7.1.0", "@babel/parser@^7.7.5", "@babel/parser@^7.8.6", "@babel/parser@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.6.tgz#3b1bbb30dabe600cd72db58720998376ff653bc7" + integrity sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q== "@babel/plugin-proposal-async-generator-functions@^7.8.3": version "7.8.3" @@ -298,10 +298,10 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-numeric-separator" "^7.8.3" -"@babel/plugin-proposal-object-rest-spread@^7.9.5": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.5.tgz#3fd65911306d8746014ec0d0cf78f0e39a149116" - integrity sha512-VP2oXvAf7KCYTthbUHwBlewbl1Iq059f6seJGsxMizaCdgHIeczOr7FBqELhSqfkIl04Fi8okzWzl63UKbQmmg== +"@babel/plugin-proposal-object-rest-spread@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.6.tgz#7a093586fcb18b08266eb1a7177da671ac575b63" + integrity sha512-Ga6/fhGqA9Hj+y6whNpPv8psyaK5xzrQwSPsGPloVkvmH+PqW1ixdnfJ9uIO06OjQNYol3PMnfmJ8vfZtkzF+A== dependencies: "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" @@ -533,34 +533,34 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-modules-amd@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz#19755ee721912cf5bb04c07d50280af3484efef4" - integrity sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q== +"@babel/plugin-transform-modules-amd@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.6.tgz#8539ec42c153d12ea3836e0e3ac30d5aae7b258e" + integrity sha512-zoT0kgC3EixAyIAU+9vfaUVKTv9IxBDSabgHoUCBP6FqEJ+iNiN7ip7NBKcYqbfUDfuC2mFCbM7vbu4qJgOnDw== dependencies: "@babel/helper-module-transforms" "^7.9.0" "@babel/helper-plugin-utils" "^7.8.3" - babel-plugin-dynamic-import-node "^2.3.0" + babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz#e3e72f4cbc9b4a260e30be0ea59bdf5a39748940" - integrity sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g== +"@babel/plugin-transform-modules-commonjs@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.6.tgz#64b7474a4279ee588cacd1906695ca721687c277" + integrity sha512-7H25fSlLcn+iYimmsNe3uK1at79IE6SKW9q0/QeEHTMC9MdOZ+4bA+T1VFB5fgOqBWoqlifXRzYD0JPdmIrgSQ== dependencies: "@babel/helper-module-transforms" "^7.9.0" "@babel/helper-plugin-utils" "^7.8.3" "@babel/helper-simple-access" "^7.8.3" - babel-plugin-dynamic-import-node "^2.3.0" + babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz#e9fd46a296fc91e009b64e07ddaa86d6f0edeb90" - integrity sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ== +"@babel/plugin-transform-modules-systemjs@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.6.tgz#207f1461c78a231d5337a92140e52422510d81a4" + integrity sha512-NW5XQuW3N2tTHim8e1b7qGy7s0kZ2OH3m5octc49K1SdAKGxYxeIx7hiIz05kS1R2R+hOWcsr1eYwcGhrdHsrg== dependencies: "@babel/helper-hoist-variables" "^7.8.3" "@babel/helper-module-transforms" "^7.9.0" "@babel/helper-plugin-utils" "^7.8.3" - babel-plugin-dynamic-import-node "^2.3.0" + babel-plugin-dynamic-import-node "^2.3.3" "@babel/plugin-transform-modules-umd@^7.9.0": version "7.9.0" @@ -659,11 +659,11 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-transform-typescript@^7.9.0": - version "7.9.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.9.4.tgz#4bb4dde4f10bbf2d787fce9707fb09b483e33359" - integrity sha512-yeWeUkKx2auDbSxRe8MusAG+n4m9BFY/v+lPjmQDgOFX5qnySkUY5oXzkp6FwPdsYqnKay6lorXYdC0n3bZO7w== + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.9.6.tgz#2248971416a506fc78278fc0c0ea3179224af1e9" + integrity sha512-8OvsRdvpt3Iesf2qsAn+YdlwAJD7zJ+vhFZmDCa4b8dTp7MmHtKk5FF2mCsGxjZwuwsy/yIIay/nLmxST1ctVQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-create-class-features-plugin" "^7.9.6" "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-typescript" "^7.8.3" @@ -675,13 +675,13 @@ "@babel/helper-create-regexp-features-plugin" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" -"@babel/preset-env@^7.9.5": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.5.tgz#8ddc76039bc45b774b19e2fc548f6807d8a8919f" - integrity sha512-eWGYeADTlPJH+wq1F0wNfPbVS1w1wtmMJiYk55Td5Yu28AsdR9AsC97sZ0Qq8fHqQuslVSIYSGJMcblr345GfQ== +"@babel/preset-env@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.6.tgz#df063b276c6455ec6fcfc6e53aacc38da9b0aea6" + integrity sha512-0gQJ9RTzO0heXOhzftog+a/WyOuqMrAIugVYxMYf83gh1CQaQDjMtsOpqOwXyDL/5JcWsrCm8l4ju8QC97O7EQ== dependencies: - "@babel/compat-data" "^7.9.0" - "@babel/helper-compilation-targets" "^7.8.7" + "@babel/compat-data" "^7.9.6" + "@babel/helper-compilation-targets" "^7.9.6" "@babel/helper-module-imports" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-proposal-async-generator-functions" "^7.8.3" @@ -689,7 +689,7 @@ "@babel/plugin-proposal-json-strings" "^7.8.3" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" "@babel/plugin-proposal-numeric-separator" "^7.8.3" - "@babel/plugin-proposal-object-rest-spread" "^7.9.5" + "@babel/plugin-proposal-object-rest-spread" "^7.9.6" "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" "@babel/plugin-proposal-optional-chaining" "^7.9.0" "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" @@ -716,9 +716,9 @@ "@babel/plugin-transform-function-name" "^7.8.3" "@babel/plugin-transform-literals" "^7.8.3" "@babel/plugin-transform-member-expression-literals" "^7.8.3" - "@babel/plugin-transform-modules-amd" "^7.9.0" - "@babel/plugin-transform-modules-commonjs" "^7.9.0" - "@babel/plugin-transform-modules-systemjs" "^7.9.0" + "@babel/plugin-transform-modules-amd" "^7.9.6" + "@babel/plugin-transform-modules-commonjs" "^7.9.6" + "@babel/plugin-transform-modules-systemjs" "^7.9.6" "@babel/plugin-transform-modules-umd" "^7.9.0" "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" "@babel/plugin-transform-new-target" "^7.8.3" @@ -734,8 +734,8 @@ "@babel/plugin-transform-typeof-symbol" "^7.8.4" "@babel/plugin-transform-unicode-regex" "^7.8.3" "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.9.5" - browserslist "^4.9.1" + "@babel/types" "^7.9.6" + browserslist "^4.11.1" core-js-compat "^3.6.2" invariant "^2.2.2" levenary "^1.1.1" @@ -761,9 +761,9 @@ "@babel/plugin-transform-typescript" "^7.9.0" "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": - version "7.9.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06" - integrity sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q== + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.6.tgz#a9102eb5cadedf3f31d08a9ecf294af7827ea29f" + integrity sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ== dependencies: regenerator-runtime "^0.13.4" @@ -776,25 +776,25 @@ "@babel/parser" "^7.8.6" "@babel/types" "^7.8.6" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.7.4", "@babel/traverse@^7.8.3", "@babel/traverse@^7.8.6", "@babel/traverse@^7.9.0": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.5.tgz#6e7c56b44e2ac7011a948c21e283ddd9d9db97a2" - integrity sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ== +"@babel/traverse@^7.1.0", "@babel/traverse@^7.7.4", "@babel/traverse@^7.8.3", "@babel/traverse@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.6.tgz#5540d7577697bf619cc57b92aa0f1c231a94f442" + integrity sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg== dependencies: "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.5" + "@babel/generator" "^7.9.6" "@babel/helper-function-name" "^7.9.5" "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/parser" "^7.9.0" - "@babel/types" "^7.9.5" + "@babel/parser" "^7.9.6" + "@babel/types" "^7.9.6" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.13" -"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0", "@babel/types@^7.9.5": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.5.tgz#89231f82915a8a566a703b3b20133f73da6b9444" - integrity sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg== +"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0", "@babel/types@^7.9.5", "@babel/types@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.6.tgz#2c5502b427251e9de1bd2dff95add646d95cc9f7" + integrity sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA== dependencies: "@babel/helper-validator-identifier" "^7.9.5" lodash "^4.17.13" @@ -1043,30 +1043,30 @@ jest-util "^25.5.0" slash "^3.0.0" -"@jest/core@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-25.5.0.tgz#e71ddcac282e965081688cac5e9f100b237a7b32" - integrity sha512-YQPhBtPQa8QJCMpseg1b/DqJE0iG16uhUQOAOdRX2dbIzgZeobNQn4Cmigr1va6IC3RTnGPTUF7QmWOzsiJtbQ== +"@jest/core@^25.5.2": + version "25.5.2" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-25.5.2.tgz#d3f49782ad5c09478214ddd45249e5b7663a0328" + integrity sha512-vc7WqwPbFX22EWDbuxJDnWDh5YYyReimgxKO/DYA1wMJd7/PcbUwM4PY7xadRZ2ze8Wi3OtmXP8ZbJEfcWY5Xg== dependencies: "@jest/console" "^25.5.0" - "@jest/reporters" "^25.5.0" + "@jest/reporters" "^25.5.1" "@jest/test-result" "^25.5.0" - "@jest/transform" "^25.5.0" + "@jest/transform" "^25.5.1" "@jest/types" "^25.5.0" ansi-escapes "^4.2.1" chalk "^3.0.0" exit "^0.1.2" graceful-fs "^4.2.4" jest-changed-files "^25.5.0" - jest-config "^25.5.0" - jest-haste-map "^25.5.0" + jest-config "^25.5.2" + jest-haste-map "^25.5.1" jest-message-util "^25.5.0" jest-regex-util "^25.2.6" - jest-resolve "^25.5.0" - jest-resolve-dependencies "^25.5.0" - jest-runner "^25.5.0" - jest-runtime "^25.5.0" - jest-snapshot "^25.5.0" + jest-resolve "^25.5.1" + jest-resolve-dependencies "^25.5.2" + jest-runner "^25.5.2" + jest-runtime "^25.5.2" + jest-snapshot "^25.5.1" jest-util "^25.5.0" jest-validate "^25.5.0" jest-watcher "^25.5.0" @@ -1097,24 +1097,24 @@ jest-util "^25.5.0" lolex "^5.0.0" -"@jest/globals@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-25.5.0.tgz#2e36037e0e96d34870f99a024d4dc1485bcbd775" - integrity sha512-yC+WlD1ytYPZvTSbmSeZM+BNbkFXtkTBBjtmoFDYxjznwugl2Qv2KW7csxL7nTxJOxyjkffy6ngLZ6YMqAe7MA== +"@jest/globals@^25.5.2": + version "25.5.2" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-25.5.2.tgz#5e45e9de8d228716af3257eeb3991cc2e162ca88" + integrity sha512-AgAS/Ny7Q2RCIj5kZ+0MuKM1wbF0WMLxbCVl/GOMoCNbODRdJ541IxJ98xnZdVSZXivKpJlNPIWa3QmY0l4CXA== dependencies: "@jest/environment" "^25.5.0" "@jest/types" "^25.5.0" expect "^25.5.0" -"@jest/reporters@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-25.5.0.tgz#749e035119ec22c76af9bb587108a27c15dfe40d" - integrity sha512-CnrfHhrxGgMI2Va/w0e406CRmf+P1ZBAahgM4aaETWy8IQ5n3aGEDNE+tuh7vexIFCfZ1QFsVMYzvcVT4o9XOQ== +"@jest/reporters@^25.5.1": + version "25.5.1" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-25.5.1.tgz#cb686bcc680f664c2dbaf7ed873e93aa6811538b" + integrity sha512-3jbd8pPDTuhYJ7vqiHXbSwTJQNavczPs+f1kRprRDxETeE3u6srJ+f0NPuwvOmk+lmunZzPkYWIFZDLHQPkviw== dependencies: "@bcoe/v8-coverage" "^0.2.3" "@jest/console" "^25.5.0" "@jest/test-result" "^25.5.0" - "@jest/transform" "^25.5.0" + "@jest/transform" "^25.5.1" "@jest/types" "^25.5.0" chalk "^3.0.0" collect-v8-coverage "^1.0.0" @@ -1126,8 +1126,8 @@ istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.0.2" - jest-haste-map "^25.5.0" - jest-resolve "^25.5.0" + jest-haste-map "^25.5.1" + jest-resolve "^25.5.1" jest-util "^25.5.0" jest-worker "^25.5.0" slash "^3.0.0" @@ -1157,21 +1157,21 @@ "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-25.5.0.tgz#edc249d26f73804172dbf30a140d04b494a9dc38" - integrity sha512-c9Go3EK4+5erD2HKibIyt8JqImV23iGTWfaqMKdtD3aish8CDcXlq1X+L/CMFPOORJDV63quN4obR6iHpARapg== +"@jest/test-sequencer@^25.5.2": + version "25.5.2" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-25.5.2.tgz#3d291179de020f42835469fff1de496d6309848a" + integrity sha512-spQjGJ+QTjqB2NcZclkEpStF4uXxfpMfGAsW12dtxfjR9nsxTyTEYt8JUtrpxfYk8R1iTbcwkayekxZPB2MEiw== dependencies: "@jest/test-result" "^25.5.0" graceful-fs "^4.2.4" - jest-haste-map "^25.5.0" - jest-runner "^25.5.0" - jest-runtime "^25.5.0" + jest-haste-map "^25.5.1" + jest-runner "^25.5.2" + jest-runtime "^25.5.2" -"@jest/transform@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-25.5.0.tgz#a0f3719a1e158be442a99988d3134d577cb1c1be" - integrity sha512-yqxpmosig2JWKHVbyEl8I7btXCinLIL8b3ENJYMvl9TqzZ9KulnV2t08wp4Wbv/pFKYqTd5NWyEzi4xCpcQ3mg== +"@jest/transform@^25.5.1": + version "25.5.1" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-25.5.1.tgz#0469ddc17699dd2bf985db55fa0fb9309f5c2db3" + integrity sha512-Y8CEoVwXb4QwA6Y/9uDkn0Xfz0finGkieuV0xkdF9UtZGJeLukD5nLkaVrVsODB1ojRWlaoD0AJZpVHCSnJEvg== dependencies: "@babel/core" "^7.1.0" "@jest/types" "^25.5.0" @@ -1180,7 +1180,7 @@ convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" graceful-fs "^4.2.4" - jest-haste-map "^25.5.0" + jest-haste-map "^25.5.1" jest-regex-util "^25.2.6" jest-util "^25.5.0" micromatch "^4.0.2" @@ -2177,6 +2177,13 @@ "@types/minimatch" "*" "@types/node" "*" +"@types/graceful-fs@^4.1.2": + version "4.1.3" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.3.tgz#039af35fe26bec35003e8d86d2ee9c586354348f" + integrity sha512-AiHRaEB50LQg0pZmm659vNBb9f4SJ0qrAnteuzhSeAUcJKxoYgEnprg/83kppCnc2zvtCKbdZry1a5pVY3lOTQ== + dependencies: + "@types/node" "*" + "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" @@ -2730,12 +2737,12 @@ axe-core@^3.5.3: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-3.5.3.tgz#5b7c0ee7c5197d546bd3a07c3ef701896f5773e9" integrity sha512-HZpLE7xu05+8AbpqXITGdxp1Xwk8ysAXrg7MiKRY27py3DAyEJpoJQo1727pWF3F+O79V3r+cTWhOzfB49P89w== -babel-jest@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-25.5.0.tgz#a310e74f76585cf24d526ed477e56ee83bce86c4" - integrity sha512-8AfVNU7MEMsa+MjbY/CmwrGuQdplZ/+GkeWJDpRPm4C4wJZf937Pd9KgWU3NbnWEcYvIiqR15wy0U6C028kTWw== +babel-jest@^25.5.1: + version "25.5.1" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-25.5.1.tgz#bc2e6101f849d6f6aec09720ffc7bc5332e62853" + integrity sha512-9dA9+GmMjIzgPnYtkhBg73gOo/RHqPmLruP3BaGL4KEX3Dwz6pI8auSN8G8+iuEG90+GSswyKvslN+JYSaacaQ== dependencies: - "@jest/transform" "^25.5.0" + "@jest/transform" "^25.5.1" "@jest/types" "^25.5.0" "@types/babel__core" "^7.1.7" babel-plugin-istanbul "^6.0.0" @@ -2744,7 +2751,7 @@ babel-jest@^25.5.0: graceful-fs "^4.2.4" slash "^3.0.0" -babel-plugin-dynamic-import-node@^2.3.0: +babel-plugin-dynamic-import-node@^2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== @@ -2919,7 +2926,7 @@ browser-resolve@^1.11.3: dependencies: resolve "1.1.7" -browserslist@^4.8.5, browserslist@^4.9.1: +browserslist@^4.11.1, browserslist@^4.8.5: version "4.12.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.0.tgz#06c6d5715a1ede6c51fc39ff67fd647f740b656d" integrity sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg== @@ -4049,9 +4056,9 @@ cssom@~0.3.6: integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== cssstyle@^2.0.0, cssstyle@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.2.0.tgz#e4c44debccd6b7911ed617a4395e5754bba59992" - integrity sha512-sEb3XFPx3jNnCAMtqrXPDeSgQr+jojtCeNf8cvMNMh1cG970+lljssvQDzPq6lmmJu2Vhqood/gtEomBiHOGnA== + version "2.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== dependencies: cssom "~0.3.6" @@ -4426,9 +4433,9 @@ ecc-jsbn@~0.1.1: safer-buffer "^2.1.0" electron-to-chromium@^1.3.413: - version "1.3.421" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.421.tgz#4abfe7e49070b5b437ec2ce442543add8eb66800" - integrity sha512-ogxgmvHGfDuLA+GtgfK0jkFWlBb4MCZK2U1MM+l98sf4U3Ixtrfw1iC9w4mQqNvo+lHgM4pR62TqoT4QrvKJCw== + version "1.3.423" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.423.tgz#1dcc9e54d642dd9b354c6609848abf8ba7b2570f" + integrity sha512-jXdnLcawJ/EMdN+j77TC3YyeAWiIjo1U63DFCKrjtLv4cu8ToyoF4HYXtFvkVVHhEtIl7lU1uDd307Xj1/YDjw== elegant-spinner@^2.0.0: version "2.0.0" @@ -6398,12 +6405,12 @@ jest-changed-files@^25.5.0: execa "^3.2.0" throat "^5.0.0" -jest-cli@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-25.5.0.tgz#91d96af92804ffedd5c159a7adb01321ee778049" - integrity sha512-zcUtEL1wD7BO7ehhwb7KodGS//B5dqgEIrmO3zY4xOjMnS7MMs06yzndvlDqzJqMylIkeOr1A3ToGYWFbBNSmQ== +jest-cli@^25.5.2: + version "25.5.2" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-25.5.2.tgz#44ffb68cc0aa1a4b2971b8bfd07083397232105e" + integrity sha512-jbOJ4oOIJptg5mjNQZWyHkv33sXCIFT2UnkYwlZvyVU/0nz5nmIlIx57iTgHkmeRBp1VkK2qPZhjCDwHmxNKgA== dependencies: - "@jest/core" "^25.5.0" + "@jest/core" "^25.5.2" "@jest/test-result" "^25.5.0" "@jest/types" "^25.5.0" chalk "^3.0.0" @@ -6411,22 +6418,22 @@ jest-cli@^25.5.0: graceful-fs "^4.2.4" import-local "^3.0.2" is-ci "^2.0.0" - jest-config "^25.5.0" + jest-config "^25.5.2" jest-util "^25.5.0" jest-validate "^25.5.0" prompts "^2.0.1" realpath-native "^2.0.0" yargs "^15.3.1" -jest-config@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-25.5.0.tgz#6cc56bb8a72a1c1f36ed2d78668e810c844d7af5" - integrity sha512-ucmAX+AdcQAQCOnXOsefYygtFCdfkU7/pUdO+etV0JSgvO6WWnu/bWQLbff3SMw/gZLGl/t3S5Ts7Ct7Pejlwg== +jest-config@^25.5.2: + version "25.5.2" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-25.5.2.tgz#99319256123df19194da4aa27bb695ace4dfbe6b" + integrity sha512-6KVTvhJYyXQVFMDxMCxqf9IgdI0dhdaIKR9WN9U+w3xcvNEWCgwzK5LaSx6hvthgh/sukJb3bC4jMnIUXkWu+A== dependencies: "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^25.5.0" + "@jest/test-sequencer" "^25.5.2" "@jest/types" "^25.5.0" - babel-jest "^25.5.0" + babel-jest "^25.5.1" chalk "^3.0.0" deepmerge "^4.2.2" glob "^7.1.1" @@ -6434,9 +6441,9 @@ jest-config@^25.5.0: jest-environment-jsdom "^25.5.0" jest-environment-node "^25.5.0" jest-get-type "^25.2.6" - jest-jasmine2 "^25.5.0" + jest-jasmine2 "^25.5.2" jest-regex-util "^25.2.6" - jest-resolve "^25.5.0" + jest-resolve "^25.5.1" jest-util "^25.5.0" jest-validate "^25.5.0" micromatch "^4.0.2" @@ -6500,12 +6507,13 @@ jest-get-type@^25.2.6: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== -jest-haste-map@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-25.5.0.tgz#5cb0fb5a2887f1dcfe578aade20979afd500179d" - integrity sha512-GTyTQ7tvWRUNUZKDl6DBUDJdrhXClcJ7Y0NdoRBJbOmN1KbrZIjSEmcoTgaOLOL+VwvLWhgphMR7HJ9Ywtp76Q== +jest-haste-map@^25.5.1: + version "25.5.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-25.5.1.tgz#1df10f716c1d94e60a1ebf7798c9fb3da2620943" + integrity sha512-dddgh9UZjV7SCDQUrQ+5t9yy8iEgKc1AKqZR9YDww8xsVOtzPQSMVLDChc21+g29oTRexb9/B0bIlZL+sWmvAQ== dependencies: "@jest/types" "^25.5.0" + "@types/graceful-fs" "^4.1.2" anymatch "^3.0.3" fb-watchman "^2.0.0" graceful-fs "^4.2.4" @@ -6519,10 +6527,10 @@ jest-haste-map@^25.5.0: optionalDependencies: fsevents "^2.1.2" -jest-jasmine2@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-25.5.0.tgz#55f5a0a264a200bc8b9fa21a5e909dbc2befd084" - integrity sha512-e66pVthiFQairNJddx7xoENQV9q3H8pNFj4SlCRb2/hi/ztVeO7RY3h41jpL/OZ5R4ewar36quJebL16jNoliQ== +jest-jasmine2@^25.5.2: + version "25.5.2" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-25.5.2.tgz#ea7825e965309ccfa610435f8a23a663339f8e44" + integrity sha512-wRtHAy97F4hafJgnh5CwI/N1tDo7z+urteQAyr3rjK7X3TZWX5hSV4cO7WIBKLDV0kPICCmsGiNYs1caeHD/sQ== dependencies: "@babel/traverse" "^7.1.0" "@jest/environment" "^25.5.0" @@ -6536,8 +6544,8 @@ jest-jasmine2@^25.5.0: jest-each "^25.5.0" jest-matcher-utils "^25.5.0" jest-message-util "^25.5.0" - jest-runtime "^25.5.0" - jest-snapshot "^25.5.0" + jest-runtime "^25.5.2" + jest-snapshot "^25.5.1" jest-util "^25.5.0" pretty-format "^25.5.0" throat "^5.0.0" @@ -6591,19 +6599,19 @@ jest-regex-util@^25.2.6: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-25.2.6.tgz#d847d38ba15d2118d3b06390056028d0f2fd3964" integrity sha512-KQqf7a0NrtCkYmZZzodPftn7fL1cq3GQAFVMn5Hg8uKx/fIenLEobNanUxb7abQ1sjADHBseG/2FGpsv/wr+Qw== -jest-resolve-dependencies@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-25.5.0.tgz#d5e6ea2984aea22121f85a8cf5bcbdea35ae1d96" - integrity sha512-TXTYxNSfB9EBl1/bPUyC4gPCy+WI/DhTtePfWckvS9qworAhq9HJI1OBSoHFP5X2WeO/mx4rCfU3atWo+OH7IQ== +jest-resolve-dependencies@^25.5.2: + version "25.5.2" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-25.5.2.tgz#7409d14437497339e0acb88575408f2265c9a58d" + integrity sha512-4xlPp6/SFFZj7g7WkhoKEEWsYqmAK6WcmFFRfDJ0K4T2f/MCJgFEPqv1F88ro6ZJdpOti08CxGku4gBwau/RjQ== dependencies: "@jest/types" "^25.5.0" jest-regex-util "^25.2.6" - jest-snapshot "^25.5.0" + jest-snapshot "^25.5.1" -jest-resolve@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-25.5.0.tgz#0099a09857a68565429b17c973cfa4227f765015" - integrity sha512-quY4fdl64UwIGZhrbWgHCORC4xPgrM+UUzucYW0Oy1PjIUHgazVTji+XtW1iQRbsrJEpfs974L2oXX3QHaYBaA== +jest-resolve@^25.5.1: + version "25.5.1" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-25.5.1.tgz#0e6fbcfa7c26d2a5fe8f456088dc332a79266829" + integrity sha512-Hc09hYch5aWdtejsUZhA+vSzcotf7fajSlPA6EZPE1RmPBAD39XtJhvHWFStid58iit4IPDLI/Da4cwdDmAHiQ== dependencies: "@jest/types" "^25.5.0" browser-resolve "^1.11.3" @@ -6615,10 +6623,10 @@ jest-resolve@^25.5.0: resolve "^1.17.0" slash "^3.0.0" -jest-runner@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-25.5.0.tgz#a32546675cbcf4e32086138f6c56c8423add6234" - integrity sha512-BJRbtZGe9V19Cv3ARFrpAfMHoHObUYLXNBKS4LTYBd85OJEp8DyFpxCG5g3AobrtmuMIvIbcNg4MvWlTtN3ODQ== +jest-runner@^25.5.2: + version "25.5.2" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-25.5.2.tgz#af9b50736d834b9892fd240e89c984712cf53dd6" + integrity sha512-GvaM0AWSfyer46BEranPSmKoNNW9RqLGnjKftE6I5Ia6cfjdHHeTHAus7Mh9PdjWzGqrXsLSGdErX+4wMvN3rQ== dependencies: "@jest/console" "^25.5.0" "@jest/environment" "^25.5.0" @@ -6627,30 +6635,30 @@ jest-runner@^25.5.0: chalk "^3.0.0" exit "^0.1.2" graceful-fs "^4.2.4" - jest-config "^25.5.0" + jest-config "^25.5.2" jest-docblock "^25.3.0" - jest-haste-map "^25.5.0" - jest-jasmine2 "^25.5.0" + jest-haste-map "^25.5.1" + jest-jasmine2 "^25.5.2" jest-leak-detector "^25.5.0" jest-message-util "^25.5.0" - jest-resolve "^25.5.0" - jest-runtime "^25.5.0" + jest-resolve "^25.5.1" + jest-runtime "^25.5.2" jest-util "^25.5.0" jest-worker "^25.5.0" source-map-support "^0.5.6" throat "^5.0.0" -jest-runtime@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-25.5.0.tgz#d1df2c601710974001f7095ab25c865ce5882cbc" - integrity sha512-s7TqawKRjaNaE82PjXxDYVhjrMQqjTiiY63N1jFcYtX2xtg05xsgCBk0ls6NMR3fy3AtvbPIQjD3FpssH01l6A== +jest-runtime@^25.5.2: + version "25.5.2" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-25.5.2.tgz#cf98a455e15f86120a0bf4dbf494b2e54a0a20dc" + integrity sha512-UQTPBnE73qpGMKAXYB2agoC+6hMyT3dWXVL+cYibCFRm0tx2A+0+8wceoivRCtxQGaQr52c+qMRIOIRqmhAgHQ== dependencies: "@jest/console" "^25.5.0" "@jest/environment" "^25.5.0" - "@jest/globals" "^25.5.0" + "@jest/globals" "^25.5.2" "@jest/source-map" "^25.5.0" "@jest/test-result" "^25.5.0" - "@jest/transform" "^25.5.0" + "@jest/transform" "^25.5.1" "@jest/types" "^25.5.0" "@types/yargs" "^15.0.0" chalk "^3.0.0" @@ -6658,13 +6666,13 @@ jest-runtime@^25.5.0: exit "^0.1.2" glob "^7.1.3" graceful-fs "^4.2.4" - jest-config "^25.5.0" - jest-haste-map "^25.5.0" + jest-config "^25.5.2" + jest-haste-map "^25.5.1" jest-message-util "^25.5.0" jest-mock "^25.5.0" jest-regex-util "^25.2.6" - jest-resolve "^25.5.0" - jest-snapshot "^25.5.0" + jest-resolve "^25.5.1" + jest-snapshot "^25.5.1" jest-util "^25.5.0" jest-validate "^25.5.0" realpath-native "^2.0.0" @@ -6679,10 +6687,10 @@ jest-serializer@^25.5.0: dependencies: graceful-fs "^4.2.4" -jest-snapshot@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-25.5.0.tgz#0344dc1b8a949aeffefa45075508bb6277ee07d1" - integrity sha512-DveG7ZRn6HEmpDxpZXXR/U5x/aKG5N88tdaB+CH0d5jpb9tuvLMZn8rGZeBiLPS0RCO5VIlu8HL/WtY6wMk0QA== +jest-snapshot@^25.5.1: + version "25.5.1" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-25.5.1.tgz#1a2a576491f9961eb8d00c2e5fd479bc28e5ff7f" + integrity sha512-C02JE1TUe64p2v1auUJ2ze5vcuv32tkv9PyhEb318e8XOKF7MOyXdJ7kdjbvrp3ChPLU2usI7Rjxs97Dj5P0uQ== dependencies: "@babel/types" "^7.0.0" "@jest/types" "^25.5.0" @@ -6694,7 +6702,7 @@ jest-snapshot@^25.5.0: jest-get-type "^25.2.6" jest-matcher-utils "^25.5.0" jest-message-util "^25.5.0" - jest-resolve "^25.5.0" + jest-resolve "^25.5.1" make-dir "^3.0.0" natural-compare "^1.4.0" pretty-format "^25.5.0" @@ -6743,14 +6751,14 @@ jest-worker@^25.5.0: merge-stream "^2.0.0" supports-color "^7.0.0" -jest@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-25.5.0.tgz#60c1436335448edeae0eb008e152225d3c1d3617" - integrity sha512-wHCEcs3cyQmQfn2qNYoC/g51TGOE50F6dSsGNqgkkUHYDND29Cqe88FHDNXF04P7odYhkABxJ4Fe8kbig8R/8g== +jest@^25.5.2: + version "25.5.2" + resolved "https://registry.yarnpkg.com/jest/-/jest-25.5.2.tgz#9b90c64b0d3d1fadb796e4e6f7f7a6c7d5282190" + integrity sha512-uJwrQNpNwhlP4SX3lpvjc5ucOULeWUCQCfrREqvQW5phAy04q5lQPsGM6Z0T1Psdnuf9CkycpoNEL6O3FMGcsg== dependencies: - "@jest/core" "^25.5.0" + "@jest/core" "^25.5.2" import-local "^3.0.2" - jest-cli "^25.5.0" + jest-cli "^25.5.2" jju@^1.1.0, jju@~1.4.0: version "1.4.0" From ca3d7a3b180daad1177bb5cb389f0710cb630edf Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Wed, 29 Apr 2020 19:08:57 -0700 Subject: [PATCH 31/61] refactor(jest): rename jest module to matcher --- packages/jest/__tests__/{jest.test.ts => matcher.test.ts} | 2 +- packages/jest/src/index.ts | 8 ++++++++ packages/jest/src/{jest.ts => matcher.ts} | 0 3 files changed, 9 insertions(+), 1 deletion(-) rename packages/jest/__tests__/{jest.test.ts => matcher.test.ts} (99%) create mode 100644 packages/jest/src/index.ts rename packages/jest/src/{jest.ts => matcher.ts} (100%) diff --git a/packages/jest/__tests__/jest.test.ts b/packages/jest/__tests__/matcher.test.ts similarity index 99% rename from packages/jest/__tests__/jest.test.ts rename to packages/jest/__tests__/matcher.test.ts index 60a0f8ee..82dd2390 100644 --- a/packages/jest/__tests__/jest.test.ts +++ b/packages/jest/__tests__/matcher.test.ts @@ -6,7 +6,7 @@ */ import 'global-jsdom/lib/register'; // https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#required-globals -import { matcherHintMsg, toBeAccessible, toBeAccessibleWith } from '../src/jest'; +import { matcherHintMsg, toBeAccessible, toBeAccessibleWith } from '../src/matcher'; import { extended, recommended } from '@sa11y/preset-rules'; import { afterEachCleanup, diff --git a/packages/jest/src/index.ts b/packages/jest/src/index.ts new file mode 100644 index 00000000..741a1108 --- /dev/null +++ b/packages/jest/src/index.ts @@ -0,0 +1,8 @@ +/* + * Copyright (c) 2020, salesforce.com, inc. + * All rights reserved. + * SPDX-License-Identifier: BSD-3-Clause + * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause + */ + +export { toBeAccessible, toBeAccessibleWith } from './matcher'; diff --git a/packages/jest/src/jest.ts b/packages/jest/src/matcher.ts similarity index 100% rename from packages/jest/src/jest.ts rename to packages/jest/src/matcher.ts From 618868cc5d564dea569ff9b18ef407937f167d2d Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Thu, 30 Apr 2020 12:18:05 -0700 Subject: [PATCH 32/61] improvement(root): fix project references in typescript configs Cleanup common config to remove comments --- packages/assert/tsconfig.json | 5 +-- packages/jest/tsconfig.json | 3 +- packages/test-utils/tsconfig.json | 3 +- tsconfig.common.json | 64 +------------------------------ 4 files changed, 6 insertions(+), 69 deletions(-) diff --git a/packages/assert/tsconfig.json b/packages/assert/tsconfig.json index 97b0ba31..71f364be 100644 --- a/packages/assert/tsconfig.json +++ b/packages/assert/tsconfig.json @@ -5,8 +5,5 @@ "outDir": "dist" }, "include": ["src"], - "references": [ - { "path": "../preset-rules" }, - { "path": "../format" } - ] + "references": [{ "path": "../preset-rules" }, { "path": "../format" }, { "path": "../test-utils" }] } diff --git a/packages/jest/tsconfig.json b/packages/jest/tsconfig.json index fe6e6983..fa9f771b 100644 --- a/packages/jest/tsconfig.json +++ b/packages/jest/tsconfig.json @@ -4,5 +4,6 @@ "rootDir": "src", "outDir": "dist" }, - "include": ["src"] + "include": ["src"], + "references": [{ "path": "../preset-rules" }, { "path": "../assert" }, { "path": "../test-utils" }] } diff --git a/packages/test-utils/tsconfig.json b/packages/test-utils/tsconfig.json index fe6e6983..090d3e8a 100644 --- a/packages/test-utils/tsconfig.json +++ b/packages/test-utils/tsconfig.json @@ -4,5 +4,6 @@ "rootDir": "src", "outDir": "dist" }, - "include": ["src"] + "include": ["src"], + "references": [{ "path": "../preset-rules" }] } diff --git a/tsconfig.common.json b/tsconfig.common.json index b07146b0..1499e0de 100644 --- a/tsconfig.common.json +++ b/tsconfig.common.json @@ -1,78 +1,16 @@ { - // http://www.typescriptlang.org/docs/handbook/compiler-options.html "compilerOptions": { - /* Basic Options */ - /* Specify library files to be included in the compilation. */ "lib": ["DOM", "DOM.Iterable", "ESNext"], - /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */ "target": "es2016", - /* Generates corresponding '.map' file. */ "sourceMap": true, - /* Generates corresponding '.d.ts' file. */ "declaration": true, - /* Enable project compilation */ "composite": true, - // "incremental": true, /* Enable incremental compilation */ - // "allowJs": true, /* Allow javascript files to be compiled. */ - // "checkJs": true, /* Report errors in .js files. */ - // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ - // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ - // "outDir": "./dist", /* Redirect output structure to the directory. */ - // "outFile": "./", /* Concatenate and emit output to single file. */ - // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ - // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ - // "removeComments": true, /* Do not emit comments to output. */ - // "noEmit": true, /* Do not emit outputs. */ - // "importHelpers": true, /* Import emit helpers from 'tslib'. */ - // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ - // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ - - /* Strict Type-Checking Options */ - /* Enable all strict type-checking options. */ "strict": true, - // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* Enable strict null checks. */ - // "strictFunctionTypes": true, /* Enable strict checking of function types. */ - // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ - // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ - // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ - // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ - - /* Additional Checks */ - /* Report errors on unused locals. */ + "noEmitOnError": true, "noUnusedLocals": true, - // "noUnusedParameters": true, /* Report errors on unused parameters. */ - // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ - // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ - - /* Module Resolution Options */ - /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */ "module": "ESNext", - /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ "moduleResolution": "node", - /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ "esModuleInterop": true, - // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ - // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ - // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ - // "typeRoots": [], /* List of folders to include type definitions from. */ - // "types": [], /* Type declaration files to be included in compilation. */ - // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ - // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - - /* Source Map Options */ - // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ - // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ - - /* Experimental Options */ - // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ - // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ - - /* Advanced Options */ - /* Disallow inconsistently-cased references to the same file. */ "forceConsistentCasingInFileNames": true }, "exclude": ["*/dist", "**/__tests__"] From 2546f72998e258c71f9bc19e721f768b5317d358 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Thu, 30 Apr 2020 14:39:54 -0700 Subject: [PATCH 33/61] refactor(jest): add util func to register a11y matchers --- packages/jest/README.md | 32 ++++++++++++++++++++----- packages/jest/__tests__/matcher.test.ts | 12 ++++++++-- packages/jest/src/index.ts | 1 + packages/jest/src/matcher.ts | 2 +- packages/jest/src/setup.ts | 30 +++++++++++++++++++++++ 5 files changed, 68 insertions(+), 9 deletions(-) create mode 100644 packages/jest/src/setup.ts diff --git a/packages/jest/README.md b/packages/jest/README.md index a317c25f..62f3ab76 100644 --- a/packages/jest/README.md +++ b/packages/jest/README.md @@ -2,18 +2,38 @@ Accessibility matcher for [Jest](https://jestjs.io) + + + + +- [Setup](#setup) +- [Usage](#usage) + + + +## Setup + +- TODO: Based on https://github.com/jest-community/jest-extended#setup + ## Usage -``` -import { toBeAccessible, toBeAccessibleWith } from '@sa11y/jest' +```typescript +import { recommended } from '@sa11y/preset-rules'; +import { registerA11yMatchers } from "@sa11y/jest"; + + +beforeAll(() => { + registerA11yMatchers(); +}); -// Assert that the DOM is accessible it('should be accessible', async () => { // Setup DOM to be tested for accessibility ... - // assert that dom is accessible (using EXTENDED preset rules) + + // assert that DOM is accessible (using extended preset-rule) await expect(document).toBeAccessible(); - // use RECOMMENDED preset rules - await expect(document).toBeAccessibleWith(RECOMMENDED); + + // use recommended preset-rule + await expect(document).toBeAccessibleWith(recommended); }); ``` diff --git a/packages/jest/__tests__/matcher.test.ts b/packages/jest/__tests__/matcher.test.ts index 82dd2390..94aeb358 100644 --- a/packages/jest/__tests__/matcher.test.ts +++ b/packages/jest/__tests__/matcher.test.ts @@ -7,6 +7,7 @@ import 'global-jsdom/lib/register'; // https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#required-globals import { matcherHintMsg, toBeAccessible, toBeAccessibleWith } from '../src/matcher'; +import { registerA11yMatchers } from '../src'; import { extended, recommended } from '@sa11y/preset-rules'; import { afterEachCleanup, @@ -23,14 +24,21 @@ const domConfigParams = cartesianProduct(domParams, a11yConfigParams); beforeAll(() => { beforeAllSetup(); - expect.extend({ toBeAccessible }); - expect.extend({ toBeAccessibleWith }); + registerA11yMatchers(); }); afterEach(() => { afterEachCleanup(); }); +describe('a11y matchers', () => { + it('should be extendable with expect', () => { + // Mostly here for code cov as it doesn't register correctly with just registerA11yMatchers() + expect.extend({ toBeAccessible }); + expect.extend({ toBeAccessibleWith }); + }); +}); + describe('toBeAccessible jest a11y matcher', () => { it.each(domParams)('should not throw error for dom with no a11y issues (Dom arg: %#)', async (dom) => { document.body.innerHTML = domWithNoA11yIssues; diff --git a/packages/jest/src/index.ts b/packages/jest/src/index.ts index 741a1108..12ad1ee8 100644 --- a/packages/jest/src/index.ts +++ b/packages/jest/src/index.ts @@ -6,3 +6,4 @@ */ export { toBeAccessible, toBeAccessibleWith } from './matcher'; +export { registerA11yMatchers } from './setup'; diff --git a/packages/jest/src/matcher.ts b/packages/jest/src/matcher.ts index 5eda0060..d043527a 100644 --- a/packages/jest/src/matcher.ts +++ b/packages/jest/src/matcher.ts @@ -11,7 +11,7 @@ import { matcherHint } from 'jest-matcher-utils'; export const matcherHintMsg = `expected document to have no accessibility violations but found following issues: `; -// Type def for custom jest a11y matcher toBeAccessible +// Type def for custom jest a11y matchers // Ref: https://jestjs.io/docs/en/expect.html#expectextendmatchers declare global { // eslint-disable-next-line @typescript-eslint/no-namespace diff --git a/packages/jest/src/setup.ts b/packages/jest/src/setup.ts new file mode 100644 index 00000000..f9e7af3d --- /dev/null +++ b/packages/jest/src/setup.ts @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2020, salesforce.com, inc. + * All rights reserved. + * SPDX-License-Identifier: BSD-3-Clause + * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause + */ + +import { toBeAccessible, toBeAccessibleWith } from '..'; + +/** + * Register accessibility helpers toBeAccessible as jest matchers + */ +export function registerA11yMatchers() { + // Ref: https://github.com/jest-community/jest-extended + // eslint-disable-next-line @typescript-eslint/ban-ts-ignore + // @ts-ignore error TS2339: Property 'expect' does not exist on type 'Global'. + const jestExpect = global.expect; + if (jestExpect !== undefined) { + jestExpect.extend({ toBeAccessible }); + jestExpect.extend({ toBeAccessibleWith }); + } else { + // Don't expect to run into this situation under normal circumstance. Not sure how to test for it easily either. + /* istanbul ignore next */ + throw new Error( + "Unable to find Jest's global expect." + + '\nPlease check you have added @sa11y/jest correctly to your jest configuration.' + + '\nSee https://github.com/salesforce/sa11y/blob/master/packages/jest/README.md for help.' + ); + } +} From 7466a6f0584e3654e0f823c4c3247acb1df4012c Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Thu, 30 Apr 2020 15:29:57 -0700 Subject: [PATCH 34/61] test(jest): add test for a11y matcher setup; fix import --- packages/jest/__tests__/setup.test.ts | 15 +++++++++++++++ packages/jest/src/setup.ts | 4 ++-- 2 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 packages/jest/__tests__/setup.test.ts diff --git a/packages/jest/__tests__/setup.test.ts b/packages/jest/__tests__/setup.test.ts new file mode 100644 index 00000000..e0a7b899 --- /dev/null +++ b/packages/jest/__tests__/setup.test.ts @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2020, salesforce.com, inc. + * All rights reserved. + * SPDX-License-Identifier: BSD-3-Clause + * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause + */ + +import { registerA11yMatchers } from '../src'; + +describe('after registering the a11y matcher', () => { + registerA11yMatchers(); + it.each(['toBeAccessible', 'toBeAccessibleWith'])('%s should be defined on expect object', (matcherName) => { + expect(expect[matcherName]).toBeDefined(); + }); +}); diff --git a/packages/jest/src/setup.ts b/packages/jest/src/setup.ts index f9e7af3d..764d56f8 100644 --- a/packages/jest/src/setup.ts +++ b/packages/jest/src/setup.ts @@ -5,12 +5,12 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ -import { toBeAccessible, toBeAccessibleWith } from '..'; +import { toBeAccessible, toBeAccessibleWith } from './matcher'; /** * Register accessibility helpers toBeAccessible as jest matchers */ -export function registerA11yMatchers() { +export function registerA11yMatchers(): void { // Ref: https://github.com/jest-community/jest-extended // eslint-disable-next-line @typescript-eslint/ban-ts-ignore // @ts-ignore error TS2339: Property 'expect' does not exist on type 'Global'. From 9e56fb0769a5dfb6312c592773bd753417f5b172 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Thu, 30 Apr 2020 16:50:08 -0700 Subject: [PATCH 35/61] refactor(jest): move fix a11y config to be a func move from test utils jest setup --- packages/jest/__tests__/setup.test.ts | 12 +++++++++--- packages/jest/src/index.ts | 2 +- packages/jest/src/setup.ts | 13 +++++++++++++ 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/packages/jest/__tests__/setup.test.ts b/packages/jest/__tests__/setup.test.ts index e0a7b899..b21a3850 100644 --- a/packages/jest/__tests__/setup.test.ts +++ b/packages/jest/__tests__/setup.test.ts @@ -5,11 +5,17 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ -import { registerA11yMatchers } from '../src'; +import { fixA11yConfig, registerA11yMatchers } from '../src'; +import { extended, recommended } from '@sa11y/preset-rules'; -describe('after registering the a11y matcher', () => { +describe('jest setup', () => { registerA11yMatchers(); - it.each(['toBeAccessible', 'toBeAccessibleWith'])('%s should be defined on expect object', (matcherName) => { + it.each(['toBeAccessible', 'toBeAccessibleWith'])('should defined %s matcher on expect object', (matcherName) => { expect(expect[matcherName]).toBeDefined(); }); + + fixA11yConfig(); + it.each([extended, recommended])('should customize preset-rules as expected', (config) => { + expect(config.rules['color-contrast'].enabled).toBe(false); + }); }); diff --git a/packages/jest/src/index.ts b/packages/jest/src/index.ts index 12ad1ee8..42d2b1c9 100644 --- a/packages/jest/src/index.ts +++ b/packages/jest/src/index.ts @@ -6,4 +6,4 @@ */ export { toBeAccessible, toBeAccessibleWith } from './matcher'; -export { registerA11yMatchers } from './setup'; +export { fixA11yConfig, registerA11yMatchers } from './setup'; diff --git a/packages/jest/src/setup.ts b/packages/jest/src/setup.ts index 764d56f8..a4bcb56c 100644 --- a/packages/jest/src/setup.ts +++ b/packages/jest/src/setup.ts @@ -6,6 +6,7 @@ */ import { toBeAccessible, toBeAccessibleWith } from './matcher'; +import { extended, recommended } from '@sa11y/preset-rules'; /** * Register accessibility helpers toBeAccessible as jest matchers @@ -28,3 +29,15 @@ export function registerA11yMatchers(): void { ); } } + +/** + * Customize sa11y preset rules specific to JSDOM + */ +export function fixA11yConfig(): void { + [extended, recommended].forEach( + (config) => + (config.rules = { + 'color-contrast': { enabled: false }, // Disable color-contrast for jsdom + }) + ); +} From e415437492775814435687a31505644024d725a7 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Thu, 30 Apr 2020 16:51:55 -0700 Subject: [PATCH 36/61] refactor(jest): consolidate before test setup remove obsolete dependencies --- packages/assert/__tests__/assert.test.ts | 10 ++---- packages/jest/__tests__/matcher.test.ts | 17 +++------- packages/jest/package.json | 5 +-- packages/test-utils/README.md | 12 +++---- .../test-utils/__tests__/test-utils.test.ts | 12 ++----- packages/test-utils/src/index.ts | 3 +- packages/test-utils/src/jest-setup.ts | 31 ------------------- packages/test-utils/src/utils.ts | 8 +++++ packages/test-utils/tsconfig.json | 3 +- 9 files changed, 27 insertions(+), 74 deletions(-) delete mode 100644 packages/test-utils/src/jest-setup.ts diff --git a/packages/assert/__tests__/assert.test.ts b/packages/assert/__tests__/assert.test.ts index 6ecbfae8..2ea41d0a 100644 --- a/packages/assert/__tests__/assert.test.ts +++ b/packages/assert/__tests__/assert.test.ts @@ -9,14 +9,10 @@ import 'global-jsdom/lib/register'; // https://github.com/dequelabs/axe-core/blo import { assertAccessible, axeRuntimeExceptionMsgPrefix } from '../src/assert'; import { extended, getA11yConfig, recommended } from '@sa11y/preset-rules'; import { a11yResultsFormatter } from '@sa11y/format'; -import { afterEachCleanup, beforeAllSetup, domWithA11yIssues, domWithNoA11yIssues } from '@sa11y/test-utils'; +import { beforeEachSetup, domWithA11yIssues, domWithNoA11yIssues } from '@sa11y/test-utils'; -beforeAll(() => { - beforeAllSetup(); -}); - -afterEach(() => { - afterEachCleanup(); +beforeEach(() => { + beforeEachSetup(); }); /** diff --git a/packages/jest/__tests__/matcher.test.ts b/packages/jest/__tests__/matcher.test.ts index 94aeb358..0e3bda18 100644 --- a/packages/jest/__tests__/matcher.test.ts +++ b/packages/jest/__tests__/matcher.test.ts @@ -5,17 +5,10 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ -import 'global-jsdom/lib/register'; // https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#required-globals import { matcherHintMsg, toBeAccessible, toBeAccessibleWith } from '../src/matcher'; -import { registerA11yMatchers } from '../src'; +import { fixA11yConfig, registerA11yMatchers } from '../src'; import { extended, recommended } from '@sa11y/preset-rules'; -import { - afterEachCleanup, - beforeAllSetup, - cartesianProduct, - domWithA11yIssues, - domWithNoA11yIssues, -} from '@sa11y/test-utils'; +import { beforeEachSetup, cartesianProduct, domWithA11yIssues, domWithNoA11yIssues } from '@sa11y/test-utils'; // Collection of values to be tested passed in as different API parameters const a11yConfigParams = [extended, recommended, undefined]; @@ -23,12 +16,12 @@ const domParams = [document, undefined]; const domConfigParams = cartesianProduct(domParams, a11yConfigParams); beforeAll(() => { - beforeAllSetup(); registerA11yMatchers(); + fixA11yConfig(); }); -afterEach(() => { - afterEachCleanup(); +beforeEach(() => { + beforeEachSetup(); }); describe('a11y matchers', () => { diff --git a/packages/jest/package.json b/packages/jest/package.json index a6a95822..e039a0df 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -28,9 +28,6 @@ "jest": "^25.5.2" }, "devDependencies": { - "@sa11y/test-utils": "0.1.0", - "axe-core": "^3.5.3", - "global-jsdom": "^6.1.0", - "jsdom": "^16.2.2" + "@sa11y/test-utils": "0.1.0" } } diff --git a/packages/test-utils/README.md b/packages/test-utils/README.md index 3a18c84d..f7a47792 100644 --- a/packages/test-utils/README.md +++ b/packages/test-utils/README.md @@ -13,21 +13,19 @@ Private package providing test utilities for @sa11y packages ```typescript import { - afterEachCleanup, - beforeAllSetup, + beforeEachSetup, domWithA11yIssues, domWithNoA11yIssues, } from '@sa11y/test-utils'; -import { toBeAccessible } from '@sa11y/jest'; +import { registerA11yMatchers } from '@sa11y/jest'; import {beforeEach} from "@jest/globals"; beforeAll(() => { - beforeAllSetup(); - expect.extend({toBeAccessible}); + registerA11yMatchers(); }); -afterEach(() => { - afterEachCleanup(); +beforeEach(() => { + beforeEachSetup(); }); describe('...', () => { diff --git a/packages/test-utils/__tests__/test-utils.test.ts b/packages/test-utils/__tests__/test-utils.test.ts index 48f3ebe6..49bef915 100644 --- a/packages/test-utils/__tests__/test-utils.test.ts +++ b/packages/test-utils/__tests__/test-utils.test.ts @@ -4,19 +4,17 @@ * SPDX-License-Identifier: BSD-3-Clause * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ -import { afterEachCleanup, beforeAllSetup, cartesianProduct } from '../src'; -import { extended, recommended } from '@sa11y/preset-rules'; +import { beforeEachSetup, cartesianProduct } from '../src'; const testDOMCleanupContent = 'foo'; beforeAll(() => { - beforeAllSetup(); // Populate DOM to test cleanup after each test document.body.innerHTML = testDOMCleanupContent; }); -afterEach(() => { - afterEachCleanup(); +beforeEach(() => { + beforeEachSetup(); }); describe('test utils jest setup', () => { @@ -24,10 +22,6 @@ describe('test utils jest setup', () => { expect(document.documentElement.lang).toBe('en'); }); - it.each([extended, recommended])('should customize preset-rules as expected', (config) => { - expect(config.rules['color-contrast'].enabled).toBe(false); - }); - it('should cleanup document', () => { expect(document.body.innerHTML).not.toEqual(testDOMCleanupContent); expect(document.body.innerHTML).toEqual(''); diff --git a/packages/test-utils/src/index.ts b/packages/test-utils/src/index.ts index a53fa0f3..26500d9f 100644 --- a/packages/test-utils/src/index.ts +++ b/packages/test-utils/src/index.ts @@ -6,5 +6,4 @@ */ export { domWithA11yIssues, domWithNoA11yIssues } from './test-data'; -export { cartesianProduct } from './utils'; -export { beforeAllSetup, afterEachCleanup } from './jest-setup'; +export { beforeEachSetup, cartesianProduct } from './utils'; diff --git a/packages/test-utils/src/jest-setup.ts b/packages/test-utils/src/jest-setup.ts deleted file mode 100644 index 4b21f121..00000000 --- a/packages/test-utils/src/jest-setup.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2020, salesforce.com, inc. - * All rights reserved. - * SPDX-License-Identifier: BSD-3-Clause - * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause - */ -import { extended, recommended } from '@sa11y/preset-rules'; - -// TODO: Can these functions be moved into @sa11y/jest as utils or as setupFiles so that API users can also use them? - -/** - * Common Jest setup that sets up jsdom and customizes preset-rules for jsdom - */ -export function beforeAllSetup(): void { - document.documentElement.lang = 'en'; // required for a11y lang check - - // Customize rules specific to jsdom - [extended, recommended].forEach( - (config) => - (config.rules = { - 'color-contrast': { enabled: false }, // Disable color-contrast for jsdom - }) - ); -} - -/** - * Common Jest cleanup after each test - */ -export function afterEachCleanup(): void { - document.body.innerHTML = ''; // reset dom body -} diff --git a/packages/test-utils/src/utils.ts b/packages/test-utils/src/utils.ts index af574e55..29754eb7 100644 --- a/packages/test-utils/src/utils.ts +++ b/packages/test-utils/src/utils.ts @@ -14,3 +14,11 @@ export function cartesianProduct(...sets: Array): Array { const flatten = (arr: Array) => [].concat([], ...arr); return sets.reduce((acc, set) => flatten(acc.map((x: any) => set.map((y: any) => [...x, y]))), [[]]); } + +/** + * Common Jest setup that sets up JSDOM as required for the tests + */ +export function beforeEachSetup(): void { + document.documentElement.lang = 'en'; // required for a11y lang check + document.body.innerHTML = ''; // reset body content +} diff --git a/packages/test-utils/tsconfig.json b/packages/test-utils/tsconfig.json index 090d3e8a..fe6e6983 100644 --- a/packages/test-utils/tsconfig.json +++ b/packages/test-utils/tsconfig.json @@ -4,6 +4,5 @@ "rootDir": "src", "outDir": "dist" }, - "include": ["src"], - "references": [{ "path": "../preset-rules" }] + "include": ["src"] } From e1e271abfdcf7b6fa2f878997fb21fd40ef9a955 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Thu, 30 Apr 2020 17:14:52 -0700 Subject: [PATCH 37/61] improvement(jest): call fix config from the jest matcher refactor fix config func to take config param explictly --- packages/jest/__tests__/matcher.test.ts | 3 +-- packages/jest/__tests__/setup.test.ts | 2 +- packages/jest/src/matcher.ts | 3 +++ packages/jest/src/setup.ts | 14 ++++++-------- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/jest/__tests__/matcher.test.ts b/packages/jest/__tests__/matcher.test.ts index 0e3bda18..5a44ff4f 100644 --- a/packages/jest/__tests__/matcher.test.ts +++ b/packages/jest/__tests__/matcher.test.ts @@ -6,7 +6,7 @@ */ import { matcherHintMsg, toBeAccessible, toBeAccessibleWith } from '../src/matcher'; -import { fixA11yConfig, registerA11yMatchers } from '../src'; +import { registerA11yMatchers } from '../src'; import { extended, recommended } from '@sa11y/preset-rules'; import { beforeEachSetup, cartesianProduct, domWithA11yIssues, domWithNoA11yIssues } from '@sa11y/test-utils'; @@ -17,7 +17,6 @@ const domConfigParams = cartesianProduct(domParams, a11yConfigParams); beforeAll(() => { registerA11yMatchers(); - fixA11yConfig(); }); beforeEach(() => { diff --git a/packages/jest/__tests__/setup.test.ts b/packages/jest/__tests__/setup.test.ts index b21a3850..e241f93d 100644 --- a/packages/jest/__tests__/setup.test.ts +++ b/packages/jest/__tests__/setup.test.ts @@ -14,8 +14,8 @@ describe('jest setup', () => { expect(expect[matcherName]).toBeDefined(); }); - fixA11yConfig(); it.each([extended, recommended])('should customize preset-rules as expected', (config) => { + fixA11yConfig(config); expect(config.rules['color-contrast'].enabled).toBe(false); }); }); diff --git a/packages/jest/src/matcher.ts b/packages/jest/src/matcher.ts index d043527a..5c94bd26 100644 --- a/packages/jest/src/matcher.ts +++ b/packages/jest/src/matcher.ts @@ -8,6 +8,7 @@ import { assertAccessible } from '@sa11y/assert'; import { extended, A11yConfig } from '@sa11y/preset-rules'; import { matcherHint } from 'jest-matcher-utils'; +import { fixA11yConfig } from './setup'; export const matcherHintMsg = `expected document to have no accessibility violations but found following issues: `; @@ -35,6 +36,8 @@ export async function toBeAccessible( let isAccessible = true; let a11yViolations = ''; + fixA11yConfig(config); + try { await assertAccessible(receivedDom, config); } catch (e) { diff --git a/packages/jest/src/setup.ts b/packages/jest/src/setup.ts index a4bcb56c..3cc7da49 100644 --- a/packages/jest/src/setup.ts +++ b/packages/jest/src/setup.ts @@ -6,7 +6,7 @@ */ import { toBeAccessible, toBeAccessibleWith } from './matcher'; -import { extended, recommended } from '@sa11y/preset-rules'; +import { A11yConfig } from '@sa11y/preset-rules'; /** * Register accessibility helpers toBeAccessible as jest matchers @@ -33,11 +33,9 @@ export function registerA11yMatchers(): void { /** * Customize sa11y preset rules specific to JSDOM */ -export function fixA11yConfig(): void { - [extended, recommended].forEach( - (config) => - (config.rules = { - 'color-contrast': { enabled: false }, // Disable color-contrast for jsdom - }) - ); +export function fixA11yConfig(config: A11yConfig): void { + // TODO (refactor): Make immutable + config.rules = { + 'color-contrast': { enabled: false }, // Disable color-contrast + }; } From 8ca12bf13eb6f1acacd50827cdab0c9c912fb359 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Thu, 30 Apr 2020 17:37:13 -0700 Subject: [PATCH 38/61] improvement(jest): make fix a11y config immutable Freeze a11y config --- packages/jest/__tests__/setup.test.ts | 4 ++-- packages/jest/src/matcher.ts | 4 +--- packages/jest/src/setup.ts | 10 ++++++---- packages/preset-rules/src/a11yConfig.ts | 4 ++-- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/jest/__tests__/setup.test.ts b/packages/jest/__tests__/setup.test.ts index e241f93d..13600e6b 100644 --- a/packages/jest/__tests__/setup.test.ts +++ b/packages/jest/__tests__/setup.test.ts @@ -15,7 +15,7 @@ describe('jest setup', () => { }); it.each([extended, recommended])('should customize preset-rules as expected', (config) => { - fixA11yConfig(config); - expect(config.rules['color-contrast'].enabled).toBe(false); + expect(config.rules).toBeUndefined(); + expect(fixA11yConfig(config).rules['color-contrast'].enabled).toBe(false); }); }); diff --git a/packages/jest/src/matcher.ts b/packages/jest/src/matcher.ts index 5c94bd26..d09562cd 100644 --- a/packages/jest/src/matcher.ts +++ b/packages/jest/src/matcher.ts @@ -36,10 +36,8 @@ export async function toBeAccessible( let isAccessible = true; let a11yViolations = ''; - fixA11yConfig(config); - try { - await assertAccessible(receivedDom, config); + await assertAccessible(receivedDom, fixA11yConfig(config)); } catch (e) { isAccessible = false; a11yViolations = e; diff --git a/packages/jest/src/setup.ts b/packages/jest/src/setup.ts index 3cc7da49..00f6cb76 100644 --- a/packages/jest/src/setup.ts +++ b/packages/jest/src/setup.ts @@ -33,9 +33,11 @@ export function registerA11yMatchers(): void { /** * Customize sa11y preset rules specific to JSDOM */ -export function fixA11yConfig(config: A11yConfig): void { - // TODO (refactor): Make immutable - config.rules = { - 'color-contrast': { enabled: false }, // Disable color-contrast +export function fixA11yConfig(config: A11yConfig): A11yConfig { + return { + ...config, + rules: { + 'color-contrast': { enabled: false }, // Disable color-contrast + }, }; } diff --git a/packages/preset-rules/src/a11yConfig.ts b/packages/preset-rules/src/a11yConfig.ts index 83cda40a..9f539536 100644 --- a/packages/preset-rules/src/a11yConfig.ts +++ b/packages/preset-rules/src/a11yConfig.ts @@ -25,11 +25,11 @@ export interface A11yConfig extends RunOptions { * @returns A11yConfig with formatted rules */ export function getA11yConfig(rules: string[]): A11yConfig { - return { + return Object.freeze({ runOnly: { type: 'rule', values: rules, }, resultTypes: ['violations'], - }; + }); } From c4a4b8a89e49d0b37919f27b6e3c61d9ecb57b3d Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Thu, 30 Apr 2020 17:38:19 -0700 Subject: [PATCH 39/61] build(root): fix missing deps, build clean script --- package.json | 2 +- packages/jest/package.json | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 117f0e90..ed397deb 100644 --- a/package.json +++ b/package.json @@ -26,10 +26,10 @@ "test": "jest --coverage", "test:watch": "yarn test --watch", "build": "tsc --build", + "build:clean": "yarn build --clean", "build:watch": "yarn build --watch", "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s && git add CHANGELOG.md", "ci": "yarn install --frozen-lockfile && yarn build && yarn lint:all && yarn test", - "clean:build": "tsc --build --clean", "clean:install": "lerna clean" }, "config": { diff --git a/packages/jest/package.json b/packages/jest/package.json index e039a0df..8d284010 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -22,7 +22,9 @@ "dist/**/*.js" ], "dependencies": { - "jest-matcher-utils": "^25.5.0" + "jest-matcher-utils": "^25.5.0", + "@sa11y/preset-rules": "0.1.1", + "@sa11y/assert": "0.1.0" }, "peerDependencies": { "jest": "^25.5.2" From 4054e00ffb6bd726f7947b8c062693a784d8b4bf Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Thu, 30 Apr 2020 17:39:12 -0700 Subject: [PATCH 40/61] docs(root): add quick start section to contributing doc --- CONTRIBUTING.md | 90 ++++++++++++++++++++++++++++++------------------- 1 file changed, 56 insertions(+), 34 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e9fa52d0..3decc170 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,40 +2,59 @@ We want to encourage the developer community to contribute to Sa11y. This guide has instructions to install, build, test and contribute to the framework. Adapted from [salesforce/lwc](https://github.com/salesforce/lwc/blob/master/CONTRIBUTING.md) -- [Contributing Guidelines](#contributing-guidelines) - - [Requirements](#requirements) - - [Installation](#installation) - - [1) Download the repository](#1-download-the-repository) - - [2) Install Dependencies](#2-install-dependencies) - - [Building](#building) - - [Testing](#testing) - - [Unit Testing](#unit-testing) - - [Integration Testing](#integration-testing) - - [Editor Configurations](#editor-configurations) - - [Types](#types) - - [ESLint](#eslint) - - [Git Workflow](#git-workflow) - - [Fork the repo](#fork-the-repo) - - [Create a feature branch](#create-a-feature-branch) - - [Make your changes](#make-your-changes) - - [Rebase](#rebase) - - [Check your submission](#check-your-submission) - - [Lint your changes](#lint-your-changes) - - [Run tests](#run-tests) - - [Create a pull request](#create-a-pull-request) - - [Pull Request Title](#pull-request-title) - - [Update the pull request](#update-the-pull-request) - - [Commit Message Conventions](#commit-message-conventions) - - [Commit Message Format](#commit-message-format) - - [Reverting a commit](#reverting-a-commit) - - [Commit Type](#commit-type) - - [Commit Scope](#commit-scope) - - [Commit Subject](#commit-subject) - - [Commit Body](#commit-body) - - [Commit Footer](#commit-footer) + + + + +- [Quick start](#quick-start) +- [Requirements](#requirements) +- [Installation](#installation) + - [1) Download the repository](#1-download-the-repository) + - [2) Install Dependencies](#2-install-dependencies) +- [Building](#building) +- [Testing](#testing) + - [Unit Testing](#unit-testing) + - [Integration Testing](#integration-testing) +- [Editor Configurations](#editor-configurations) + - [Types](#types) + - [ESLint](#eslint) +- [Git Workflow](#git-workflow) + - [Fork the repo](#fork-the-repo) + - [Create a feature branch](#create-a-feature-branch) + - [Make your changes](#make-your-changes) + - [Rebase](#rebase) + - [Check your submission](#check-your-submission) + - [Lint your changes](#lint-your-changes) + - [Run tests](#run-tests) + - [Create a pull request](#create-a-pull-request) + - [Pull Request Title](#pull-request-title) + - [Update the pull request](#update-the-pull-request) + - [Commit Message Conventions](#commit-message-conventions) + - [Commit Message Format](#commit-message-format) + - [Reverting a commit](#reverting-a-commit) + - [Commit Type](#commit-type) + - [Commit Scope](#commit-scope) + - [Commit Subject](#commit-subject) + - [Commit Body](#commit-body) + - [Commit Footer](#commit-footer) + + Before you start, it helps to be familiar with [Web Accessibility](https://trailhead.salesforce.com/en/content/learn/trails/get-started-with-web-accessibility) +## Quick start + +1. `yarn install` to install dependencies +2. Make changes while building, testing and linting the changed files + +- `yarn build:watch` +- `yarn test:watch` +- `yarn lint:watch` + +3. Update changelog with `yarn changelog` +4. Stage changes in git and do `yarn commit` to check staged changes and commit them with a formatted commit message +5. Push changes to feature branch + ## Requirements - [Node](https://nodejs.org/) >= 12 @@ -53,7 +72,7 @@ git clone git@github.com:salesforce/sa11y.git ### 2) Install Dependencies -_We use [yarn](https://yarnpkg.com/) because it is significantly faster than npm for our use case. See this command [cheatsheet](https://yarnpkg.com/lang/en/docs/migrating-from-npm/)._ +_We use [yarn](https://yarnpkg.com/) because it is significantly faster than npm for our use case. See this command [cheat-sheet](https://yarnpkg.com/lang/en/docs/migrating-from-npm/)._ ```bash yarn install @@ -63,8 +82,11 @@ If this fails with an error about _UNABLE_TO_GET_ISSUER_CERT_LOCALLY_, _Error: u ## Building +When developing typescript compiler can be invoked using the `build` target. +With `:watch` the compiler would watch for changes and incrementally compile changed sources as required. + ```bash -yarn build +yarn build[:watch] ``` ## Testing @@ -80,7 +102,7 @@ yarn test Additionally, the testing can be started in 'watch' mode which allows for automatic test re-runs on save: ```bash -yarn test --watch +yarn test:watch ``` To execute a particular test, use the following command: From 4a16474a7ed2c81ee943f32b8fb237f3e998dee7 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Thu, 30 Apr 2020 19:01:31 -0700 Subject: [PATCH 41/61] chore(root): bump versions of changed packages --- packages/assert/package.json | 6 +++--- packages/format/package.json | 3 +-- packages/jest/package.json | 6 +++--- packages/preset-rules/package.json | 2 +- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/packages/assert/package.json b/packages/assert/package.json index 9430faa5..e190f946 100644 --- a/packages/assert/package.json +++ b/packages/assert/package.json @@ -1,6 +1,6 @@ { "name": "@sa11y/assert", - "version": "0.1.0", + "version": "0.1.1", "description": "Provides assertAccessible API to check DOM for accessibility issues", "license": "BSD-3-Clause", "homepage": "https://github.com/salesforce/sa11y/blob/master/packages/assert/README.md", @@ -20,8 +20,8 @@ "dist/**/*.js" ], "dependencies": { - "@sa11y/format": "0.1.0", - "@sa11y/preset-rules": "0.1.1", + "@sa11y/format": "0.1.1", + "@sa11y/preset-rules": "0.1.2", "axe-core": "^3.5.3" }, "devDependencies": { diff --git a/packages/format/package.json b/packages/format/package.json index fa82efeb..f4fa04a0 100644 --- a/packages/format/package.json +++ b/packages/format/package.json @@ -1,6 +1,6 @@ { "name": "@sa11y/format", - "version": "0.1.0", + "version": "0.1.1", "description": "Accessibility results re-formatter", "license": "BSD-3-Clause", "homepage": "https://github.com/salesforce/sa11y/blob/master/packages/format/README.md", @@ -22,7 +22,6 @@ "files": [ "dist/**/*.js" ], - "dependencies": {}, "devDependencies": { "axe-core": "^3.5.3", "global-jsdom": "^6.1.0", diff --git a/packages/jest/package.json b/packages/jest/package.json index 8d284010..8530dbd4 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -22,9 +22,9 @@ "dist/**/*.js" ], "dependencies": { - "jest-matcher-utils": "^25.5.0", - "@sa11y/preset-rules": "0.1.1", - "@sa11y/assert": "0.1.0" + "@sa11y/assert": "0.1.1", + "@sa11y/preset-rules": "0.1.2", + "jest-matcher-utils": "^25.5.0" }, "peerDependencies": { "jest": "^25.5.2" diff --git a/packages/preset-rules/package.json b/packages/preset-rules/package.json index 20aa624c..4ea5ecc7 100644 --- a/packages/preset-rules/package.json +++ b/packages/preset-rules/package.json @@ -1,6 +1,6 @@ { "name": "@sa11y/preset-rules", - "version": "0.1.1", + "version": "0.1.2", "description": "Accessibility preset rule configs for axe", "license": "BSD-3-Clause", "homepage": "https://github.com/salesforce/sa11y/blob/master/packages/preset-rules/README.md", From 8fc2fa67a6fedd8982af39b02e9f5033b69ded96 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Thu, 30 Apr 2020 19:02:39 -0700 Subject: [PATCH 42/61] build: add git pre push hook to build, test fix yarn build clean script --- mdLinkChecker.json | 2 +- package.json | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/mdLinkChecker.json b/mdLinkChecker.json index ea2f11d7..50e1073e 100644 --- a/mdLinkChecker.json +++ b/mdLinkChecker.json @@ -1,7 +1,7 @@ { "ignorePatterns": [ { - "TODO": "REMOVE after package is published", + "TODO": "REMOVE after repository is made public", "pattern": "^https://github.com/salesforce/sa11y" } ] diff --git a/package.json b/package.json index ed397deb..bedea6ea 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "test": "jest --coverage", "test:watch": "yarn test --watch", "build": "tsc --build", - "build:clean": "yarn build --clean", + "build:clean": "yarn build --clean; yarn build", "build:watch": "yarn build --watch", "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s && git add CHANGELOG.md", "ci": "yarn install --frozen-lockfile && yarn build && yarn lint:all && yarn test", @@ -40,7 +40,8 @@ "husky": { "hooks": { "pre-commit": "lint-staged", - "commit-msg": "commitlint -e $GIT_PARAMS" + "commit-msg": "commitlint -e $GIT_PARAMS", + "pre-push": "yarn build:clean && yarn test" } }, "lint-staged": { From 9ad3ee084c31e4bff75b2935052764f52fa15897 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Thu, 30 Apr 2020 19:19:42 -0700 Subject: [PATCH 43/61] fix(preset-rules): revert object freeze on a11y config object as it is resulting in failures - possibly exceptions from axe --- packages/preset-rules/src/a11yConfig.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/preset-rules/src/a11yConfig.ts b/packages/preset-rules/src/a11yConfig.ts index 9f539536..ef536de8 100644 --- a/packages/preset-rules/src/a11yConfig.ts +++ b/packages/preset-rules/src/a11yConfig.ts @@ -25,11 +25,13 @@ export interface A11yConfig extends RunOptions { * @returns A11yConfig with formatted rules */ export function getA11yConfig(rules: string[]): A11yConfig { - return Object.freeze({ + // TODO (Debug): Adding Object.freeze() results in TypeError: Cannot add property reporter, object is not extensible + // Even when no local modifications are made. Maybe axe.run() itself is modifying the config object. + return { runOnly: { type: 'rule', values: rules, }, resultTypes: ['violations'], - }); + }; } From 6e3ee186115bca7351527d16d2da5c69febd6588 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Fri, 1 May 2020 14:29:53 -0700 Subject: [PATCH 44/61] improvement: fix/silence lint warnings, improve docs --- packages/assert/README.md | 13 ++++--------- packages/assert/src/assert.ts | 3 ++- packages/jest/src/matcher.ts | 3 +++ packages/jest/src/setup.ts | 5 ++++- packages/preset-rules/src/a11yConfig.ts | 5 +++-- packages/test-utils/src/utils.ts | 6 ++++-- 6 files changed, 20 insertions(+), 15 deletions(-) diff --git a/packages/assert/README.md b/packages/assert/README.md index bfa2ccc9..d7fd0d14 100644 --- a/packages/assert/README.md +++ b/packages/assert/README.md @@ -15,10 +15,10 @@ Provides assertAccessible API to check DOM for accessibility issues ```typescript import { assertAccessible } from '@sa11y/assert'; -import { extended } from "@sa11y/preset-rules"; +import { recommended } from '@sa11y/preset-rules'; // Setup DOM in the state to be tested for accessibility -... +// ... // Assert that the current dom has no a11y issues // Defaults to using // - default document context e.g. JSDOM in Jest @@ -27,11 +27,6 @@ import { extended } from "@sa11y/preset-rules"; await assertAccessible(); // Can be overridden to use custom dom, ruleset or formatter -// - Specifying null will result in using JSON stringify -// Customize rules specific to jsdom -const jsdomRules = extended; -jsdomRules.rules = { - 'color-contrast': { enabled: false }, // Disable color-contrast for jsdom -}; -await assertAccessible(document, jsdomRules, null); +// - Specifying null for formatter will result in using JSON stringify +await assertAccessible(document, recommended, null); ``` diff --git a/packages/assert/src/assert.ts b/packages/assert/src/assert.ts index 4bb1fc6c..88fcd69c 100644 --- a/packages/assert/src/assert.ts +++ b/packages/assert/src/assert.ts @@ -20,8 +20,9 @@ export const axeRuntimeExceptionMsgPrefix = 'Error running accessibility checks * @param dom - DOM to be tested for accessibility * @param rules - A11yConfig preset rule to use, defaults to extended * @param formatter - Function to format a11y violations. Passing null will format using JSON stringify. - * @throws error - with the accessibility issues found + * @throws error - with the accessibility issues found, does not return any value * */ +// eslint-disable-next-line @typescript-eslint/explicit-function-return-type export async function assertAccessible( dom: Document = document, rules: A11yConfig = extended, diff --git a/packages/jest/src/matcher.ts b/packages/jest/src/matcher.ts index d09562cd..d35208b4 100644 --- a/packages/jest/src/matcher.ts +++ b/packages/jest/src/matcher.ts @@ -37,6 +37,9 @@ export async function toBeAccessible( let a11yViolations = ''; try { + // TODO (feat): There might be a need to test selected element(s) in a DOM. + // If we need that we could add the ability to pass in CSS selector(s). + // Approach of jest-axe lib to store/restore DOM might not be efficient and have potential side effects. await assertAccessible(receivedDom, fixA11yConfig(config)); } catch (e) { isAccessible = false; diff --git a/packages/jest/src/setup.ts b/packages/jest/src/setup.ts index 00f6cb76..51399a28 100644 --- a/packages/jest/src/setup.ts +++ b/packages/jest/src/setup.ts @@ -37,7 +37,10 @@ export function fixA11yConfig(config: A11yConfig): A11yConfig { return { ...config, rules: { - 'color-contrast': { enabled: false }, // Disable color-contrast + // Disable color-contrast as it is doesn't work for JSDOM and might affect performance + // https://github.com/dequelabs/axe-core/issues/595 + // https://github.com/dequelabs/axe-core/blob/develop/doc/examples/jsdom/test/a11y.js + 'color-contrast': { enabled: false }, }, }; } diff --git a/packages/preset-rules/src/a11yConfig.ts b/packages/preset-rules/src/a11yConfig.ts index ef536de8..c2f29db6 100644 --- a/packages/preset-rules/src/a11yConfig.ts +++ b/packages/preset-rules/src/a11yConfig.ts @@ -25,8 +25,9 @@ export interface A11yConfig extends RunOptions { * @returns A11yConfig with formatted rules */ export function getA11yConfig(rules: string[]): A11yConfig { - // TODO (Debug): Adding Object.freeze() results in TypeError: Cannot add property reporter, object is not extensible - // Even when no local modifications are made. Maybe axe.run() itself is modifying the config object. + // Note: Making the returned config immutable using Object.freeze() results in + // "TypeError: Cannot add property reporter, object is not extensible" + // even when no local modifications are made. axe.run() itself seems to be modifying the config object. return { runOnly: { type: 'rule', diff --git a/packages/test-utils/src/utils.ts b/packages/test-utils/src/utils.ts index 29754eb7..46adfd27 100644 --- a/packages/test-utils/src/utils.ts +++ b/packages/test-utils/src/utils.ts @@ -9,10 +9,12 @@ * Cartesian product of arrays * Ref: https://eddmann.com/posts/cartesian-product-in-javascript/ */ +// TODO(types): Fix types for the cartesianProduct function - from any to generics +/* eslint-disable @typescript-eslint/no-explicit-any */ export function cartesianProduct(...sets: Array): Array { - // TODO(types): Fix types for the cartesianProduct function - from any to generics - const flatten = (arr: Array) => [].concat([], ...arr); + const flatten = (arr: Array): Array => [].concat([], ...arr); return sets.reduce((acc, set) => flatten(acc.map((x: any) => set.map((y: any) => [...x, y]))), [[]]); + /* eslint-enable @typescript-eslint/no-explicit-any */ } /** From 2f9f9b398bf3af2bfa07d4559e7f33d1fdb84099 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Fri, 1 May 2020 16:58:32 -0700 Subject: [PATCH 45/61] docs: add SPDX license ID at top of license file Reformat license doc for line length --- LICENSE.txt | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/LICENSE.txt b/LICENSE.txt index 53866a37..78dd2139 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,12 +1,28 @@ +BSD 3-Clause License + Copyright (c) 2020, Salesforce.com, Inc. All rights reserved. -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +* Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. -* Neither the name of Salesforce.com nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. +* Neither the name of Salesforce.com nor the names of its contributors may be used + to endorse or promote products derived from this software without specific prior + written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. From dbc80f1e7ba08ec6bb17e6a8c6081183206cf026 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Mon, 4 May 2020 11:32:44 -0700 Subject: [PATCH 46/61] refactor(jest): rename fix a11y config func to adapt a11y config --- packages/jest/__tests__/setup.test.ts | 4 ++-- packages/jest/src/index.ts | 2 +- packages/jest/src/matcher.ts | 4 ++-- packages/jest/src/setup.ts | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/jest/__tests__/setup.test.ts b/packages/jest/__tests__/setup.test.ts index 13600e6b..7faaa198 100644 --- a/packages/jest/__tests__/setup.test.ts +++ b/packages/jest/__tests__/setup.test.ts @@ -5,7 +5,7 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ -import { fixA11yConfig, registerA11yMatchers } from '../src'; +import { adaptA11yConfig, registerA11yMatchers } from '../src'; import { extended, recommended } from '@sa11y/preset-rules'; describe('jest setup', () => { @@ -16,6 +16,6 @@ describe('jest setup', () => { it.each([extended, recommended])('should customize preset-rules as expected', (config) => { expect(config.rules).toBeUndefined(); - expect(fixA11yConfig(config).rules['color-contrast'].enabled).toBe(false); + expect(adaptA11yConfig(config).rules['color-contrast'].enabled).toBe(false); }); }); diff --git a/packages/jest/src/index.ts b/packages/jest/src/index.ts index 42d2b1c9..832a7925 100644 --- a/packages/jest/src/index.ts +++ b/packages/jest/src/index.ts @@ -6,4 +6,4 @@ */ export { toBeAccessible, toBeAccessibleWith } from './matcher'; -export { fixA11yConfig, registerA11yMatchers } from './setup'; +export { adaptA11yConfig, registerA11yMatchers } from './setup'; diff --git a/packages/jest/src/matcher.ts b/packages/jest/src/matcher.ts index d35208b4..9e858eee 100644 --- a/packages/jest/src/matcher.ts +++ b/packages/jest/src/matcher.ts @@ -8,7 +8,7 @@ import { assertAccessible } from '@sa11y/assert'; import { extended, A11yConfig } from '@sa11y/preset-rules'; import { matcherHint } from 'jest-matcher-utils'; -import { fixA11yConfig } from './setup'; +import { adaptA11yConfig } from './setup'; export const matcherHintMsg = `expected document to have no accessibility violations but found following issues: `; @@ -40,7 +40,7 @@ export async function toBeAccessible( // TODO (feat): There might be a need to test selected element(s) in a DOM. // If we need that we could add the ability to pass in CSS selector(s). // Approach of jest-axe lib to store/restore DOM might not be efficient and have potential side effects. - await assertAccessible(receivedDom, fixA11yConfig(config)); + await assertAccessible(receivedDom, adaptA11yConfig(config)); } catch (e) { isAccessible = false; a11yViolations = e; diff --git a/packages/jest/src/setup.ts b/packages/jest/src/setup.ts index 51399a28..caf46640 100644 --- a/packages/jest/src/setup.ts +++ b/packages/jest/src/setup.ts @@ -33,7 +33,7 @@ export function registerA11yMatchers(): void { /** * Customize sa11y preset rules specific to JSDOM */ -export function fixA11yConfig(config: A11yConfig): A11yConfig { +export function adaptA11yConfig(config: A11yConfig): A11yConfig { return { ...config, rules: { From 349a4263997e3620448615f5d57c44a10d7e1b81 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Mon, 4 May 2020 11:40:55 -0700 Subject: [PATCH 47/61] test(jest): add test to check for error when expect is undefined --- .../__tests__/__snapshots__/setup.test.ts.snap | 7 +++++++ packages/jest/__tests__/setup.test.ts | 17 +++++++++++++++++ packages/jest/src/setup.ts | 2 -- 3 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 packages/jest/__tests__/__snapshots__/setup.test.ts.snap diff --git a/packages/jest/__tests__/__snapshots__/setup.test.ts.snap b/packages/jest/__tests__/__snapshots__/setup.test.ts.snap new file mode 100644 index 00000000..f9e2591b --- /dev/null +++ b/packages/jest/__tests__/__snapshots__/setup.test.ts.snap @@ -0,0 +1,7 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`jest setup should throw error when global expect is undefined 1`] = ` +"Unable to find Jest's global expect. +Please check you have added @sa11y/jest correctly to your jest configuration. +See https://github.com/salesforce/sa11y/blob/master/packages/jest/README.md for help." +`; diff --git a/packages/jest/__tests__/setup.test.ts b/packages/jest/__tests__/setup.test.ts index 7faaa198..7e549266 100644 --- a/packages/jest/__tests__/setup.test.ts +++ b/packages/jest/__tests__/setup.test.ts @@ -18,4 +18,21 @@ describe('jest setup', () => { expect(config.rules).toBeUndefined(); expect(adaptA11yConfig(config).rules['color-contrast'].enabled).toBe(false); }); + + it('should throw error when global expect is undefined', () => { + /* eslint-disable @typescript-eslint/ban-ts-ignore */ + // @ts-ignore error TS2339: Property 'expect' does not exist on type 'Global'. + const globalExpect = global.expect; + expect(globalExpect).toBeDefined(); + expect(registerA11yMatchers).not.toThrow(); + try { + // @ts-ignore error TS2339: Property 'expect' does not exist on type 'Global'. + global.expect = undefined; + globalExpect(registerA11yMatchers).toThrowErrorMatchingSnapshot(); + } finally { + // @ts-ignore error TS2339: Property 'expect' does not exist on type 'Global'. + global.expect = globalExpect; + } + /* eslint-enable @typescript-eslint/ban-ts-ignore */ + }); }); diff --git a/packages/jest/src/setup.ts b/packages/jest/src/setup.ts index caf46640..6e19a334 100644 --- a/packages/jest/src/setup.ts +++ b/packages/jest/src/setup.ts @@ -20,8 +20,6 @@ export function registerA11yMatchers(): void { jestExpect.extend({ toBeAccessible }); jestExpect.extend({ toBeAccessibleWith }); } else { - // Don't expect to run into this situation under normal circumstance. Not sure how to test for it easily either. - /* istanbul ignore next */ throw new Error( "Unable to find Jest's global expect." + '\nPlease check you have added @sa11y/jest correctly to your jest configuration.' + From 2b64f153862873a72a61285c465f76560d1d7a94 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Mon, 4 May 2020 15:51:28 -0700 Subject: [PATCH 48/61] refactor(jest): remove toBeAccessibleWith a11y matcher --- packages/assert/src/assert.ts | 3 +-- packages/jest/README.md | 2 +- packages/jest/__tests__/matcher.test.ts | 30 +++---------------------- packages/jest/__tests__/setup.test.ts | 6 ++--- packages/jest/src/index.ts | 2 +- packages/jest/src/matcher.ts | 15 +------------ packages/jest/src/setup.ts | 7 ++++-- 7 files changed, 15 insertions(+), 50 deletions(-) diff --git a/packages/assert/src/assert.ts b/packages/assert/src/assert.ts index 88fcd69c..0ea53bd8 100644 --- a/packages/assert/src/assert.ts +++ b/packages/assert/src/assert.ts @@ -6,7 +6,6 @@ */ import * as axe from 'axe-core'; -import { ElementContext, RunOptions } from 'axe-core'; import { A11yConfig, extended } from '@sa11y/preset-rules'; import { a11yResultsFormatter, Formatter } from '@sa11y/format'; @@ -30,7 +29,7 @@ export async function assertAccessible( ) { let violations; try { - const results = await axe.run(dom as ElementContext, rules as RunOptions); + const results = await axe.run(dom as axe.ElementContext, rules as axe.RunOptions); violations = results.violations; } catch (e) { throw new Error(`${axeRuntimeExceptionMsgPrefix} ${e}`); diff --git a/packages/jest/README.md b/packages/jest/README.md index 62f3ab76..b0f1b332 100644 --- a/packages/jest/README.md +++ b/packages/jest/README.md @@ -34,6 +34,6 @@ it('should be accessible', async () => { await expect(document).toBeAccessible(); // use recommended preset-rule - await expect(document).toBeAccessibleWith(recommended); + await expect(document).toBeAccessible(recommended); }); ``` diff --git a/packages/jest/__tests__/matcher.test.ts b/packages/jest/__tests__/matcher.test.ts index 5a44ff4f..351efa4e 100644 --- a/packages/jest/__tests__/matcher.test.ts +++ b/packages/jest/__tests__/matcher.test.ts @@ -5,7 +5,7 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ -import { matcherHintMsg, toBeAccessible, toBeAccessibleWith } from '../src/matcher'; +import { matcherHintMsg, toBeAccessible } from '../src/matcher'; import { registerA11yMatchers } from '../src'; import { extended, recommended } from '@sa11y/preset-rules'; import { beforeEachSetup, cartesianProduct, domWithA11yIssues, domWithNoA11yIssues } from '@sa11y/test-utils'; @@ -27,14 +27,13 @@ describe('a11y matchers', () => { it('should be extendable with expect', () => { // Mostly here for code cov as it doesn't register correctly with just registerA11yMatchers() expect.extend({ toBeAccessible }); - expect.extend({ toBeAccessibleWith }); }); }); describe('toBeAccessible jest a11y matcher', () => { - it.each(domParams)('should not throw error for dom with no a11y issues (Dom arg: %#)', async (dom) => { + it.each(domConfigParams)('should not throw error for dom with no a11y issues (arg: %#)', async (dom, config) => { document.body.innerHTML = domWithNoA11yIssues; - await expect(dom).toBeAccessible(); + await expect(dom).toBeAccessible(config); }); it.each(a11yConfigParams)('should throw error for dom with a11y issues with config: %#', async (config) => { @@ -50,26 +49,3 @@ describe('toBeAccessible jest a11y matcher', () => { } }); }); - -// Note: "toBeAccessibleWith" needs to be its own test. Combining using .each([toBeAccessible, toBeAccessibleWith]) -// and function references doesn't seem to work with matchers. Error: "not a function". -// TODO (de-duplicate): Figure out a way to reduce duplication between tests for 2 matchers - extract common code into functions -describe('toBeAccessibleWith jest a11y matcher', () => { - it.each(domConfigParams)('should not throw error for dom with no a11y issues (arg: %#)', async (dom, config) => { - document.body.innerHTML = domWithNoA11yIssues; - await expect(dom).toBeAccessibleWith(config); - }); - - it.each(a11yConfigParams)('should throw error for dom with a11y issues with config: %#', async (config) => { - document.body.innerHTML = domWithA11yIssues; - expect.assertions(3); - // using the 'not' matcher just for testing, not expecting this to be used out of the unit testing context - await expect(document).not.toBeAccessibleWith(config); - // using without the 'not' matcher which should be the primary way the API is used (without error catching) - try { - await expect(document).toBeAccessibleWith(config); - } catch (e) { - expect(e.message).toContain(matcherHintMsg); - } - }); -}); diff --git a/packages/jest/__tests__/setup.test.ts b/packages/jest/__tests__/setup.test.ts index 7e549266..a7967861 100644 --- a/packages/jest/__tests__/setup.test.ts +++ b/packages/jest/__tests__/setup.test.ts @@ -10,11 +10,11 @@ import { extended, recommended } from '@sa11y/preset-rules'; describe('jest setup', () => { registerA11yMatchers(); - it.each(['toBeAccessible', 'toBeAccessibleWith'])('should defined %s matcher on expect object', (matcherName) => { - expect(expect[matcherName]).toBeDefined(); + it('should define matcher on expect object', () => { + expect(expect['toBeAccessible']).toBeDefined(); }); - it.each([extended, recommended])('should customize preset-rules as expected', (config) => { + it.each([extended, recommended])('should customize %s preset-rule as expected', (config) => { expect(config.rules).toBeUndefined(); expect(adaptA11yConfig(config).rules['color-contrast'].enabled).toBe(false); }); diff --git a/packages/jest/src/index.ts b/packages/jest/src/index.ts index 832a7925..e1dc1e92 100644 --- a/packages/jest/src/index.ts +++ b/packages/jest/src/index.ts @@ -5,5 +5,5 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ -export { toBeAccessible, toBeAccessibleWith } from './matcher'; +export { toBeAccessible } from './matcher'; export { adaptA11yConfig, registerA11yMatchers } from './setup'; diff --git a/packages/jest/src/matcher.ts b/packages/jest/src/matcher.ts index 9e858eee..066eadb5 100644 --- a/packages/jest/src/matcher.ts +++ b/packages/jest/src/matcher.ts @@ -19,14 +19,13 @@ declare global { namespace jest { interface Matchers { toBeAccessible(config?: A11yConfig): Promise; - toBeAccessibleWith(config: A11yConfig): Promise; } } } /** * Jest expect matcher to check DOM for accessibility issues - * @param receivedDom - DOM to be tested for accessibility + * @param receivedDom - DOM to be tested for accessibility. Defaults to current DOM. * @param config - A11yConfig to be used to test for accessibility. Defaults to extended. */ export async function toBeAccessible( @@ -51,15 +50,3 @@ export async function toBeAccessible( message: (): string => matcherHint(`${toBeAccessible.name}: ${matcherHintMsg} \n\n ${a11yViolations}`), }; } - -/** - * Jest expect matcher to check DOM for accessibility issues with a `@sa11y/preset-rule` - * @param receivedDom - DOM to be tested for accessibility - * @param config - A11yConfig to be used to test for accessibility. - */ -export function toBeAccessibleWith( - receivedDom: Document = document, - config: A11yConfig -): Promise { - return toBeAccessible(receivedDom, config); -} diff --git a/packages/jest/src/setup.ts b/packages/jest/src/setup.ts index 6e19a334..ba99440d 100644 --- a/packages/jest/src/setup.ts +++ b/packages/jest/src/setup.ts @@ -5,7 +5,7 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ -import { toBeAccessible, toBeAccessibleWith } from './matcher'; +import { toBeAccessible } from './matcher'; import { A11yConfig } from '@sa11y/preset-rules'; /** @@ -18,7 +18,6 @@ export function registerA11yMatchers(): void { const jestExpect = global.expect; if (jestExpect !== undefined) { jestExpect.extend({ toBeAccessible }); - jestExpect.extend({ toBeAccessibleWith }); } else { throw new Error( "Unable to find Jest's global expect." + @@ -32,6 +31,10 @@ export function registerA11yMatchers(): void { * Customize sa11y preset rules specific to JSDOM */ export function adaptA11yConfig(config: A11yConfig): A11yConfig { + // TODO: Is it worth checking if we are running in jsdom before modifying config ? + // Ref: https://github.com/jsdom/jsdom/issues/1537#issuecomment-229405327 + // const runningInJSDOM = navigator.userAgent.includes('Node.js') || navigator.userAgent.includes('jsdom'); + // if (!runningInJSDOM) return config; return { ...config, rules: { From c77f3562dc73d67b359d07f35b1d28d08f1980c7 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Mon, 4 May 2020 16:07:35 -0700 Subject: [PATCH 49/61] ci: add pr title github action, change code cov github action --- .github/workflows/ci.yml | 8 +------- .github/workflows/codecov.yml | 27 +++++++++++++++++++++++++++ .github/workflows/pr-title-check.yml | 12 ++++++++++++ 3 files changed, 40 insertions(+), 7 deletions(-) create mode 100644 .github/workflows/codecov.yml create mode 100644 .github/workflows/pr-title-check.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 51f0ed57..b443d9c3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,4 +1,4 @@ -# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node +# This workflow will do a clean install of node dependencies, build the source code and run tests # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions name: CI @@ -19,9 +19,3 @@ jobs: with: node-version: '12.x' - run: yarn ci - - name: Code Coverage Report - uses: romeovs/lcov-reporter-action@v0.2.17 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - lcov-file: ./coverage/lcov.info - diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml new file mode 100644 index 00000000..35d12e2e --- /dev/null +++ b/.github/workflows/codecov.yml @@ -0,0 +1,27 @@ +name: Code coverage + +on: + pull_request: + types: ['opened', 'edited', 'reopened', 'synchronize'] + +jobs: + codecov: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v1 + with: + node-version: '12.x' + + - name: Collect Code Coverage + run: yarn test + + - name: Code Coverage Report + uses: slavcodev/coverage-monitor-action@1.1.0 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + clover_file: './coverage/clover.xml' + # replace mode removes existing comment and adds a new one at the end + # update mode tries to find existing code cov comment and update it. + comment_mode: 'update' diff --git a/.github/workflows/pr-title-check.yml b/.github/workflows/pr-title-check.yml new file mode 100644 index 00000000..29770151 --- /dev/null +++ b/.github/workflows/pr-title-check.yml @@ -0,0 +1,12 @@ +name: PR Title Linter + +on: + pull_request: + types: ['opened', 'edited', 'reopened', 'synchronize'] + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: JulienKode/pull-request-name-linter-action@v0.1.2 From 2b18c4b6195b63e907e0b1ee3cc264bf98e06cf8 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Mon, 4 May 2020 16:14:36 -0700 Subject: [PATCH 50/61] improvement(jest): add config to automate setup of a11y matchers Add integration test package to test setup of a11y matcher --- cSpell.json | 8 +---- packages/jest/README.md | 31 ++++++++++++++++++- packages/jest/src/index.ts | 4 +++ packages/jest/src/setup.ts | 3 ++ packages/test-integ/README.md | 11 +++++++ .../test-integ/__tests__/integration.test.js | 13 ++++++++ packages/test-integ/jest.config.js | 13 ++++++++ packages/test-integ/package.json | 16 ++++++++++ tsconfig.eslint.json | 2 +- 9 files changed, 92 insertions(+), 9 deletions(-) create mode 100644 packages/test-integ/README.md create mode 100644 packages/test-integ/__tests__/integration.test.js create mode 100644 packages/test-integ/jest.config.js create mode 100644 packages/test-integ/package.json diff --git a/cSpell.json b/cSpell.json index e4eecb67..e82b502e 100644 --- a/cSpell.json +++ b/cSpell.json @@ -1,11 +1,5 @@ { "ignorePaths": ["node_modules/**", "package.json"], - "ignoreWords": [ - "assertAccessible", - "doctoc", - "CNCF", - "SPDX", // license header - "tsdoc" - ], + "ignoreWords": ["assertAccessible", "doctoc", "CNCF", "integ", "SPDX", "tsdoc"], "ignoreRegExpList": ["ruleset"] } diff --git a/packages/jest/README.md b/packages/jest/README.md index b0f1b332..a1f6887b 100644 --- a/packages/jest/README.md +++ b/packages/jest/README.md @@ -7,13 +7,42 @@ Accessibility matcher for [Jest](https://jestjs.io) - [Setup](#setup) + - [Automatic](#automatic) + - [Manual](#manual) - [Usage](#usage) ## Setup -- TODO: Based on https://github.com/jest-community/jest-extended#setup +The accessibility matcher helper APIs need to be registered with Jest before they can be used in tests. + +### Automatic + +Modify Jest config to add the required setup for accessibility matchers. + +In the `jest.config.js` at the root of your project, add + +```javascript +const { jestConfig } = require('@sa11y/jest'); + +module.exports = { + ...jestConfig, + // Your config .. +}; +``` + +### Manual + +Invoke `registerA11yMatchers` before using the accessibility matchers in the tests. + +```typescript +import { registerA11yMatchers } from '@sa11y/jest'; + +beforeAll(() => { + registerA11yMatchers(); +}); +``` ## Usage diff --git a/packages/jest/src/index.ts b/packages/jest/src/index.ts index e1dc1e92..445aac3a 100644 --- a/packages/jest/src/index.ts +++ b/packages/jest/src/index.ts @@ -7,3 +7,7 @@ export { toBeAccessible } from './matcher'; export { adaptA11yConfig, registerA11yMatchers } from './setup'; + +export const jestConfig = { + setupFilesAfterEnv: [require.resolve('./setup')], +}; diff --git a/packages/jest/src/setup.ts b/packages/jest/src/setup.ts index ba99440d..7bc3a913 100644 --- a/packages/jest/src/setup.ts +++ b/packages/jest/src/setup.ts @@ -45,3 +45,6 @@ export function adaptA11yConfig(config: A11yConfig): A11yConfig { }, }; } + +// When this file is used as part of Jest setup with setupFilesAfterEnv +registerA11yMatchers(); diff --git a/packages/test-integ/README.md b/packages/test-integ/README.md new file mode 100644 index 00000000..5306b9bd --- /dev/null +++ b/packages/test-integ/README.md @@ -0,0 +1,11 @@ + + + + +- [`test-integ`](#test-integ) + + + +# `test-integ` + +Private package for integration testing @sa11y packages diff --git a/packages/test-integ/__tests__/integration.test.js b/packages/test-integ/__tests__/integration.test.js new file mode 100644 index 00000000..661b8079 --- /dev/null +++ b/packages/test-integ/__tests__/integration.test.js @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2020, salesforce.com, inc. + * All rights reserved. + * SPDX-License-Identifier: BSD-3-Clause + * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause + */ + +describe('integration test @sa11y/jest', () => { + it.skip('should have a11y matchers working with setup in jest.config.js', () => { + // TODO(Fix) : Fails with TypeError: expect(...).toBeAccessible is not a function + expect(document).toBeAccessible(); + }); +}); diff --git a/packages/test-integ/jest.config.js b/packages/test-integ/jest.config.js new file mode 100644 index 00000000..8bce042c --- /dev/null +++ b/packages/test-integ/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2020, salesforce.com, inc. + * All rights reserved. + * SPDX-License-Identifier: BSD-3-Clause + * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause + */ + +// eslint-disable-next-line @typescript-eslint/no-var-requires +const { jestConfig } = require('@sa11y/jest'); + +module.exports = { + ...jestConfig, +}; diff --git a/packages/test-integ/package.json b/packages/test-integ/package.json new file mode 100644 index 00000000..35950f66 --- /dev/null +++ b/packages/test-integ/package.json @@ -0,0 +1,16 @@ +{ + "name": "@sa11y/test-integ", + "version": "0.1.0", + "private": true, + "description": "Private package for integration testing @sa11y packages", + "license": "BSD-3-Clause", + "homepage": "https://github.com/salesforce/sa11y/tree/master/packages/test-integ#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/salesforce/sa11y.git", + "directory": "packages/test-integ" + }, + "devDependencies": { + "@sa11y/jest": "0.1.0" + } +} diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json index 28e6af2d..86a2f3cb 100644 --- a/tsconfig.eslint.json +++ b/tsconfig.eslint.json @@ -1,4 +1,4 @@ { "compilerOptions": { "strict": true }, - "include": ["./packages/**/*.ts", "*.js"] + "include": ["*.js", "./packages/**/*.ts", "./packages/**/*.js"] } From 56b4893268e6e2b97bcd3f522477627d8f5c31ca Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Mon, 4 May 2020 16:30:10 -0700 Subject: [PATCH 51/61] ci: add missing build step to new github actions --- .github/workflows/ci.yml | 4 +++- .github/workflows/codecov.yml | 4 +++- .github/workflows/pr-title-check.yml | 4 ++++ package.json | 3 ++- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b443d9c3..7a271fe6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,4 +18,6 @@ jobs: - uses: actions/setup-node@v1 with: node-version: '12.x' - - run: yarn ci + - run: | + yarn ci:build + yarn ci:test diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml index 35d12e2e..7deccc80 100644 --- a/.github/workflows/codecov.yml +++ b/.github/workflows/codecov.yml @@ -15,7 +15,9 @@ jobs: node-version: '12.x' - name: Collect Code Coverage - run: yarn test + run: | + yarn ci:build + yarn test - name: Code Coverage Report uses: slavcodev/coverage-monitor-action@1.1.0 diff --git a/.github/workflows/pr-title-check.yml b/.github/workflows/pr-title-check.yml index 29770151..0df5bf76 100644 --- a/.github/workflows/pr-title-check.yml +++ b/.github/workflows/pr-title-check.yml @@ -9,4 +9,8 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 + - uses: actions/setup-node@v1 + with: + node-version: '12.x' + - run: yarn ci:build - uses: JulienKode/pull-request-name-linter-action@v0.1.2 diff --git a/package.json b/package.json index bedea6ea..323f2b52 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,8 @@ "build:clean": "yarn build --clean; yarn build", "build:watch": "yarn build --watch", "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s && git add CHANGELOG.md", - "ci": "yarn install --frozen-lockfile && yarn build && yarn lint:all && yarn test", + "ci:build": "yarn install --frozen-lockfile && yarn build", + "ci:test": "yarn lint:all && yarn test", "clean:install": "lerna clean" }, "config": { From 38890751df9fb7ed3887963eb2534bd56e9f891a Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Mon, 4 May 2020 16:54:09 -0700 Subject: [PATCH 52/61] ci(github action): change pr title check to install only req deps change name of CI action to Lint, Test --- .github/workflows/ci.yml | 2 +- .github/workflows/pr-title-check.yml | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7a271fe6..7c1c2636 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,7 +1,7 @@ # This workflow will do a clean install of node dependencies, build the source code and run tests # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions -name: CI +name: Lint, Test on: push: diff --git a/.github/workflows/pr-title-check.yml b/.github/workflows/pr-title-check.yml index 0df5bf76..bbf25a5e 100644 --- a/.github/workflows/pr-title-check.yml +++ b/.github/workflows/pr-title-check.yml @@ -12,5 +12,6 @@ jobs: - uses: actions/setup-node@v1 with: node-version: '12.x' - - run: yarn ci:build + - name: Install Dependencies + run: npm install @commitlint/config-conventional - uses: JulienKode/pull-request-name-linter-action@v0.1.2 From eca6850da4cca7ccdf1da12e4e32420aba62eb40 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Mon, 4 May 2020 17:51:23 -0700 Subject: [PATCH 53/61] refactor(jest): remove adaptA11yConfig from package level direct export as it is used only internally currently --- packages/jest/__tests__/setup.test.ts | 2 +- packages/jest/src/index.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/jest/__tests__/setup.test.ts b/packages/jest/__tests__/setup.test.ts index a7967861..3039f505 100644 --- a/packages/jest/__tests__/setup.test.ts +++ b/packages/jest/__tests__/setup.test.ts @@ -5,7 +5,7 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ -import { adaptA11yConfig, registerA11yMatchers } from '../src'; +import { adaptA11yConfig, registerA11yMatchers } from '../src/setup'; import { extended, recommended } from '@sa11y/preset-rules'; describe('jest setup', () => { diff --git a/packages/jest/src/index.ts b/packages/jest/src/index.ts index 445aac3a..bac82e27 100644 --- a/packages/jest/src/index.ts +++ b/packages/jest/src/index.ts @@ -6,7 +6,7 @@ */ export { toBeAccessible } from './matcher'; -export { adaptA11yConfig, registerA11yMatchers } from './setup'; +export { registerA11yMatchers } from './setup'; export const jestConfig = { setupFilesAfterEnv: [require.resolve('./setup')], From 6eb2a3bf7125f251514b4ef5473850f1d223edf2 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam Date: Mon, 4 May 2020 19:46:28 -0700 Subject: [PATCH 54/61] improvement(jest): add ability to check HTML elements for accessibility add/modify tests --- packages/assert/README.md | 4 +++ .../__snapshots__/assert.test.ts.snap | 22 ++++++++++++ packages/assert/__tests__/assert.test.ts | 36 +++++++++++++++---- packages/assert/src/assert.ts | 12 +++++-- packages/jest/src/matcher.ts | 11 +++--- packages/test-utils/README.md | 2 +- packages/test-utils/src/index.ts | 2 +- packages/test-utils/src/test-data.ts | 3 +- 8 files changed, 73 insertions(+), 19 deletions(-) diff --git a/packages/assert/README.md b/packages/assert/README.md index d7fd0d14..5423146c 100644 --- a/packages/assert/README.md +++ b/packages/assert/README.md @@ -26,6 +26,10 @@ import { recommended } from '@sa11y/preset-rules'; // - a11yResultsFormatter from @sa11y/format await assertAccessible(); +// Can be used to test accessibility of a specific HTML element +const elem = document.getElementById('foo'); +await assertAccessible(elem); + // Can be overridden to use custom dom, ruleset or formatter // - Specifying null for formatter will result in using JSON stringify await assertAccessible(document, recommended, null); diff --git a/packages/assert/__tests__/__snapshots__/assert.test.ts.snap b/packages/assert/__tests__/__snapshots__/assert.test.ts.snap index a396f605..270e00fa 100644 --- a/packages/assert/__tests__/__snapshots__/assert.test.ts.snap +++ b/packages/assert/__tests__/__snapshots__/assert.test.ts.snap @@ -35,3 +35,25 @@ Links must have discernible text (link-name): a Page must contain a level-one heading (page-has-heading-one): html - More info: https://dequeuniversity.com/rules/axe/3.5/page-has-heading-one?application=axeAPI] `; + +exports[`assertAccessible API should throw error with HTML element with a11y issues 1`] = ` +[Error: Links must have discernible text (link-name): a + - More info: https://dequeuniversity.com/rules/axe/3.5/link-name?application=axeAPI] +`; + +exports[`assertAccessible API should use default document, ruleset, formatter when called with no args - expecting 1 assertion 1`] = ` +[Error: Page must have means to bypass repeated blocks (bypass): html + - More info: https://dequeuniversity.com/rules/axe/3.5/bypass?application=axeAPI + +Documents must have element to aid in navigation (document-title): html + - More info: https://dequeuniversity.com/rules/axe/3.5/document-title?application=axeAPI + +Document must have one main landmark (landmark-one-main): html + - More info: https://dequeuniversity.com/rules/axe/3.5/landmark-one-main?application=axeAPI + +Links must have discernible text (link-name): a + - More info: https://dequeuniversity.com/rules/axe/3.5/link-name?application=axeAPI + +Page must contain a level-one heading (page-has-heading-one): html + - More info: https://dequeuniversity.com/rules/axe/3.5/page-has-heading-one?application=axeAPI] +`; diff --git a/packages/assert/__tests__/assert.test.ts b/packages/assert/__tests__/assert.test.ts index 2ea41d0a..15a4ab1a 100644 --- a/packages/assert/__tests__/assert.test.ts +++ b/packages/assert/__tests__/assert.test.ts @@ -9,12 +9,21 @@ import 'global-jsdom/lib/register'; // https://github.com/dequelabs/axe-core/blo import { assertAccessible, axeRuntimeExceptionMsgPrefix } from '../src/assert'; import { extended, getA11yConfig, recommended } from '@sa11y/preset-rules'; import { a11yResultsFormatter } from '@sa11y/format'; -import { beforeEachSetup, domWithA11yIssues, domWithNoA11yIssues } from '@sa11y/test-utils'; +import { beforeEachSetup, domWithA11yIssues, domWithNoA11yIssues, shadowDomID } from '@sa11y/test-utils'; beforeEach(() => { beforeEachSetup(); }); +/** + * Test util to check if given error is an a11y error + */ +function checkA11yError(e: Error): void { + expect(e).toBeDefined(); + expect(e.toString()).not.toContain(axeRuntimeExceptionMsgPrefix); + expect(e).toMatchSnapshot(); +} + /** * Test util to test DOM with a11y issues * @param formatter - a11y results formatter @@ -24,9 +33,7 @@ async function testDOMWithA11yIssues(formatter = a11yResultsFormatter) { document.body.innerHTML = domWithA11yIssues; expect.assertions(3); await assertAccessible(document, extended, formatter).catch((e) => { - expect(e).toBeDefined(); - expect(e.toString()).not.toContain(axeRuntimeExceptionMsgPrefix); - expect(e).toMatchSnapshot(); + checkA11yError(e); }); } @@ -52,19 +59,36 @@ describe('assertAccessible API', () => { it.each([ // DOM to test, expected assertions [domWithNoA11yIssues, 0], - [domWithA11yIssues, 1], + [domWithA11yIssues, 3], ])( 'should use default document, ruleset, formatter when called with no args - expecting %# assertion', async (testDOM: string, expectedAssertions: number) => { expect.assertions(expectedAssertions); document.body.innerHTML = testDOM; - await assertAccessible().catch((e) => expect(e).toBeDefined()); + await assertAccessible().catch((e) => checkA11yError(e)); } ); // eslint-disable-next-line jest/expect-expect it('should throw an error with a11y issues found for dom with a11y issues', testDOMWithA11yIssues); + it('should not throw error with HTML element with no a11y issues', async () => { + document.body.innerHTML = domWithNoA11yIssues; + const elem = document.getElementById(shadowDomID); + expect(elem).toBeDefined(); + await assertAccessible(elem); // No error thrown + }); + + it('should throw error with HTML element with a11y issues', async () => { + expect.assertions(5); + document.body.innerHTML = domWithA11yIssues; + const elements = document.getElementsByTagName('body'); + expect(elements).toHaveLength(1); + const elem = elements[0]; + expect(elem).toBeDefined(); + await assertAccessible(elem).catch((e) => checkA11yError(e)); + }); + it.each([a11yResultsFormatter, null])('should format a11y issues using specified formatter: %#', (formatter) => testDOMWithA11yIssues(formatter) ); diff --git a/packages/assert/src/assert.ts b/packages/assert/src/assert.ts index 0ea53bd8..8c31d8cd 100644 --- a/packages/assert/src/assert.ts +++ b/packages/assert/src/assert.ts @@ -14,22 +14,28 @@ import { a11yResultsFormatter, Formatter } from '@sa11y/format'; // Search for es6 module import version of https://www.npmjs.com/package/rewire export const axeRuntimeExceptionMsgPrefix = 'Error running accessibility checks using axe:'; +/** + * Type def for context that can be checked for accessibility. + * Limiting to this subset from all options supported by axe for ease of use and maintenance. + */ +export type a11yCheckableContext = Document | HTMLElement; + /** * Checks DOM for accessibility issues and throws an error if violations are found. - * @param dom - DOM to be tested for accessibility + * @param context - DOM or HTMLElement to be tested for accessibility * @param rules - A11yConfig preset rule to use, defaults to extended * @param formatter - Function to format a11y violations. Passing null will format using JSON stringify. * @throws error - with the accessibility issues found, does not return any value * */ // eslint-disable-next-line @typescript-eslint/explicit-function-return-type export async function assertAccessible( - dom: Document = document, + context: a11yCheckableContext = document, rules: A11yConfig = extended, formatter: Formatter = a11yResultsFormatter ) { let violations; try { - const results = await axe.run(dom as axe.ElementContext, rules as axe.RunOptions); + const results = await axe.run(context as axe.ElementContext, rules as axe.RunOptions); violations = results.violations; } catch (e) { throw new Error(`${axeRuntimeExceptionMsgPrefix} ${e}`); diff --git a/packages/jest/src/matcher.ts b/packages/jest/src/matcher.ts index 066eadb5..a6f0134a 100644 --- a/packages/jest/src/matcher.ts +++ b/packages/jest/src/matcher.ts @@ -5,7 +5,7 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ -import { assertAccessible } from '@sa11y/assert'; +import { assertAccessible, a11yCheckableContext } from '@sa11y/assert'; import { extended, A11yConfig } from '@sa11y/preset-rules'; import { matcherHint } from 'jest-matcher-utils'; import { adaptA11yConfig } from './setup'; @@ -25,21 +25,18 @@ declare global { /** * Jest expect matcher to check DOM for accessibility issues - * @param receivedDom - DOM to be tested for accessibility. Defaults to current DOM. + * @param received - DOM or HTML Element to be tested for accessibility. Defaults to current DOM. * @param config - A11yConfig to be used to test for accessibility. Defaults to extended. */ export async function toBeAccessible( - receivedDom: Document = document, + received: a11yCheckableContext = document, config: A11yConfig = extended ): Promise<jest.CustomMatcherResult> { let isAccessible = true; let a11yViolations = ''; try { - // TODO (feat): There might be a need to test selected element(s) in a DOM. - // If we need that we could add the ability to pass in CSS selector(s). - // Approach of jest-axe lib to store/restore DOM might not be efficient and have potential side effects. - await assertAccessible(receivedDom, adaptA11yConfig(config)); + await assertAccessible(received, adaptA11yConfig(config)); } catch (e) { isAccessible = false; a11yViolations = e; diff --git a/packages/test-utils/README.md b/packages/test-utils/README.md index f7a47792..871fd603 100644 --- a/packages/test-utils/README.md +++ b/packages/test-utils/README.md @@ -18,7 +18,7 @@ import { domWithNoA11yIssues, } from '@sa11y/test-utils'; -import { registerA11yMatchers } from '@sa11y/jest'; import {beforeEach} from "@jest/globals"; +import { registerA11yMatchers } from '@sa11y/jest'; beforeAll(() => { registerA11yMatchers(); diff --git a/packages/test-utils/src/index.ts b/packages/test-utils/src/index.ts index 26500d9f..d97d474c 100644 --- a/packages/test-utils/src/index.ts +++ b/packages/test-utils/src/index.ts @@ -5,5 +5,5 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ -export { domWithA11yIssues, domWithNoA11yIssues } from './test-data'; +export { domWithA11yIssues, domWithNoA11yIssues, shadowDomID } from './test-data'; export { beforeEachSetup, cartesianProduct } from './utils'; diff --git a/packages/test-utils/src/test-data.ts b/packages/test-utils/src/test-data.ts index 7f12e54b..aa1e28d2 100644 --- a/packages/test-utils/src/test-data.ts +++ b/packages/test-utils/src/test-data.ts @@ -12,6 +12,7 @@ export const domWithA11yIssues = `<html> </body> </html>`; +export const shadowDomID = 'upside-down'; // DOM containing a11y issues // From https://github.com/dequelabs/axe-selenium-java/blob/develop/src/test/resources/test-app.js--> export const domWithNoA11yIssues = `<!doctype html> @@ -24,7 +25,7 @@ export const domWithNoA11yIssues = `<!doctype html> <h1>This is a test</h1> <p>This is a test page with no violations</p> </div> - <div role="contentinfo" id="upside-down"></div> <!-- cSpell:disable-line --> + <div role="contentinfo" id=${shadowDomID}></div> <!-- cSpell:disable-line --> <script> var shadow = document.getElementById("upside-down").attachShadow({mode: "open"}); shadow.innerHTML = '<h2 id="shadow">SHADOW DOM</h2><ul><li>Shadow Item 1</li></ul>' From 85609d3697380193a6856627b8fdead965839eb3 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam <mrajamanickam@salesforce.com> Date: Tue, 5 May 2020 15:33:20 -0700 Subject: [PATCH 55/61] build(jest): fix main entry point in jest package.json --- packages/jest/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/jest/package.json b/packages/jest/package.json index 8530dbd4..7638954d 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -16,7 +16,7 @@ "jest", "matcher" ], - "main": "dist/jest.js", + "main": "dist/index.js", "types": "dist/jest.d.ts", "files": [ "dist/**/*.js" From 36b0087c509e907871c6341d5f2ee68d86d0b799 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam <mrajamanickam@salesforce.com> Date: Thu, 7 May 2020 11:24:57 -0700 Subject: [PATCH 56/61] build: add ts-cleaner to clean dist files --- package.json | 3 ++- yarn.lock | 35 ++++++++++++++++++++++++++++++++++- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 323f2b52..0d633cbc 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "test": "jest --coverage", "test:watch": "yarn test --watch", "build": "tsc --build", - "build:clean": "yarn build --clean; yarn build", + "build:clean": "yarn build --clean && lerna exec ts-cleaner && yarn build", "build:watch": "yarn build --watch", "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s && git add CHANGELOG.md", "ci:build": "yarn install --frozen-lockfile && yarn build", @@ -93,6 +93,7 @@ "markdown-link-check": "^3.8.1", "npm-check-updates": "^4.1.2", "prettier": "2.0.5", + "ts-cleaner": "^1.0.5", "typescript": "^3.8.3" }, "engines": { diff --git a/yarn.lock b/yarn.lock index 34639612..f823724c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2596,6 +2596,16 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +args@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/args/-/args-5.0.1.tgz#4bf298df90a4799a09521362c579278cc2fdd761" + integrity sha512-1kqmFCFsPffavQFGt8OxJdIcETti99kySRUPMpOhaGjL6mRJn8HFU1OxKY5bMqfZKUwTQc1mZkAjmGYaVOHFtQ== + dependencies: + camelcase "5.0.0" + chalk "2.4.2" + leven "2.1.0" + mri "1.1.4" + arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" @@ -3091,6 +3101,11 @@ camelcase-keys@^4.0.0: map-obj "^2.0.0" quick-lru "^1.0.0" +camelcase@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" + integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== + camelcase@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" @@ -3179,7 +3194,7 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -chokidar@^3.1.1: +chokidar@^3.0.0, chokidar@^3.1.1: version "3.4.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.0.tgz#b30611423ce376357c765b9b8f904b9fba3c0be8" integrity sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ== @@ -7014,6 +7029,11 @@ lerna@^3.20.2: import-local "^2.0.0" npmlog "^4.1.2" +leven@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" + integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= + leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" @@ -7742,6 +7762,11 @@ move-file@^2.0.0: dependencies: path-exists "^4.0.0" +mri@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.4.tgz#7cb1dd1b9b40905f1fac053abe25b6720f44744a" + integrity sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w== + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -10323,6 +10348,14 @@ trough@^1.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== +ts-cleaner@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/ts-cleaner/-/ts-cleaner-1.0.5.tgz#837dabc49c39c4ad48af92c257047bc320554cfb" + integrity sha512-ErZpl5RAw09q1nVp8J4uhHCPEXcTMuehcttWZF1Z8L3WeB62NkJ5dWdubf9eKv20Vx7waa3EBTXSANUnJTOzwg== + dependencies: + args "^5.0.1" + chokidar "^3.0.0" + tsconfig-paths@^3.9.0: version "3.9.0" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" From cbbe288d0844de4fe230cca040f394b04a8dc3a6 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam <mrajamanickam@salesforce.com> Date: Thu, 7 May 2020 12:52:23 -0700 Subject: [PATCH 57/61] test(jest): add integration test package to test jest config setup with a11y matcher api Fixes #11 --- jest.config.js | 4 ++++ packages/jest/src/index.ts | 4 ---- packages/jest/src/setup.ts | 3 --- packages/test-integ/__tests__/integration.test.js | 4 ++-- packages/test-integ/jest-setup.js | 13 +++++++++++++ packages/test-integ/jest.config.js | 5 +---- tsconfig.common.json | 2 +- tsconfig.eslint.json | 2 +- 8 files changed, 22 insertions(+), 15 deletions(-) create mode 100644 packages/test-integ/jest-setup.js diff --git a/jest.config.js b/jest.config.js index 38d626ac..3231f458 100644 --- a/jest.config.js +++ b/jest.config.js @@ -13,4 +13,8 @@ module.exports = { statements: 80, }, }, + // Exclude integration tests from this config as it has its own config + testPathIgnorePatterns: ['<rootDir>/packages/test-integ'], + // Direct Jest read the jest config file from integration tests + projects: ['<rootDir>', '<rootDir>/packages/test-integ'], }; diff --git a/packages/jest/src/index.ts b/packages/jest/src/index.ts index bac82e27..e20dc425 100644 --- a/packages/jest/src/index.ts +++ b/packages/jest/src/index.ts @@ -7,7 +7,3 @@ export { toBeAccessible } from './matcher'; export { registerA11yMatchers } from './setup'; - -export const jestConfig = { - setupFilesAfterEnv: [require.resolve('./setup')], -}; diff --git a/packages/jest/src/setup.ts b/packages/jest/src/setup.ts index 7bc3a913..ba99440d 100644 --- a/packages/jest/src/setup.ts +++ b/packages/jest/src/setup.ts @@ -45,6 +45,3 @@ export function adaptA11yConfig(config: A11yConfig): A11yConfig { }, }; } - -// When this file is used as part of Jest setup with setupFilesAfterEnv -registerA11yMatchers(); diff --git a/packages/test-integ/__tests__/integration.test.js b/packages/test-integ/__tests__/integration.test.js index 661b8079..646c782b 100644 --- a/packages/test-integ/__tests__/integration.test.js +++ b/packages/test-integ/__tests__/integration.test.js @@ -6,8 +6,8 @@ */ describe('integration test @sa11y/jest', () => { - it.skip('should have a11y matchers working with setup in jest.config.js', () => { - // TODO(Fix) : Fails with TypeError: expect(...).toBeAccessible is not a function + it('should have a11y matchers working with setup in jest.config.js', () => { + expect(expect.toBeAccessible).toBeDefined(); expect(document).toBeAccessible(); }); }); diff --git a/packages/test-integ/jest-setup.js b/packages/test-integ/jest-setup.js new file mode 100644 index 00000000..01b0c110 --- /dev/null +++ b/packages/test-integ/jest-setup.js @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2020, salesforce.com, inc. + * All rights reserved. + * SPDX-License-Identifier: BSD-3-Clause + * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause + */ + +// Since this is not a typescript project, disabling typescript eslint warning +// TODO (lint): using 'exclude: ["./packages/test-integ/**/*.js"]' in tsconfig.eslint.json doesn't work +// eslint-disable-next-line @typescript-eslint/no-var-requires +const { registerA11yMatchers } = require('@sa11y/jest'); + +registerA11yMatchers(); diff --git a/packages/test-integ/jest.config.js b/packages/test-integ/jest.config.js index 8bce042c..677ee8cc 100644 --- a/packages/test-integ/jest.config.js +++ b/packages/test-integ/jest.config.js @@ -5,9 +5,6 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ -// eslint-disable-next-line @typescript-eslint/no-var-requires -const { jestConfig } = require('@sa11y/jest'); - module.exports = { - ...jestConfig, + setupFilesAfterEnv: ['./jest-setup.js'], }; diff --git a/tsconfig.common.json b/tsconfig.common.json index 1499e0de..34d151a9 100644 --- a/tsconfig.common.json +++ b/tsconfig.common.json @@ -8,7 +8,7 @@ "strict": true, "noEmitOnError": true, "noUnusedLocals": true, - "module": "ESNext", + "module": "commonjs", "moduleResolution": "node", "esModuleInterop": true, "forceConsistentCasingInFileNames": true diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json index 86a2f3cb..36245106 100644 --- a/tsconfig.eslint.json +++ b/tsconfig.eslint.json @@ -1,4 +1,4 @@ { "compilerOptions": { "strict": true }, - "include": ["*.js", "./packages/**/*.ts", "./packages/**/*.js"] + "include": ["*.js", "./packages/**/*.ts", "./packages/test-integ/**/*.js"] } From a6662f6f7534bc9fd76600195e2e15665b2721bf Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam <mrajamanickam@salesforce.com> Date: Thu, 7 May 2020 14:04:08 -0700 Subject: [PATCH 58/61] refactor(test-integration): rename test-integ to test-integration --- cSpell.json | 2 +- jest.config.js | 7 +++++-- packages/{test-integ => test-integration}/README.md | 4 ++-- .../__tests__/integration.test.js | 0 packages/{test-integ => test-integration}/jest-setup.js | 2 +- packages/{test-integ => test-integration}/jest.config.js | 0 packages/{test-integ => test-integration}/package.json | 4 ++-- tsconfig.eslint.json | 2 +- 8 files changed, 12 insertions(+), 9 deletions(-) rename packages/{test-integ => test-integration}/README.md (81%) rename packages/{test-integ => test-integration}/__tests__/integration.test.js (100%) rename packages/{test-integ => test-integration}/jest-setup.js (80%) rename packages/{test-integ => test-integration}/jest.config.js (100%) rename packages/{test-integ => test-integration}/package.json (82%) diff --git a/cSpell.json b/cSpell.json index e82b502e..b9968e9f 100644 --- a/cSpell.json +++ b/cSpell.json @@ -1,5 +1,5 @@ { "ignorePaths": ["node_modules/**", "package.json"], - "ignoreWords": ["assertAccessible", "doctoc", "CNCF", "integ", "SPDX", "tsdoc"], + "ignoreWords": ["assertAccessible", "doctoc", "CNCF", "SPDX", "tsdoc"], "ignoreRegExpList": ["ruleset"] } diff --git a/jest.config.js b/jest.config.js index 3231f458..88423f21 100644 --- a/jest.config.js +++ b/jest.config.js @@ -4,6 +4,9 @@ * SPDX-License-Identifier: BSD-3-Clause * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ + +const integrationTestPath = '<rootDir>/packages/test-integration'; + module.exports = { coverageThreshold: { global: { @@ -14,7 +17,7 @@ module.exports = { }, }, // Exclude integration tests from this config as it has its own config - testPathIgnorePatterns: ['<rootDir>/packages/test-integ'], + testPathIgnorePatterns: [integrationTestPath], // Direct Jest read the jest config file from integration tests - projects: ['<rootDir>', '<rootDir>/packages/test-integ'], + projects: ['<rootDir>', integrationTestPath], }; diff --git a/packages/test-integ/README.md b/packages/test-integration/README.md similarity index 81% rename from packages/test-integ/README.md rename to packages/test-integration/README.md index 5306b9bd..649b2fdb 100644 --- a/packages/test-integ/README.md +++ b/packages/test-integration/README.md @@ -2,10 +2,10 @@ <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> -- [`test-integ`](#test-integ) +- [`Integration tests`](#integration-tests) <!-- END doctoc generated TOC please keep comment here to allow auto update --> -# `test-integ` +# `Integration tests` Private package for integration testing @sa11y packages diff --git a/packages/test-integ/__tests__/integration.test.js b/packages/test-integration/__tests__/integration.test.js similarity index 100% rename from packages/test-integ/__tests__/integration.test.js rename to packages/test-integration/__tests__/integration.test.js diff --git a/packages/test-integ/jest-setup.js b/packages/test-integration/jest-setup.js similarity index 80% rename from packages/test-integ/jest-setup.js rename to packages/test-integration/jest-setup.js index 01b0c110..5a13b8c9 100644 --- a/packages/test-integ/jest-setup.js +++ b/packages/test-integration/jest-setup.js @@ -6,7 +6,7 @@ */ // Since this is not a typescript project, disabling typescript eslint warning -// TODO (lint): using 'exclude: ["./packages/test-integ/**/*.js"]' in tsconfig.eslint.json doesn't work +// TODO (lint): using 'exclude: ["./packages/test-integration/**/*.js"]' in tsconfig.eslint.json doesn't work // eslint-disable-next-line @typescript-eslint/no-var-requires const { registerA11yMatchers } = require('@sa11y/jest'); diff --git a/packages/test-integ/jest.config.js b/packages/test-integration/jest.config.js similarity index 100% rename from packages/test-integ/jest.config.js rename to packages/test-integration/jest.config.js diff --git a/packages/test-integ/package.json b/packages/test-integration/package.json similarity index 82% rename from packages/test-integ/package.json rename to packages/test-integration/package.json index 35950f66..16d840e0 100644 --- a/packages/test-integ/package.json +++ b/packages/test-integration/package.json @@ -1,5 +1,5 @@ { - "name": "@sa11y/test-integ", + "name": "@sa11y/test-integration", "version": "0.1.0", "private": true, "description": "Private package for integration testing @sa11y packages", @@ -8,7 +8,7 @@ "repository": { "type": "git", "url": "git+https://github.com/salesforce/sa11y.git", - "directory": "packages/test-integ" + "directory": "packages/test-integration" }, "devDependencies": { "@sa11y/jest": "0.1.0" diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json index 36245106..27a83b90 100644 --- a/tsconfig.eslint.json +++ b/tsconfig.eslint.json @@ -1,4 +1,4 @@ { "compilerOptions": { "strict": true }, - "include": ["*.js", "./packages/**/*.ts", "./packages/test-integ/**/*.js"] + "include": ["*.js", "./packages/**/*.ts", "./packages/test-integration/**/*.js"] } From e4c2717e772381b0077846c5a2e8e0dc4d3c8014 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam <mrajamanickam@salesforce.com> Date: Thu, 7 May 2020 14:41:21 -0700 Subject: [PATCH 59/61] docs: add/refactor docs --- CHANGELOG.md | 21 +++++++++++-- README.md | 40 +++++++++++++++++------- packages/assert/README.md | 7 ++--- packages/assert/package.json | 2 +- packages/format/package.json | 2 +- packages/jest/README.md | 35 ++++++++++++--------- packages/jest/package.json | 2 +- packages/preset-rules/package.json | 2 +- packages/test-integration/jest.config.js | 2 +- 9 files changed, 76 insertions(+), 37 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d4b497b8..9e6287ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,15 +2,32 @@ <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> -- [(2020-04-07)](#2020-04-07) +- [(2020-05-07)](#2020-05-07) - [Bug Fixes](#bug-fixes) - [Features](#features) -- [(2020-03-20)](#2020-03-20) +- [(2020-04-07)](#2020-04-07) - [Bug Fixes](#bug-fixes-1) - [Features](#features-1) +- [(2020-03-20)](#2020-03-20) + - [Bug Fixes](#bug-fixes-2) + - [Features](#features-2) <!-- END doctoc generated TOC please keep comment here to allow auto update --> +# (2020-05-07) + +### Bug Fixes + +- **preset-rules:** revert object freeze on a11y config object ([9ad3ee0](https://github.com/salesforce/sa11y/commit/9ad3ee084c31e4bff75b2935052764f52fa15897)) + +### Features + +- **assert:** add assert accessible api ([#7](https://github.com/salesforce/sa11y/issues/7)) ([1294f76](https://github.com/salesforce/sa11y/commit/1294f76a153024045e66d7949b91becf44493e4b)) +- **jest:** add basic scaffolding for jest integration ([483291c](https://github.com/salesforce/sa11y/commit/483291cc5b25a194f232e817b66f0c032d013891)) +- **jest:** add scaffolding for jest expect matcher ([51ec35d](https://github.com/salesforce/sa11y/commit/51ec35dd1867bf2467cf1fe5f3ffbb8adc880e7c)) +- **jest:** add toBeAccessibleWith jest a11y matcher for use with config ([ecbfbf9](https://github.com/salesforce/sa11y/commit/ecbfbf9f1a5c8e148be3e0d3b7c523ac192e46df)) +- **test-utils:** add a test utilities package ([2a1c1bf](https://github.com/salesforce/sa11y/commit/2a1c1bfe392be706af3fd2e2d7dd53cbf6e5d2b9)) + # (2020-04-07) ### Bug Fixes diff --git a/README.md b/README.md index 5a5e278c..6f8e43c2 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Salesforce Accessibility Automated Testing Libraries and Tools (@sa11y packages). -![CI](https://github.com/salesforce/sa11y/workflows/CI/badge.svg) +![Build](https://github.com/salesforce/sa11y/workflows/Lint,%20Test/badge.svg) ![Code coverage](https://github.com/salesforce/sa11y/workflows/Code%20coverage/badge.svg) <!-- START doctoc generated TOC please keep comment here to allow auto update --> <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> @@ -10,17 +10,21 @@ Salesforce Accessibility Automated Testing Libraries and Tools (@sa11y packages) - [Docs](#docs) - [Packages](#packages) - - [Preset accessibility rules](#preset-accessibility-rules) + - [Jest integration](#jest-integration) - [assertAccessible API](#assertaccessible-api) - [a11y results formatter](#a11y-results-formatter) - - [Jest integration](#jest-integration) - - [Test utilities](#test-utilities) + - [Preset accessibility rules](#preset-accessibility-rules) + - [Internal packages](#internal-packages) + - [Test utilities](#test-utilities) + - [Integration Tests](#integration-tests) <!-- END doctoc generated TOC please keep comment here to allow auto update --> ## Docs - [Developer Guidelines](./CONTRIBUTING.md) + - Refer to [Quick start](./CONTRIBUTING.md#quick-start) instructions to get started, if you are a + developer looking to Contribute - [Code of Conduct](./CODE_OF_CONDUCT.md) - [Changelog](./CHANGELOG.md) - [LICENSE](./LICENSE.txt) @@ -29,22 +33,36 @@ Salesforce Accessibility Automated Testing Libraries and Tools (@sa11y packages) This repo contains the following packages -### [Preset accessibility rules](./packages/preset-rules/README.md) +### [Jest integration](./packages/jest/README.md) -- Provides Recommended, Extended accessibility preset rule-sets as [axe](https://github.com/dequelabs/axe-core) configuration +- Provides a `toBeAccessible()` accessibility matcher for Jest + - integrates the [assertAccessible API](./packages/assert/README.md) with the [Jest assertion API](https://jestjs.io/docs/en/using-matchers) +- If you are looking to add accessibility testing to your Jest tests use this package ### [assertAccessible API](./packages/assert/README.md) -- checks current DOM for accessibility issues and throws an error when a11y issues are found +- Checks DOM or HTML Element for accessibility issues and throws an error if a11y issues are found +- If you are looking to add accessibility testing to your Javascript unit tests and _not_ using Jest, + use this package ### [a11y results formatter](./packages/format/README.md) -- format raw a11y issues JSON output from axe into an easy to consume format by consolidating and cross-referencing +- Formats raw JSON output of a11y issues from axe into an easy to consume format by consolidating and cross-referencing +- Used by assert Accessible API and Jest a11y matcher +- If you are using axe directly and want to format the results from `axe.run` use this package -### [Jest integration](./packages/jest/README.md) +### [Preset accessibility rules](./packages/preset-rules/README.md) + +- Provides Recommended, Extended accessibility preset rules as [axe](https://github.com/dequelabs/axe-core) configuration +- The Extended preset rule is used by default in the Jest a11y matcher and assert Accessible API + - Both APIs can be overridden to use the Recommended ruleset -- provides a `toBeAccessible()` accessibility matcher for Jest integrating the [assertAccessible API](./packages/assert/README.md) with the [Jest assertion API](https://jestjs.io/docs/en/using-matchers) +### Internal packages -### [Test utilities](./packages/test-utils/README.md) +#### [Test utilities](./packages/test-utils/README.md) - Private package providing test utilities for `@sa11y` packages + +#### [Integration Tests](packages/test-integration/README.md) + +- Private package providing integration tests for `@sa11y` packages diff --git a/packages/assert/README.md b/packages/assert/README.md index 5423146c..43798490 100644 --- a/packages/assert/README.md +++ b/packages/assert/README.md @@ -5,15 +5,14 @@ Provides assertAccessible API to check DOM for accessibility issues <!-- START doctoc generated TOC please keep comment here to allow auto update --> <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> -- [Usage](#usage) + +- [Usage](#usage) <!-- END doctoc generated TOC please keep comment here to allow auto update --> ## Usage -// TODO(doc): Generate usage docs from code (using JSDOC, TSDOC etc) - -```typescript +```javascript import { assertAccessible } from '@sa11y/assert'; import { recommended } from '@sa11y/preset-rules'; diff --git a/packages/assert/package.json b/packages/assert/package.json index e190f946..919fb7f4 100644 --- a/packages/assert/package.json +++ b/packages/assert/package.json @@ -3,7 +3,7 @@ "version": "0.1.1", "description": "Provides assertAccessible API to check DOM for accessibility issues", "license": "BSD-3-Clause", - "homepage": "https://github.com/salesforce/sa11y/blob/master/packages/assert/README.md", + "homepage": "https://github.com/salesforce/sa11y/blob/master/packages/assert#readme", "repository": { "type": "git", "url": "https://github.com/salesforce/sa11y.git", diff --git a/packages/format/package.json b/packages/format/package.json index f4fa04a0..10f1ba5d 100644 --- a/packages/format/package.json +++ b/packages/format/package.json @@ -3,7 +3,7 @@ "version": "0.1.1", "description": "Accessibility results re-formatter", "license": "BSD-3-Clause", - "homepage": "https://github.com/salesforce/sa11y/blob/master/packages/format/README.md", + "homepage": "https://github.com/salesforce/sa11y/blob/master/packages/format#readme", "repository": { "type": "git", "url": "https://github.com/salesforce/sa11y.git", diff --git a/packages/jest/README.md b/packages/jest/README.md index a1f6887b..db41b096 100644 --- a/packages/jest/README.md +++ b/packages/jest/README.md @@ -7,8 +7,8 @@ Accessibility matcher for [Jest](https://jestjs.io) - [Setup](#setup) - - [Automatic](#automatic) - - [Manual](#manual) + - [Project level](#project-level) + - [Test module level](#test-module-level) - [Usage](#usage) <!-- END doctoc generated TOC please keep comment here to allow auto update --> @@ -17,26 +17,32 @@ Accessibility matcher for [Jest](https://jestjs.io) The accessibility matcher helper APIs need to be registered with Jest before they can be used in tests. -### Automatic +### Project level -Modify Jest config to add the required setup for accessibility matchers. +You can set up the a11y matchers once at the project level to make it available to all the Jest tests in the project. +For an example look at the [Integration tests](../test-integration/README.md). -In the `jest.config.js` at the root of your project, add +- Add a Jest setup file (e.g. `jest-setup.js`) and add the following code that registers the a11y matchers ```javascript -const { jestConfig } = require('@sa11y/jest'); +const { registerA11yMatchers } = require('@sa11y/jest'); +registerA11yMatchers(); +``` + +- Add/Modify Jest config at project root to invoke the Jest setup file as setup above. + In the `jest.config.js` at the root of your project, add: +```javascript module.exports = { - ...jestConfig, - // Your config .. + setupFilesAfterEnv: ['<rootDir>/jest-setup.js'], }; ``` -### Manual +### Test module level -Invoke `registerA11yMatchers` before using the accessibility matchers in the tests. +Invoke `registerA11yMatchers` before using the accessibility matchers in the tests e.g. -```typescript +```javascript import { registerA11yMatchers } from '@sa11y/jest'; beforeAll(() => { @@ -46,10 +52,9 @@ beforeAll(() => { ## Usage -```typescript +```javascript import { recommended } from '@sa11y/preset-rules'; -import { registerA11yMatchers } from "@sa11y/jest"; - +import { registerA11yMatchers } from '@sa11y/jest'; beforeAll(() => { registerA11yMatchers(); @@ -57,7 +62,7 @@ beforeAll(() => { it('should be accessible', async () => { // Setup DOM to be tested for accessibility - ... + //... // assert that DOM is accessible (using extended preset-rule) await expect(document).toBeAccessible(); diff --git a/packages/jest/package.json b/packages/jest/package.json index 7638954d..e71a1e0d 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -3,7 +3,7 @@ "version": "0.1.0", "description": "Accessibility testing libraries integration with Jest", "license": "BSD-3-Clause", - "homepage": "https://github.com/salesforce/sa11y/blob/master/packages/jest/README.md", + "homepage": "https://github.com/salesforce/sa11y/blob/master/packages/jest#readme", "repository": { "type": "git", "url": "https://github.com/salesforce/sa11y.git", diff --git a/packages/preset-rules/package.json b/packages/preset-rules/package.json index 4ea5ecc7..c205c8f3 100644 --- a/packages/preset-rules/package.json +++ b/packages/preset-rules/package.json @@ -3,7 +3,7 @@ "version": "0.1.2", "description": "Accessibility preset rule configs for axe", "license": "BSD-3-Clause", - "homepage": "https://github.com/salesforce/sa11y/blob/master/packages/preset-rules/README.md", + "homepage": "https://github.com/salesforce/sa11y/blob/master/packages/preset-rules#readme", "repository": { "type": "git", "url": "https://github.com/salesforce/sa11y.git", diff --git a/packages/test-integration/jest.config.js b/packages/test-integration/jest.config.js index 677ee8cc..01399052 100644 --- a/packages/test-integration/jest.config.js +++ b/packages/test-integration/jest.config.js @@ -6,5 +6,5 @@ */ module.exports = { - setupFilesAfterEnv: ['./jest-setup.js'], + setupFilesAfterEnv: ['<rootDir>/jest-setup.js'], }; From 97249c9c6e7213a177c703743d5afee3c95d1dd5 Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam <mrajamanickam@salesforce.com> Date: Thu, 7 May 2020 15:03:47 -0700 Subject: [PATCH 60/61] docs: change code block types in docs from ts to js for uniformity --- packages/format/README.md | 5 +++-- packages/test-utils/README.md | 13 +++++-------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/packages/format/README.md b/packages/format/README.md index 73020f37..e56bebb2 100644 --- a/packages/format/README.md +++ b/packages/format/README.md @@ -5,13 +5,14 @@ Format accessibility results from axe <!-- START doctoc generated TOC please keep comment here to allow auto update --> <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> -- [Usage](#usage) + +- [Usage](#usage) <!-- END doctoc generated TOC please keep comment here to allow auto update --> ## Usage -```typescript +```javascript import axe from 'axe-core'; import { a11yResultsFormatter } from '@sa11y/format'; diff --git a/packages/test-utils/README.md b/packages/test-utils/README.md index 871fd603..dc77945a 100644 --- a/packages/test-utils/README.md +++ b/packages/test-utils/README.md @@ -5,18 +5,15 @@ Private package providing test utilities for @sa11y packages <!-- START doctoc generated TOC please keep comment here to allow auto update --> <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> -- [Usage](#usage) + +- [Usage](#usage) <!-- END doctoc generated TOC please keep comment here to allow auto update --> ## Usage -```typescript -import { - beforeEachSetup, - domWithA11yIssues, - domWithNoA11yIssues, -} from '@sa11y/test-utils'; +```javascript +import { beforeEachSetup, domWithA11yIssues, domWithNoA11yIssues } from '@sa11y/test-utils'; import { registerA11yMatchers } from '@sa11y/jest'; @@ -29,7 +26,7 @@ beforeEach(() => { }); describe('...', () => { - it.('...', async () => { + it('...', async () => { document.body.innerHTML = domWithNoA11yIssues; await expect(document).toBeAccessible(); From 9b1aa3b10f4dc6083e4b32670baca62984e1521b Mon Sep 17 00:00:00 2001 From: Mohan Raj Rajamanickam <mrajamanickam@salesforce.com> Date: Thu, 7 May 2020 17:49:38 -0700 Subject: [PATCH 61/61] test(jest): add doc/tests for checking html elem with jest Fix incorrect integration test, add doc about async usage --- .gitattributes | 2 ++ jest.config.js | 4 +-- packages/jest/README.md | 10 +++++++ packages/jest/__tests__/matcher.test.ts | 27 +++++++++++++++++-- packages/jest/package.json | 2 +- packages/jest/src/matcher.ts | 1 + packages/preset-rules/README.md | 5 ++-- .../__tests__/integration.test.js | 9 +++++-- packages/test-utils/src/index.ts | 2 +- packages/test-utils/src/test-data.ts | 3 ++- 10 files changed, 54 insertions(+), 11 deletions(-) diff --git a/.gitattributes b/.gitattributes index 3f2f69ca..c950894f 100644 --- a/.gitattributes +++ b/.gitattributes @@ -7,3 +7,5 @@ yarn.lock linguist-generated=true # generated JS files dist/* linguist-generated=true +# jest snapshots +*.test.ts.snap linguist-generated=true diff --git a/jest.config.js b/jest.config.js index 88423f21..d03545f1 100644 --- a/jest.config.js +++ b/jest.config.js @@ -16,8 +16,8 @@ module.exports = { statements: 80, }, }, - // Exclude integration tests from this config as it has its own config + // Exclude integration tests from being run with config as it has its own config and setup testPathIgnorePatterns: [integrationTestPath], - // Direct Jest read the jest config file from integration tests + // Direct Jest to read the jest config file from integration tests projects: ['<rootDir>', integrationTestPath], }; diff --git a/packages/jest/README.md b/packages/jest/README.md index db41b096..765ddfe2 100644 --- a/packages/jest/README.md +++ b/packages/jest/README.md @@ -52,6 +52,12 @@ beforeAll(() => { ## Usage +- **WARNING**: `toBeAccessible` **must** be invoked with `await` or the equivalent supported async method in your env. + - Not invoking it async would result in incorrect results + - e.g. no assertions even when page is not accessible +- `toBeAccessible` jest matcher can be invoked on a `document` (JSDOM) or an HTML element + to check for accessibility + ```javascript import { recommended } from '@sa11y/preset-rules'; import { registerA11yMatchers } from '@sa11y/jest'; @@ -67,6 +73,10 @@ it('should be accessible', async () => { // assert that DOM is accessible (using extended preset-rule) await expect(document).toBeAccessible(); + // Can be used to test accessibility of a specific HTML element + const elem = document.getElementById('foo'); + await expect(elem).toBeAccessible(); + // use recommended preset-rule await expect(document).toBeAccessible(recommended); }); diff --git a/packages/jest/__tests__/matcher.test.ts b/packages/jest/__tests__/matcher.test.ts index 351efa4e..19503d2a 100644 --- a/packages/jest/__tests__/matcher.test.ts +++ b/packages/jest/__tests__/matcher.test.ts @@ -8,7 +8,14 @@ import { matcherHintMsg, toBeAccessible } from '../src/matcher'; import { registerA11yMatchers } from '../src'; import { extended, recommended } from '@sa11y/preset-rules'; -import { beforeEachSetup, cartesianProduct, domWithA11yIssues, domWithNoA11yIssues } from '@sa11y/test-utils'; +import { + beforeEachSetup, + cartesianProduct, + domWithA11yIssues, + domWithNoA11yIssues, + domWithA11yIssuesBodyID, + shadowDomID, +} from '@sa11y/test-utils'; // Collection of values to be tested passed in as different API parameters const a11yConfigParams = [extended, recommended, undefined]; @@ -25,7 +32,7 @@ beforeEach(() => { describe('a11y matchers', () => { it('should be extendable with expect', () => { - // Mostly here for code cov as it doesn't register correctly with just registerA11yMatchers() + // Mostly here for code cov as it doesn't register correctly with just registerA11yMatchers() expect.extend({ toBeAccessible }); }); }); @@ -48,4 +55,20 @@ describe('toBeAccessible jest a11y matcher', () => { expect(e.message).toContain(matcherHintMsg); } }); + + it.each([ + // dom with no issues won't result in error thrown and hence will have 1 less assertion + [shadowDomID, domWithNoA11yIssues, 2], + [domWithA11yIssuesBodyID, domWithA11yIssues, 3], + ])('should be able to check a11y of a HTML element: %#', async (id: string, dom: string, numAssertions: number) => { + expect.assertions(numAssertions); + document.body.innerHTML = dom; + const elem = document.getElementById(id); + expect(elem).toBeDefined(); + try { + await expect(elem).toBeAccessible(); + } catch (e) { + expect(e.message).toContain(matcherHintMsg); + } + }); }); diff --git a/packages/jest/package.json b/packages/jest/package.json index e71a1e0d..89cb62fc 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -17,7 +17,7 @@ "matcher" ], "main": "dist/index.js", - "types": "dist/jest.d.ts", + "types": "dist/index.d.ts", "files": [ "dist/**/*.js" ], diff --git a/packages/jest/src/matcher.ts b/packages/jest/src/matcher.ts index a6f0134a..1836b813 100644 --- a/packages/jest/src/matcher.ts +++ b/packages/jest/src/matcher.ts @@ -35,6 +35,7 @@ export async function toBeAccessible( let isAccessible = true; let a11yViolations = ''; + // TODO (Improvement): Can we detect if this is invoked async and error if not ? try { await assertAccessible(received, adaptA11yConfig(config)); } catch (e) { diff --git a/packages/preset-rules/README.md b/packages/preset-rules/README.md index 3e0672d8..88b1e4e7 100644 --- a/packages/preset-rules/README.md +++ b/packages/preset-rules/README.md @@ -5,13 +5,14 @@ Accessibility preset rule configs for axe <!-- START doctoc generated TOC please keep comment here to allow auto update --> <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> -- [Usage](#usage) + +- [Usage](#usage) <!-- END doctoc generated TOC please keep comment here to allow auto update --> ## Usage -```typescript +```javascript import axe from 'axe-core'; import { extended } from '@sa11y/preset-rules'; diff --git a/packages/test-integration/__tests__/integration.test.js b/packages/test-integration/__tests__/integration.test.js index 646c782b..3d050ebf 100644 --- a/packages/test-integration/__tests__/integration.test.js +++ b/packages/test-integration/__tests__/integration.test.js @@ -5,9 +5,14 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ +import { beforeEachSetup, domWithNoA11yIssues } from '@sa11y/test-utils'; + +beforeEach(beforeEachSetup); + describe('integration test @sa11y/jest', () => { - it('should have a11y matchers working with setup in jest.config.js', () => { + it('should have a11y matchers working with setup in jest.config.js', async () => { + document.body.innerHTML = domWithNoA11yIssues; expect(expect.toBeAccessible).toBeDefined(); - expect(document).toBeAccessible(); + await expect(document).toBeAccessible(); }); }); diff --git a/packages/test-utils/src/index.ts b/packages/test-utils/src/index.ts index d97d474c..21a40aae 100644 --- a/packages/test-utils/src/index.ts +++ b/packages/test-utils/src/index.ts @@ -5,5 +5,5 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ -export { domWithA11yIssues, domWithNoA11yIssues, shadowDomID } from './test-data'; +export { domWithA11yIssues, domWithNoA11yIssues, shadowDomID, domWithA11yIssuesBodyID } from './test-data'; export { beforeEachSetup, cartesianProduct } from './utils'; diff --git a/packages/test-utils/src/test-data.ts b/packages/test-utils/src/test-data.ts index aa1e28d2..a501d8ef 100644 --- a/packages/test-utils/src/test-data.ts +++ b/packages/test-utils/src/test-data.ts @@ -5,9 +5,10 @@ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ +export const domWithA11yIssuesBodyID = 'dom-with-issues'; // DOM with no a11y issues export const domWithA11yIssues = `<html> - <body> + <body id=${domWithA11yIssuesBodyID}> <a href="#"></a> </body> </html>`;