diff options
| author | Shin'ya Ueoka <ueokande@i-beam.org> | 2020-02-22 22:03:58 +0900 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-02-22 22:03:58 +0900 | 
| commit | 4c3be5b014fe61a608b4f4aa69e40e3575d63b68 (patch) | |
| tree | e061c016ffc8efabccd647b4ab9ef07fe77c6434 | |
| parent | 78c87e895e6ac50b6c6d83d4cc77bfd8017e5384 (diff) | |
| parent | 2f0cea1debd2b37b51e31adb8bf16d914655171a (diff) | |
Merge pull request #714 from ueokande/qa-0.27
QA 0.27
| -rw-r--r-- | QA.md | 9 | ||||
| -rw-r--r-- | README.md | 1 | ||||
| -rw-r--r-- | e2e/find.test.ts | 113 | ||||
| -rw-r--r-- | e2e/lib/Console.ts | 5 | ||||
| -rw-r--r-- | e2e/lib/Page.ts | 18 | ||||
| -rw-r--r-- | package-lock.json | 850 | ||||
| -rw-r--r-- | package.json | 42 | 
7 files changed, 788 insertions, 250 deletions
@@ -27,12 +27,3 @@ Test operations with default key maps.  - [ ] keymap settings are applied to open tabs without reload  - [ ] search settings are applied to open tabs without reload - -## Find mode - -- [ ] open console with <kbd>/</kbd> -- [ ] highlight a word on <kbd>Enter</kbd> pressed in find console -- [ ] Search next/prev by <kbd>n</kbd>/<kbd>N</kbd> -- [ ] Wrap search by <kbd>n</kbd>/<kbd>N</kbd> -- [ ] Find with last keyword if keyword is empty -- [ ] Find keyword last used on new tab opened @@ -3,7 +3,6 @@  [](https://greenkeeper.io/)  [](https://gitter.im/vim-vixen/vim-vixen)  [](https://circleci.com/gh/ueokande/vim-vixen) -[](https://david-dm.org/ueokande/vim-vixen?type=dev)  Vim Vixen is a Firefox add-on which allows you to easily navigate the web by  keyboard. Since version 57, Firefox has migrated to the WebExtensions API and diff --git a/e2e/find.test.ts b/e2e/find.test.ts new file mode 100644 index 0000000..74097ab --- /dev/null +++ b/e2e/find.test.ts @@ -0,0 +1,113 @@ +import * as path from 'path'; +import * as assert from 'assert'; + +import eventually from './eventually'; +import TestServer from './lib/TestServer'; +import { Builder, Lanthan } from 'lanthan'; +import { Key, WebDriver } from 'selenium-webdriver'; +import Page from './lib/Page'; + +describe("find test", () => { +  const server = new TestServer().receiveContent('/', +    `<!DOCTYPE html><html lang="en"><body>--hello--hello--hello--</body></html>`, +  ); +  let lanthan: Lanthan; +  let webdriver: WebDriver; +  let page: Page; + +  before(async() => { +    lanthan = await Builder +      .forBrowser('firefox') +      .spyAddon(path.join(__dirname, '..')) +      .build(); +    webdriver = lanthan.getWebDriver(); +    await server.start(); +  }); + +  after(async() => { +    await server.stop(); +    if (lanthan) { +      await lanthan.quit(); +    } +  }); + +  beforeEach(async() => { +    page = await Page.navigateTo(webdriver, server.url()); +  }); + +  it('starts searching', async() => { +    await page.sendKeys('/'); +    const console = await page.getConsole(); +    await console.execCommand("hello"); +    await page.switchToTop(); + +    let selection = await page.getSelection(); +    assert.deepStrictEqual(selection, { from: 2, to: 7 }); + +    // search next keyword +    await page.sendKeys("n"); +    selection = await page.getSelection(); +    assert.deepStrictEqual(selection, { from: 9, to: 14 }); + +    // search previous keyword +    await page.sendKeys(Key.SHIFT, "N"); +    selection = await page.getSelection(); +    assert.deepStrictEqual(selection, { from: 2, to: 7 }); + +    // search previous keyword by wrap-search +    await page.sendKeys(Key.SHIFT, "N"); +    selection = await page.getSelection(); +    assert.deepStrictEqual(selection, { from: 16, to: 21 }); +  }); + +  it('shows error if pattern not found', async() => { +    await page.sendKeys('/'); +    let console = await page.getConsole(); +    await console.execCommand('world'); + +    await page.switchToTop(); +    const selection = await page.getSelection(); +    assert.deepStrictEqual(selection, { from: 0, to: 0 }); + +    await eventually(async() => { +      console = await page.getConsole(); +      const message = await console.getErrorMessage(); +      assert.strictEqual(message, 'Pattern not found: world'); +    }); +  }); + +  it('search with last keyword if keyword is empty', async() => { +    await page.sendKeys('/'); +    let console = await page.getConsole(); +    await console.execCommand('hello'); +    await page.switchToTop(); + +    await page.clearSelection(); +    let selection = await page.getSelection(); +    assert.deepStrictEqual(selection, { from: 0, to: 0 }); + +    await page.sendKeys('/'); +    console = await page.getConsole(); +    await console.execCommand(''); +    await page.switchToTop(); + +    selection = await page.getSelection(); +    assert.deepStrictEqual(selection, { from: 2, to: 7 }); +  }); + +  it('search with last keyword on new page', async() => { +    await page.sendKeys('/'); +    const console = await page.getConsole(); +    await console.execCommand('hello'); + +    await page.switchToTop(); +    await page.sendKeys('n'); +    let selection = await page.getSelection(); +    assert.deepStrictEqual(selection, { from: 9, to: 14 }); + +    page = await Page.navigateTo(webdriver, server.url()); +    await page.sendKeys('n'); +    selection = await page.getSelection(); +    assert.deepStrictEqual(selection, { from: 2, to: 7 }); +  }); +}); diff --git a/e2e/lib/Console.ts b/e2e/lib/Console.ts index 6a82387..e3bd2d6 100644 --- a/e2e/lib/Console.ts +++ b/e2e/lib/Console.ts @@ -35,6 +35,11 @@ export class Console {      return p.getText();    } +  async getInformationMessage(): Promise<string> { +    const p = await this.webdriver.findElement(By.css('.vimvixen-console-info')); +    return p.getText(); +  } +    async inputKeys(...keys: string[]) {      const input = await this.webdriver.findElement(By.css('input'));      await input.sendKeys(...keys); diff --git a/e2e/lib/Page.ts b/e2e/lib/Page.ts index ad3f454..31605cb 100644 --- a/e2e/lib/Page.ts +++ b/e2e/lib/Page.ts @@ -6,6 +6,11 @@ type Hint = {    text: string,  }; +type Selection = { +  from: number, +  to: number, +}; +  export default class Page {    private constructor(private webdriver: WebDriver) {    } @@ -66,6 +71,19 @@ export default class Page {      return this.webdriver.executeScript(() => window.document.documentElement.clientHeight);    } +  async getSelection(): Promise<Selection> { +    const obj = await this.webdriver.executeScript(`return window.getSelection();`) as any; +    return { from: obj.anchorOffset, to: obj.focusOffset }; +  } + +  async clearSelection(): Promise<void> { +    await this.webdriver.executeScript(`window.getSelection().removeAllRanges()`); +  } + +  async switchToTop(): Promise<void> { +    await this.webdriver.switchTo().defaultContent(); +  } +    async waitAndGetHints(): Promise<Hint[]> {      await this.webdriver.wait(until.elementsLocated(By.css('.vimvixen-hint'))); diff --git a/package-lock.json b/package-lock.json index 9134dda..259b908 100644 --- a/package-lock.json +++ b/package-lock.json @@ -70,50 +70,28 @@        }      },      "@sinonjs/commons": { -      "version": "1.7.1", -      "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.7.1.tgz", -      "integrity": "sha512-Debi3Baff1Qu1Unc3mjJ96MgpbwTn43S1+9yJ0llWygPwDNu2aaWBD6yc9y/Z8XDRNhx7U+u2UDg2OGQXkclUQ==", +      "version": "1.7.0", +      "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.7.0.tgz", +      "integrity": "sha512-qbk9AP+cZUsKdW1GJsBpxPKFmCJ0T8swwzVje3qFd+AkQb74Q/tiuzrdfFg8AD2g5HH/XbE/I8Uc1KYHVYWfhg==",        "dev": true,        "requires": {          "type-detect": "4.0.8"        }      }, -    "@sinonjs/fake-timers": { -      "version": "6.0.0", -      "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.0.tgz", -      "integrity": "sha512-atR1J/jRXvQAb47gfzSK8zavXy7BcpnYq21ALon0U99etu99vsir0trzIO3wpeLtW+LLVY6X7EkfVTbjGSH8Ww==", -      "dev": true, -      "requires": { -        "@sinonjs/commons": "^1.7.0" -      } -    },      "@sinonjs/formatio": { -      "version": "5.0.0", -      "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-5.0.0.tgz", -      "integrity": "sha512-ejFRrFNMaTAmhg9u1lYKJQxDocowta6KQKFnBE7XtZb/AAPlLkWQQSaqwlGYnDWQ6paXzyM1vbMhLAujSFiVPw==", +      "version": "4.0.1", +      "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-4.0.1.tgz", +      "integrity": "sha512-asIdlLFrla/WZybhm0C8eEzaDNNrzymiTqHMeJl6zPW2881l3uuVRpm0QlRQEjqYWv6CcKMGYME3LbrLJsORBw==",        "dev": true,        "requires": {          "@sinonjs/commons": "^1",          "@sinonjs/samsam": "^4.2.0" -      }, -      "dependencies": { -        "@sinonjs/samsam": { -          "version": "4.2.2", -          "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-4.2.2.tgz", -          "integrity": "sha512-z9o4LZUzSD9Hl22zV38aXNykgFeVj8acqfFabCY6FY83n/6s/XwNJyYYldz6/9lBJanpno9h+oL6HTISkviweA==", -          "dev": true, -          "requires": { -            "@sinonjs/commons": "^1.6.0", -            "lodash.get": "^4.4.2", -            "type-detect": "^4.0.8" -          } -        }        }      },      "@sinonjs/samsam": { -      "version": "5.0.1", -      "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-5.0.1.tgz", -      "integrity": "sha512-iSZdE68szyFvV8ReYve6t4gAA1rLVwGyyhWBg9qrz8VAn1FH141gdg0NJcMrAJ069rD2XM2KQzY8ZNDgmTfBQA==", +      "version": "4.2.2", +      "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-4.2.2.tgz", +      "integrity": "sha512-z9o4LZUzSD9Hl22zV38aXNykgFeVj8acqfFabCY6FY83n/6s/XwNJyYYldz6/9lBJanpno9h+oL6HTISkviweA==",        "dev": true,        "requires": {          "@sinonjs/commons": "^1.6.0", @@ -128,9 +106,9 @@        "dev": true      },      "@types/assert": { -      "version": "1.4.3", -      "resolved": "https://registry.npmjs.org/@types/assert/-/assert-1.4.3.tgz", -      "integrity": "sha512-491hfOvNr0+BGOHT2m36xJ+LK68IuOshvxV0VIrKOnzBDL11WlDa3PwO+drTYkwCdfzJRN9REcDPZVVcrx1ucw==", +      "version": "1.4.6", +      "resolved": "https://registry.npmjs.org/@types/assert/-/assert-1.4.6.tgz", +      "integrity": "sha512-r/N9gGdYr2MfZSbdi6w6VH3+qS1KboBqZ0bkDiTD2RdAls3smYDK/jy8jhGyGTZglFgLTCknH1MBJG8M4sd+6A==",        "dev": true      },      "@types/body-parser": { @@ -144,9 +122,9 @@        }      },      "@types/chai": { -      "version": "4.2.7", -      "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.7.tgz", -      "integrity": "sha512-luq8meHGYwvky0O7u0eQZdA7B4Wd9owUCqvbw2m3XCrCU8mplYOujMBbvyS547AxJkC+pGnd0Cm15eNxEUNU8g==", +      "version": "4.2.8", +      "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.8.tgz", +      "integrity": "sha512-U1bQiWbln41Yo6EeHMr+34aUhvrMVyrhn9lYfPSpLTCrZlGxU4Rtn1bocX+0p2Fc/Jkd2FanCEXdw0WNfHHM0w==",        "dev": true      },      "@types/connect": { @@ -208,9 +186,9 @@        "dev": true      },      "@types/mocha": { -      "version": "7.0.0", -      "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-7.0.0.tgz", -      "integrity": "sha512-6mh1VlA343Ax31blo37+KZ0DxDOA8b6cL963xPOOt7fMYtG07aJJ+0FRLvcDO4KrL45faOS104G7kwAjZc9l4w==", +      "version": "7.0.1", +      "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-7.0.1.tgz", +      "integrity": "sha512-L/Nw/2e5KUaprNJoRA33oly+M8X8n0K+FwLTbYqwTcR14wdPWeRkigBLfSFpN/Asf9ENZTMZwLxjtjeYucAA4Q==",        "dev": true      },      "@types/node": { @@ -232,9 +210,9 @@        "dev": true      },      "@types/react": { -      "version": "16.9.17", -      "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.17.tgz", -      "integrity": "sha512-UP27In4fp4sWF5JgyV6pwVPAQM83Fj76JOcg02X5BZcpSu5Wx+fP9RMqc2v0ssBoQIFvD5JdKY41gjJJKmw6Bg==", +      "version": "16.9.19", +      "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.19.tgz", +      "integrity": "sha512-LJV97//H+zqKWMms0kvxaKYJDG05U2TtQB3chRLF8MPNs+MQh/H1aGlyDUxjaHvu08EAGerdX2z4LTBc7ns77A==",        "dev": true,        "requires": {          "@types/prop-types": "*", @@ -242,18 +220,18 @@        }      },      "@types/react-dom": { -      "version": "16.9.4", -      "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.4.tgz", -      "integrity": "sha512-fya9xteU/n90tda0s+FtN5Ym4tbgxpq/hb/Af24dvs6uYnYn+fspaxw5USlw0R8apDNwxsqumdRoCoKitckQqw==", +      "version": "16.9.5", +      "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.5.tgz", +      "integrity": "sha512-BX6RQ8s9D+2/gDhxrj8OW+YD4R+8hj7FEM/OJHGNR0KipE1h1mSsf39YeyC81qafkq+N3rU3h3RFbLSwE5VqUg==",        "dev": true,        "requires": {          "@types/react": "*"        }      },      "@types/react-redux": { -      "version": "7.1.5", -      "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.5.tgz", -      "integrity": "sha512-ZoNGQMDxh5ENY7PzU7MVonxDzS1l/EWiy8nUhDqxFqUZn4ovboCyvk4Djf68x6COb7vhGTKjyjxHxtFdAA5sUA==", +      "version": "7.1.7", +      "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.7.tgz", +      "integrity": "sha512-U+WrzeFfI83+evZE2dkZ/oF/1vjIYgqrb5dGgedkqVV8HEfDFujNgWCwHL89TDuWKb47U0nTBT6PLGq4IIogWg==",        "dev": true,        "requires": {          "@types/hoist-non-react-statics": "^3.3.0", @@ -263,9 +241,9 @@        }      },      "@types/react-test-renderer": { -      "version": "16.9.1", -      "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-16.9.1.tgz", -      "integrity": "sha512-nCXQokZN1jp+QkoDNmDZwoWpKY8HDczqevIDO4Uv9/s9rbGPbSpy8Uaxa5ixHKkcm/Wt0Y9C3wCxZivh4Al+rQ==", +      "version": "16.9.2", +      "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-16.9.2.tgz", +      "integrity": "sha512-4eJr1JFLIAlWhzDkBCkhrOIWOvOxcCAfQh+jiKg7l/nNZcCIL2MHl2dZhogIFKyHzedVWHaVP1Yydq/Ruu4agw==",        "dev": true,        "requires": {          "@types/react": "*" @@ -317,12 +295,12 @@        "dev": true      },      "@typescript-eslint/eslint-plugin": { -      "version": "2.12.0", -      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.12.0.tgz", -      "integrity": "sha512-1t4r9rpLuEwl3hgt90jY18wJHSyb0E3orVL3DaqwmpiSDHmHiSspVsvsFF78BJ/3NNG3qmeso836jpuBWYziAA==", +      "version": "2.19.0", +      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.19.0.tgz", +      "integrity": "sha512-u7IcQ9qwsB6U806LupZmINRnQjC+RJyv36sV/ugaFWMHTbFm/hlLTRx3gGYJgHisxcGSTnf+I/fPDieRMhPSQQ==",        "dev": true,        "requires": { -        "@typescript-eslint/experimental-utils": "2.12.0", +        "@typescript-eslint/experimental-utils": "2.19.0",          "eslint-utils": "^1.4.3",          "functional-red-black-tree": "^1.0.1",          "regexpp": "^3.0.0", @@ -353,13 +331,13 @@        }      },      "@typescript-eslint/experimental-utils": { -      "version": "2.12.0", -      "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.12.0.tgz", -      "integrity": "sha512-jv4gYpw5N5BrWF3ntROvCuLe1IjRenLy5+U57J24NbPGwZFAjhnM45qpq0nDH1y/AZMb3Br25YiNVwyPbz6RkA==", +      "version": "2.19.0", +      "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.19.0.tgz", +      "integrity": "sha512-zwpg6zEOPbhB3+GaQfufzlMUOO6GXCNZq6skk+b2ZkZAIoBhVoanWK255BS1g5x9bMwHpLhX0Rpn5Fc3NdCZdg==",        "dev": true,        "requires": {          "@types/json-schema": "^7.0.3", -        "@typescript-eslint/typescript-estree": "2.12.0", +        "@typescript-eslint/typescript-estree": "2.19.0",          "eslint-scope": "^5.0.0"        },        "dependencies": { @@ -376,14 +354,14 @@        }      },      "@typescript-eslint/parser": { -      "version": "2.12.0", -      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.12.0.tgz", -      "integrity": "sha512-lPdkwpdzxEfjI8TyTzZqPatkrswLSVu4bqUgnB03fHSOwpC7KSerPgJRgIAf11UGNf7HKjJV6oaPZI4AghLU6g==", +      "version": "2.19.0", +      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.19.0.tgz", +      "integrity": "sha512-s0jZoxAWjHnuidbbN7aA+BFVXn4TCcxEVGPV8lWMxZglSs3NRnFFAlL+aIENNmzB2/1jUJuySi6GiM6uACPmpg==",        "dev": true,        "requires": {          "@types/eslint-visitor-keys": "^1.0.0", -        "@typescript-eslint/experimental-utils": "2.12.0", -        "@typescript-eslint/typescript-estree": "2.12.0", +        "@typescript-eslint/experimental-utils": "2.19.0", +        "@typescript-eslint/typescript-estree": "2.19.0",          "eslint-visitor-keys": "^1.1.0"        },        "dependencies": { @@ -396,16 +374,16 @@        }      },      "@typescript-eslint/typescript-estree": { -      "version": "2.12.0", -      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.12.0.tgz", -      "integrity": "sha512-rGehVfjHEn8Frh9UW02ZZIfJs6SIIxIu/K1bbci8rFfDE/1lQ8krIJy5OXOV3DVnNdDPtoiPOdEANkLMrwXbiQ==", +      "version": "2.19.0", +      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.19.0.tgz", +      "integrity": "sha512-n6/Xa37k0jQdwpUszffi19AlNbVCR0sdvCs3DmSKMD7wBttKY31lhD2fug5kMD91B2qW4mQldaTEc1PEzvGu8w==",        "dev": true,        "requires": {          "debug": "^4.1.1",          "eslint-visitor-keys": "^1.1.0",          "glob": "^7.1.6",          "is-glob": "^4.0.1", -        "lodash.unescape": "4.0.1", +        "lodash": "^4.17.15",          "semver": "^6.3.0",          "tsutils": "^3.17.1"        }, @@ -693,15 +671,23 @@        "dev": true      },      "ajv": { -      "version": "6.10.2", -      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", -      "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", +      "version": "6.11.0", +      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.11.0.tgz", +      "integrity": "sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA==",        "dev": true,        "requires": { -        "fast-deep-equal": "^2.0.1", +        "fast-deep-equal": "^3.1.1",          "fast-json-stable-stringify": "^2.0.0",          "json-schema-traverse": "^0.4.1",          "uri-js": "^4.2.2" +      }, +      "dependencies": { +        "fast-deep-equal": { +          "version": "3.1.1", +          "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", +          "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", +          "dev": true +        }        }      },      "ajv-cli": { @@ -819,9 +805,9 @@        }      },      "arg": { -      "version": "4.1.2", -      "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.2.tgz", -      "integrity": "sha512-+ytCkGcBtHZ3V2r2Z06AncYO8jz46UEamcspGoU8lHcEbpn6J77QK0vdWvChsclg/tM5XIJC5tnjmPp7Eq6Obg==", +      "version": "4.1.3", +      "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", +      "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",        "dev": true      },      "argparse": { @@ -863,6 +849,12 @@        "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",        "dev": true      }, +    "array-from": { +      "version": "2.1.1", +      "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", +      "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", +      "dev": true +    },      "array-includes": {        "version": "3.1.1",        "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", @@ -884,9 +876,9 @@            }          },          "es-abstract": { -          "version": "1.17.0", -          "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.0.tgz", -          "integrity": "sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug==", +          "version": "1.17.4", +          "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", +          "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==",            "dev": true,            "requires": {              "es-to-primitive": "^1.2.1", @@ -2071,9 +2063,9 @@        }      },      "css-loader": { -      "version": "3.4.0", -      "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.4.0.tgz", -      "integrity": "sha512-JornYo4RAXl1Mzt0lOSVPmArzAMV3rGY2VuwtaDc732WTWjdwTaeS19nCGWMcSCf305Q396lhhDAJEWWM0SgPQ==", +      "version": "3.4.2", +      "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.4.2.tgz", +      "integrity": "sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA==",        "dev": true,        "requires": {          "camelcase": "^5.3.1", @@ -2129,9 +2121,9 @@            "dev": true          },          "schema-utils": { -          "version": "2.6.1", -          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.1.tgz", -          "integrity": "sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg==", +          "version": "2.6.4", +          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.4.tgz", +          "integrity": "sha512-VNjcaUxVnEeun6B2fiiUDjXXBtD4ZSH7pdbfIu1pOFwgptDPLMo/z9jr4sUfsjFVPqDCEin/F7IYlq7/E6yDbQ==",            "dev": true,            "requires": {              "ajv": "^6.10.2", @@ -3001,9 +2993,9 @@        }      },      "eslint-config-prettier": { -      "version": "6.7.0", -      "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.7.0.tgz", -      "integrity": "sha512-FamQVKM3jjUVwhG4hEMnbtsq7xOIDm+SY5iBPfR8gKsJoAB2IQnNF+bk1+8Fy44Nq7PPJaLvkRxILYdJWoguKQ==", +      "version": "6.10.0", +      "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.10.0.tgz", +      "integrity": "sha512-AtndijGte1rPILInUdHjvKEGbIV06NuvPrqlIEaEaWtbtvJh464mDeyGMdZEQMsGvC0ZVkiex1fSNcC4HAbRGg==",        "dev": true,        "requires": {          "get-stdin": "^6.0.0" @@ -3017,12 +3009,6 @@          }        }      }, -    "eslint-plugin-eslint-plugin": { -      "version": "2.1.0", -      "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-plugin/-/eslint-plugin-eslint-plugin-2.1.0.tgz", -      "integrity": "sha512-kT3A/ZJftt28gbl/Cv04qezb/NQ1dwYIbi8lyf806XMxkus7DvOVCLIfTXMrorp322Pnoez7+zabXH29tADIDg==", -      "dev": true -    },      "eslint-plugin-prettier": {        "version": "3.1.2",        "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz", @@ -3033,21 +3019,21 @@        }      },      "eslint-plugin-react": { -      "version": "7.17.0", -      "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.17.0.tgz", -      "integrity": "sha512-ODB7yg6lxhBVMeiH1c7E95FLD4E/TwmFjltiU+ethv7KPdCwgiFuOZg9zNRHyufStTDLl/dEFqI2Q1VPmCd78A==", +      "version": "7.18.3", +      "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.18.3.tgz", +      "integrity": "sha512-Bt56LNHAQCoou88s8ViKRjMB2+36XRejCQ1VoLj716KI1MoE99HpTVvIThJ0rvFmG4E4Gsq+UgToEjn+j044Bg==",        "dev": true,        "requires": { -        "array-includes": "^3.0.3", +        "array-includes": "^3.1.1",          "doctrine": "^2.1.0", -        "eslint-plugin-eslint-plugin": "^2.1.0",          "has": "^1.0.3",          "jsx-ast-utils": "^2.2.3", -        "object.entries": "^1.1.0", -        "object.fromentries": "^2.0.1", -        "object.values": "^1.1.0", +        "object.entries": "^1.1.1", +        "object.fromentries": "^2.0.2", +        "object.values": "^1.1.1",          "prop-types": "^15.7.2", -        "resolve": "^1.13.1" +        "resolve": "^1.14.2", +        "string.prototype.matchall": "^4.0.2"        },        "dependencies": {          "doctrine": { @@ -3069,9 +3055,9 @@            }          },          "resolve": { -          "version": "1.14.1", -          "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.14.1.tgz", -          "integrity": "sha512-fn5Wobh4cxbLzuHaE+nphztHy43/b++4M6SsGFC2gB8uYwf0C8LcarfCz1un7UTW8OFQg9iNjZ4xpcFVGebDPg==", +          "version": "1.15.1", +          "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", +          "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==",            "dev": true,            "requires": {              "path-parse": "^1.0.6" @@ -3184,9 +3170,9 @@        "dev": true      },      "events": { -      "version": "3.0.0", -      "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", -      "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==", +      "version": "3.1.0", +      "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", +      "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==",        "dev": true      },      "evp_bytestokey": { @@ -4662,9 +4648,9 @@        "dev": true      },      "globule": { -      "version": "1.2.1", -      "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", -      "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", +      "version": "1.3.0", +      "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.0.tgz", +      "integrity": "sha512-YlD4kdMqRCQHrhVdonet4TdRtv1/sZKepvoxNT4Nrhrp5HI8XFfc8kFlGlBn2myBo80aGp8Eft259mbcUJhgSg==",        "dev": true,        "requires": {          "glob": "~7.1.1", @@ -5188,6 +5174,94 @@          }        }      }, +    "internal-slot": { +      "version": "1.0.2", +      "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.2.tgz", +      "integrity": "sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g==", +      "dev": true, +      "requires": { +        "es-abstract": "^1.17.0-next.1", +        "has": "^1.0.3", +        "side-channel": "^1.0.2" +      }, +      "dependencies": { +        "es-abstract": { +          "version": "1.17.4", +          "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", +          "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", +          "dev": true, +          "requires": { +            "es-to-primitive": "^1.2.1", +            "function-bind": "^1.1.1", +            "has": "^1.0.3", +            "has-symbols": "^1.0.1", +            "is-callable": "^1.1.5", +            "is-regex": "^1.0.5", +            "object-inspect": "^1.7.0", +            "object-keys": "^1.1.1", +            "object.assign": "^4.1.0", +            "string.prototype.trimleft": "^2.1.1", +            "string.prototype.trimright": "^2.1.1" +          } +        }, +        "es-to-primitive": { +          "version": "1.2.1", +          "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", +          "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", +          "dev": true, +          "requires": { +            "is-callable": "^1.1.4", +            "is-date-object": "^1.0.1", +            "is-symbol": "^1.0.2" +          } +        }, +        "has": { +          "version": "1.0.3", +          "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", +          "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", +          "dev": true, +          "requires": { +            "function-bind": "^1.1.1" +          } +        }, +        "has-symbols": { +          "version": "1.0.1", +          "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", +          "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", +          "dev": true +        }, +        "is-callable": { +          "version": "1.1.5", +          "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", +          "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", +          "dev": true +        }, +        "is-regex": { +          "version": "1.0.5", +          "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", +          "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", +          "dev": true, +          "requires": { +            "has": "^1.0.3" +          } +        }, +        "is-symbol": { +          "version": "1.0.3", +          "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", +          "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", +          "dev": true, +          "requires": { +            "has-symbols": "^1.0.1" +          } +        }, +        "object-keys": { +          "version": "1.1.1", +          "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", +          "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", +          "dev": true +        } +      } +    },      "interpret": {        "version": "1.2.0",        "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", @@ -5320,13 +5394,10 @@        "dev": true      },      "is-finite": { -      "version": "1.0.2", -      "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", -      "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", -      "dev": true, -      "requires": { -        "number-is-nan": "^1.0.0" -      } +      "version": "1.1.0", +      "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", +      "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", +      "dev": true      },      "is-fullwidth-code-point": {        "version": "2.0.0", @@ -5846,18 +5917,18 @@        }      },      "karma-firefox-launcher": { -      "version": "1.2.0", -      "resolved": "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-1.2.0.tgz", -      "integrity": "sha512-j9Zp8M8+VLq1nI/5xZGfzeaEPtGQ/vk3G+Y8vpmFWLvKLNZ2TDjD6cu2dUu7lDbu1HXNgatsAX4jgCZTkR9qhQ==", +      "version": "1.3.0", +      "resolved": "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-1.3.0.tgz", +      "integrity": "sha512-Fi7xPhwrRgr+94BnHX0F5dCl1miIW4RHnzjIGxF8GaIEp7rNqX7LSi7ok63VXs3PS/5MQaQMhGxw+bvD+pibBQ==",        "dev": true,        "requires": {          "is-wsl": "^2.1.0"        },        "dependencies": {          "is-wsl": { -          "version": "2.1.0", -          "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.1.0.tgz", -          "integrity": "sha512-pFTjpv/x5HRj8kbZ/Msxi9VrvtOMRBqaDi3OIcbwPI3OuH+r3lLxVWukLITBaOGJIbA/w2+M1eVmVa4XNQlAmQ==", +          "version": "2.1.1", +          "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.1.1.tgz", +          "integrity": "sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog==",            "dev": true          }        } @@ -6257,6 +6328,15 @@          }        }      }, +    "lolex": { +      "version": "5.1.2", +      "resolved": "https://registry.npmjs.org/lolex/-/lolex-5.1.2.tgz", +      "integrity": "sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==", +      "dev": true, +      "requires": { +        "@sinonjs/commons": "^1.7.0" +      } +    },      "loose-envify": {        "version": "1.3.1",        "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", @@ -6919,9 +6999,9 @@        "dev": true      },      "neo-async": { -      "version": "2.5.2", -      "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.2.tgz", -      "integrity": "sha512-vdqTKI9GBIYcAEbFAcpKPErKINfPF5zIuz3/niBfq8WUZjpT2tytLlFVrBgWdOtqI4uaA/Rb6No0hux39XXDuw==", +      "version": "2.6.1", +      "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", +      "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==",        "dev": true      },      "nice-try": { @@ -6931,40 +7011,17 @@        "dev": true      },      "nise": { -      "version": "4.0.1", -      "resolved": "https://registry.npmjs.org/nise/-/nise-4.0.1.tgz", -      "integrity": "sha512-10PKL272rqg80o2RsWcTT6X9cDYqJ4kXqPTf8yCXPc9hbphZSDmbiG5FqUNeR5nouKCQMM24ld45kgYnBdx2rw==", +      "version": "3.0.1", +      "resolved": "https://registry.npmjs.org/nise/-/nise-3.0.1.tgz", +      "integrity": "sha512-fYcH9y0drBGSoi88kvhpbZEsenX58Yr+wOJ4/Mi1K4cy+iGP/a73gNoyNhu5E9QxPdgTlVChfIaAlnyOy/gHUA==",        "dev": true,        "requires": {          "@sinonjs/commons": "^1.7.0", -        "@sinonjs/fake-timers": "^6.0.0",          "@sinonjs/formatio": "^4.0.1",          "@sinonjs/text-encoding": "^0.7.1",          "just-extend": "^4.0.2", +        "lolex": "^5.0.1",          "path-to-regexp": "^1.7.0" -      }, -      "dependencies": { -        "@sinonjs/formatio": { -          "version": "4.0.1", -          "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-4.0.1.tgz", -          "integrity": "sha512-asIdlLFrla/WZybhm0C8eEzaDNNrzymiTqHMeJl6zPW2881l3uuVRpm0QlRQEjqYWv6CcKMGYME3LbrLJsORBw==", -          "dev": true, -          "requires": { -            "@sinonjs/commons": "^1", -            "@sinonjs/samsam": "^4.2.0" -          } -        }, -        "@sinonjs/samsam": { -          "version": "4.2.2", -          "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-4.2.2.tgz", -          "integrity": "sha512-z9o4LZUzSD9Hl22zV38aXNykgFeVj8acqfFabCY6FY83n/6s/XwNJyYYldz6/9lBJanpno9h+oL6HTISkviweA==", -          "dev": true, -          "requires": { -            "@sinonjs/commons": "^1.6.0", -            "lodash.get": "^4.4.2", -            "type-detect": "^4.0.8" -          } -        }        }      },      "no-case": { @@ -7054,9 +7111,9 @@        }      },      "node-sass": { -      "version": "4.13.0", -      "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.13.0.tgz", -      "integrity": "sha512-W1XBrvoJ1dy7VsvTAS5q1V45lREbTlZQqFbiHb3R3OTTCma0XBtuG6xZ6Z4506nR4lmHPTqVRwxT6KgtWC97CA==", +      "version": "4.13.1", +      "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.13.1.tgz", +      "integrity": "sha512-TTWFx+ZhyDx1Biiez2nB0L3YrCZ/8oHagaDalbuBSlqXgUPsdkUSzJsVxeDO9LtPB49+Fh3WQl3slABo6AotNw==",        "dev": true,        "requires": {          "async-foreach": "^0.1.3", @@ -7272,9 +7329,9 @@            }          },          "es-abstract": { -          "version": "1.17.0", -          "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.0.tgz", -          "integrity": "sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug==", +          "version": "1.17.4", +          "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", +          "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==",            "dev": true,            "requires": {              "es-to-primitive": "^1.2.1", @@ -7370,9 +7427,9 @@            }          },          "es-abstract": { -          "version": "1.17.0", -          "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.0.tgz", -          "integrity": "sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug==", +          "version": "1.17.4", +          "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", +          "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==",            "dev": true,            "requires": {              "es-to-primitive": "^1.2.1", @@ -7487,9 +7544,9 @@            }          },          "es-abstract": { -          "version": "1.17.0", -          "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.0.tgz", -          "integrity": "sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug==", +          "version": "1.17.4", +          "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", +          "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==",            "dev": true,            "requires": {              "es-to-primitive": "^1.2.1", @@ -7933,9 +7990,9 @@        "dev": true      },      "postcss": { -      "version": "7.0.25", -      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.25.tgz", -      "integrity": "sha512-NXXVvWq9icrm/TgQC0O6YVFi4StfJz46M1iNd/h6B26Nvh/HKI+q4YZtFN/EjcInZliEscO/WL10BXnc1E5nwg==", +      "version": "7.0.26", +      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.26.tgz", +      "integrity": "sha512-IY4oRjpXWYshuTDFxMVkJDtWIk2LhsTlu8bZnbEJA4+bYT16Lvpo8Qv6EvDumhYRgzjZl489pmsY3qVgJQ08nA==",        "dev": true,        "requires": {          "chalk": "^2.4.2", @@ -8592,9 +8649,9 @@        }      },      "redux": { -      "version": "4.0.4", -      "resolved": "https://registry.npmjs.org/redux/-/redux-4.0.4.tgz", -      "integrity": "sha512-vKv4WdiJxOWKxK0yRoaK3Y4pxxB0ilzVx6dszU2W8wLxlb2yikRph4iV/ymtdJ6ZxpBLFbyrxklnT5yBbQSl3Q==", +      "version": "4.0.5", +      "resolved": "https://registry.npmjs.org/redux/-/redux-4.0.5.tgz", +      "integrity": "sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w==",        "dev": true,        "requires": {          "loose-envify": "^1.4.0", @@ -8644,6 +8701,102 @@          "safe-regex": "^1.1.0"        }      }, +    "regexp.prototype.flags": { +      "version": "1.3.0", +      "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", +      "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", +      "dev": true, +      "requires": { +        "define-properties": "^1.1.3", +        "es-abstract": "^1.17.0-next.1" +      }, +      "dependencies": { +        "define-properties": { +          "version": "1.1.3", +          "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", +          "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", +          "dev": true, +          "requires": { +            "object-keys": "^1.0.12" +          } +        }, +        "es-abstract": { +          "version": "1.17.4", +          "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", +          "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", +          "dev": true, +          "requires": { +            "es-to-primitive": "^1.2.1", +            "function-bind": "^1.1.1", +            "has": "^1.0.3", +            "has-symbols": "^1.0.1", +            "is-callable": "^1.1.5", +            "is-regex": "^1.0.5", +            "object-inspect": "^1.7.0", +            "object-keys": "^1.1.1", +            "object.assign": "^4.1.0", +            "string.prototype.trimleft": "^2.1.1", +            "string.prototype.trimright": "^2.1.1" +          } +        }, +        "es-to-primitive": { +          "version": "1.2.1", +          "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", +          "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", +          "dev": true, +          "requires": { +            "is-callable": "^1.1.4", +            "is-date-object": "^1.0.1", +            "is-symbol": "^1.0.2" +          } +        }, +        "has": { +          "version": "1.0.3", +          "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", +          "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", +          "dev": true, +          "requires": { +            "function-bind": "^1.1.1" +          } +        }, +        "has-symbols": { +          "version": "1.0.1", +          "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", +          "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", +          "dev": true +        }, +        "is-callable": { +          "version": "1.1.5", +          "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", +          "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", +          "dev": true +        }, +        "is-regex": { +          "version": "1.0.5", +          "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", +          "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", +          "dev": true, +          "requires": { +            "has": "^1.0.3" +          } +        }, +        "is-symbol": { +          "version": "1.0.3", +          "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", +          "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", +          "dev": true, +          "requires": { +            "has-symbols": "^1.0.1" +          } +        }, +        "object-keys": { +          "version": "1.1.1", +          "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", +          "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", +          "dev": true +        } +      } +    },      "regexpp": {        "version": "2.0.1",        "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", @@ -8822,9 +8975,9 @@        "dev": true      },      "resolve": { -      "version": "1.12.0", -      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", -      "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", +      "version": "1.15.1", +      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", +      "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==",        "dev": true,        "requires": {          "path-parse": "^1.0.6" @@ -8976,15 +9129,15 @@        }      },      "sass-loader": { -      "version": "8.0.0", -      "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.0.tgz", -      "integrity": "sha512-+qeMu563PN7rPdit2+n5uuYVR0SSVwm0JsOUsaJXzgYcClWSlmX0iHDnmeOobPkf5kUglVot3QS6SyLyaQoJ4w==", +      "version": "8.0.2", +      "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", +      "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==",        "dev": true,        "requires": {          "clone-deep": "^4.0.1",          "loader-utils": "^1.2.3",          "neo-async": "^2.6.1", -        "schema-utils": "^2.1.0", +        "schema-utils": "^2.6.1",          "semver": "^6.3.0"        },        "dependencies": { @@ -9033,9 +9186,9 @@            "dev": true          },          "schema-utils": { -          "version": "2.6.1", -          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.1.tgz", -          "integrity": "sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg==", +          "version": "2.6.4", +          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.4.tgz", +          "integrity": "sha512-VNjcaUxVnEeun6B2fiiUDjXXBtD4ZSH7pdbfIu1pOFwgptDPLMo/z9jr4sUfsjFVPqDCEin/F7IYlq7/E6yDbQ==",            "dev": true,            "requires": {              "ajv": "^6.10.2", @@ -9323,6 +9476,93 @@        "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",        "dev": true      }, +    "side-channel": { +      "version": "1.0.2", +      "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.2.tgz", +      "integrity": "sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA==", +      "dev": true, +      "requires": { +        "es-abstract": "^1.17.0-next.1", +        "object-inspect": "^1.7.0" +      }, +      "dependencies": { +        "es-abstract": { +          "version": "1.17.4", +          "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", +          "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", +          "dev": true, +          "requires": { +            "es-to-primitive": "^1.2.1", +            "function-bind": "^1.1.1", +            "has": "^1.0.3", +            "has-symbols": "^1.0.1", +            "is-callable": "^1.1.5", +            "is-regex": "^1.0.5", +            "object-inspect": "^1.7.0", +            "object-keys": "^1.1.1", +            "object.assign": "^4.1.0", +            "string.prototype.trimleft": "^2.1.1", +            "string.prototype.trimright": "^2.1.1" +          } +        }, +        "es-to-primitive": { +          "version": "1.2.1", +          "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", +          "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", +          "dev": true, +          "requires": { +            "is-callable": "^1.1.4", +            "is-date-object": "^1.0.1", +            "is-symbol": "^1.0.2" +          } +        }, +        "has": { +          "version": "1.0.3", +          "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", +          "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", +          "dev": true, +          "requires": { +            "function-bind": "^1.1.1" +          } +        }, +        "has-symbols": { +          "version": "1.0.1", +          "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", +          "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", +          "dev": true +        }, +        "is-callable": { +          "version": "1.1.5", +          "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", +          "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", +          "dev": true +        }, +        "is-regex": { +          "version": "1.0.5", +          "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", +          "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", +          "dev": true, +          "requires": { +            "has": "^1.0.3" +          } +        }, +        "is-symbol": { +          "version": "1.0.3", +          "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", +          "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", +          "dev": true, +          "requires": { +            "has-symbols": "^1.0.1" +          } +        }, +        "object-keys": { +          "version": "1.1.1", +          "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", +          "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", +          "dev": true +        } +      } +    },      "sigmund": {        "version": "1.0.1",        "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", @@ -9336,17 +9576,17 @@        "dev": true      },      "sinon": { -      "version": "9.0.0", -      "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.0.0.tgz", -      "integrity": "sha512-c4bREcvuK5VuEGyMW/Oim9I3Rq49Vzb0aMdxouFaA44QCFpilc5LJOugrX+mkrvikbqCimxuK+4cnHVNnLR41g==", +      "version": "8.1.1", +      "resolved": "https://registry.npmjs.org/sinon/-/sinon-8.1.1.tgz", +      "integrity": "sha512-E+tWr3acRdoe1nXbHMu86SSqA1WGM7Yw3jZRLvlCMnXwTHP8lgFFVn5BnKnF26uc5SfZ3D7pA9sN7S3Y2jG4Ew==",        "dev": true,        "requires": {          "@sinonjs/commons": "^1.7.0", -        "@sinonjs/fake-timers": "^6.0.0", -        "@sinonjs/formatio": "^5.0.0", -        "@sinonjs/samsam": "^5.0.1", +        "@sinonjs/formatio": "^4.0.1", +        "@sinonjs/samsam": "^4.2.2",          "diff": "^4.0.2", -        "nise": "^4.0.1", +        "lolex": "^5.1.2", +        "nise": "^3.0.1",          "supports-color": "^7.1.0"        },        "dependencies": { @@ -9380,7 +9620,85 @@        "dev": true,        "requires": {          "lodash": "^4.16.3", +        "sinon": "^7.2.3",          "urijs": "^1.18.2" +      }, +      "dependencies": { +        "@sinonjs/formatio": { +          "version": "3.2.2", +          "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.2.2.tgz", +          "integrity": "sha512-B8SEsgd8gArBLMD6zpRw3juQ2FVSsmdd7qlevyDqzS9WTCtvF55/gAL+h6gue8ZvPYcdiPdvueM/qm//9XzyTQ==", +          "dev": true, +          "requires": { +            "@sinonjs/commons": "^1", +            "@sinonjs/samsam": "^3.1.0" +          } +        }, +        "@sinonjs/samsam": { +          "version": "3.3.3", +          "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.3.tgz", +          "integrity": "sha512-bKCMKZvWIjYD0BLGnNrxVuw4dkWCYsLqFOUWw8VgKF/+5Y+mE7LfHWPIYoDXowH+3a9LsWDMo0uAP8YDosPvHQ==", +          "dev": true, +          "requires": { +            "@sinonjs/commons": "^1.3.0", +            "array-from": "^2.1.1", +            "lodash": "^4.17.15" +          } +        }, +        "lolex": { +          "version": "4.2.0", +          "resolved": "https://registry.npmjs.org/lolex/-/lolex-4.2.0.tgz", +          "integrity": "sha512-gKO5uExCXvSm6zbF562EvM+rd1kQDnB9AZBbiQVzf1ZmdDpxUSvpnAaVOP83N/31mRK8Ml8/VE8DMvsAZQ+7wg==", +          "dev": true +        }, +        "nise": { +          "version": "1.5.3", +          "resolved": "https://registry.npmjs.org/nise/-/nise-1.5.3.tgz", +          "integrity": "sha512-Ymbac/94xeIrMf59REBPOv0thr+CJVFMhrlAkW/gjCIE58BGQdCj0x7KRCb3yz+Ga2Rz3E9XXSvUyyxqqhjQAQ==", +          "dev": true, +          "requires": { +            "@sinonjs/formatio": "^3.2.1", +            "@sinonjs/text-encoding": "^0.7.1", +            "just-extend": "^4.0.2", +            "lolex": "^5.0.1", +            "path-to-regexp": "^1.7.0" +          }, +          "dependencies": { +            "lolex": { +              "version": "5.1.2", +              "resolved": "https://registry.npmjs.org/lolex/-/lolex-5.1.2.tgz", +              "integrity": "sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==", +              "dev": true, +              "requires": { +                "@sinonjs/commons": "^1.7.0" +              } +            } +          } +        }, +        "sinon": { +          "version": "7.5.0", +          "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.5.0.tgz", +          "integrity": "sha512-AoD0oJWerp0/rY9czP/D6hDTTUYGpObhZjMpd7Cl/A6+j0xBE+ayL/ldfggkBXUs0IkvIiM1ljM8+WkOc5k78Q==", +          "dev": true, +          "requires": { +            "@sinonjs/commons": "^1.4.0", +            "@sinonjs/formatio": "^3.2.1", +            "@sinonjs/samsam": "^3.3.3", +            "diff": "^3.5.0", +            "lolex": "^4.2.0", +            "nise": "^1.5.2", +            "supports-color": "^5.5.0" +          } +        }, +        "supports-color": { +          "version": "5.5.0", +          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", +          "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", +          "dev": true, +          "requires": { +            "has-flag": "^3.0.0" +          } +        }        }      },      "slice-ansi": { @@ -9864,6 +10182,106 @@          }        }      }, +    "string.prototype.matchall": { +      "version": "4.0.2", +      "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz", +      "integrity": "sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg==", +      "dev": true, +      "requires": { +        "define-properties": "^1.1.3", +        "es-abstract": "^1.17.0", +        "has-symbols": "^1.0.1", +        "internal-slot": "^1.0.2", +        "regexp.prototype.flags": "^1.3.0", +        "side-channel": "^1.0.2" +      }, +      "dependencies": { +        "define-properties": { +          "version": "1.1.3", +          "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", +          "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", +          "dev": true, +          "requires": { +            "object-keys": "^1.0.12" +          } +        }, +        "es-abstract": { +          "version": "1.17.4", +          "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", +          "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", +          "dev": true, +          "requires": { +            "es-to-primitive": "^1.2.1", +            "function-bind": "^1.1.1", +            "has": "^1.0.3", +            "has-symbols": "^1.0.1", +            "is-callable": "^1.1.5", +            "is-regex": "^1.0.5", +            "object-inspect": "^1.7.0", +            "object-keys": "^1.1.1", +            "object.assign": "^4.1.0", +            "string.prototype.trimleft": "^2.1.1", +            "string.prototype.trimright": "^2.1.1" +          } +        }, +        "es-to-primitive": { +          "version": "1.2.1", +          "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", +          "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", +          "dev": true, +          "requires": { +            "is-callable": "^1.1.4", +            "is-date-object": "^1.0.1", +            "is-symbol": "^1.0.2" +          } +        }, +        "has": { +          "version": "1.0.3", +          "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", +          "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", +          "dev": true, +          "requires": { +            "function-bind": "^1.1.1" +          } +        }, +        "has-symbols": { +          "version": "1.0.1", +          "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", +          "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", +          "dev": true +        }, +        "is-callable": { +          "version": "1.1.5", +          "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", +          "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", +          "dev": true +        }, +        "is-regex": { +          "version": "1.0.5", +          "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", +          "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", +          "dev": true, +          "requires": { +            "has": "^1.0.3" +          } +        }, +        "is-symbol": { +          "version": "1.0.3", +          "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", +          "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", +          "dev": true, +          "requires": { +            "has-symbols": "^1.0.1" +          } +        }, +        "object-keys": { +          "version": "1.1.1", +          "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", +          "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", +          "dev": true +        } +      } +    },      "string.prototype.trimleft": {        "version": "2.1.1",        "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", @@ -9967,13 +10385,13 @@        "dev": true      },      "style-loader": { -      "version": "1.1.1", -      "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.1.1.tgz", -      "integrity": "sha512-oIVF12trRq0od4Yojg7q0K3Lq/O6Ix/AYgVosykrVg+kWxxxUyk8KhKCCmekyGSUiVK1xxlAQymLWWdh6S9lOg==", +      "version": "1.1.3", +      "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.1.3.tgz", +      "integrity": "sha512-rlkH7X/22yuwFYK357fMN/BxYOorfnfq0eD7+vqlemSK4wEcejFF1dg4zxP0euBW8NrYx2WZzZ8PPFevr7D+Kw==",        "dev": true,        "requires": {          "loader-utils": "^1.2.3", -        "schema-utils": "^2.0.1" +        "schema-utils": "^2.6.4"        },        "dependencies": {          "ajv-keywords": { @@ -10015,9 +10433,9 @@            "dev": true          },          "schema-utils": { -          "version": "2.6.1", -          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.1.tgz", -          "integrity": "sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg==", +          "version": "2.6.4", +          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.4.tgz", +          "integrity": "sha512-VNjcaUxVnEeun6B2fiiUDjXXBtD4ZSH7pdbfIu1pOFwgptDPLMo/z9jr4sUfsjFVPqDCEin/F7IYlq7/E6yDbQ==",            "dev": true,            "requires": {              "ajv": "^6.10.2", @@ -10117,9 +10535,9 @@        }      },      "terser": { -      "version": "4.4.3", -      "resolved": "https://registry.npmjs.org/terser/-/terser-4.4.3.tgz", -      "integrity": "sha512-0ikKraVtRDKGzHrzkCv5rUNDzqlhmhowOBqC0XqUHFpW+vJ45+20/IFBcebwKfiS2Z9fJin6Eo+F1zLZsxi8RA==", +      "version": "4.6.3", +      "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.3.tgz", +      "integrity": "sha512-Lw+ieAXmY69d09IIc/yqeBqXpEQIpDGZqT34ui1QWXIUpR2RjbqEkT8X7Lgex19hslSqcWM5iMN2kM11eMsESQ==",        "dev": true,        "requires": {          "commander": "^2.20.0", @@ -10370,22 +10788,22 @@        }      },      "ts-node": { -      "version": "8.5.4", -      "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.5.4.tgz", -      "integrity": "sha512-izbVCRV68EasEPQ8MSIGBNK9dc/4sYJJKYA+IarMQct1RtEot6Xp0bXuClsbUSnKpg50ho+aOAx8en5c+y4OFw==", +      "version": "8.6.2", +      "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.6.2.tgz", +      "integrity": "sha512-4mZEbofxGqLL2RImpe3zMJukvEvcO1XP8bj8ozBPySdCUXEcU5cIRwR0aM3R+VoZq7iXc8N86NC0FspGRqP4gg==",        "dev": true,        "requires": {          "arg": "^4.1.0",          "diff": "^4.0.1",          "make-error": "^1.1.1",          "source-map-support": "^0.5.6", -        "yn": "^3.0.0" +        "yn": "3.1.1"        },        "dependencies": {          "diff": { -          "version": "4.0.1", -          "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz", -          "integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==", +          "version": "4.0.2", +          "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", +          "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",            "dev": true          }        } @@ -10490,9 +10908,9 @@        "dev": true      },      "typescript": { -      "version": "3.7.4", -      "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.4.tgz", -      "integrity": "sha512-A25xv5XCtarLwXpcDNZzCGvW2D1S3/bACratYBx2sax8PefsFhlYmkQicKHvpYflFS8if4zne5zT5kpJ7pzuvw==", +      "version": "3.7.5", +      "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.5.tgz", +      "integrity": "sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==",        "dev": true      },      "uglify-js": { @@ -10871,9 +11289,9 @@        }      },      "webpack": { -      "version": "4.41.4", -      "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.4.tgz", -      "integrity": "sha512-Lc+2uB6NjpCWsHI3trkoISOI64h9QYIXenbEWj3bn3oyjfB1lEBXjWAfAyY2sM0rZn41oD5V91OLwKRwS6Wp8Q==", +      "version": "4.41.5", +      "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.5.tgz", +      "integrity": "sha512-wp0Co4vpyumnp3KlkmpM5LWuzvZYayDwM2n17EHFr4qxBBbRokC7DJawPJC7TfSFZ9HZ6GsdH40EBj4UV0nmpw==",        "dev": true,        "requires": {          "@webassemblyjs/ast": "1.8.5", @@ -10945,12 +11363,6 @@            "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",            "dev": true          }, -        "neo-async": { -          "version": "2.6.1", -          "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", -          "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", -          "dev": true -        },          "tapable": {            "version": "1.1.3",            "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", diff --git a/package.json b/package.json index fb900d5..788a497 100644 --- a/package.json +++ b/package.json @@ -23,36 +23,36 @@    },    "homepage": "https://github.com/ueokande/vim-vixen",    "devDependencies": { -    "@types/assert": "^1.4.3", -    "@types/chai": "^4.2.7", +    "@types/assert": "^1.4.6", +    "@types/chai": "^4.2.8",      "@types/express": "^4.17.2", -    "@types/mocha": "^7.0.0", +    "@types/mocha": "^7.0.1",      "@types/node": "^12.12.21",      "@types/prop-types": "^15.7.3", -    "@types/react": "^16.9.17", -    "@types/react-dom": "^16.9.4", -    "@types/react-redux": "^7.1.5", -    "@types/react-test-renderer": "^16.9.1", +    "@types/react": "^16.9.19", +    "@types/react-dom": "^16.9.5", +    "@types/react-redux": "^7.1.7", +    "@types/react-test-renderer": "^16.9.2",      "@types/redux-promise": "^0.5.28",      "@types/selenium-webdriver": "^4.0.6",      "@types/sinon": "^7.5.1", -    "@typescript-eslint/eslint-plugin": "^2.12.0", -    "@typescript-eslint/parser": "^2.12.0", -    "ajv": "^6.10.2", +    "@typescript-eslint/eslint-plugin": "^2.19.0", +    "@typescript-eslint/parser": "^2.19.0", +    "ajv": "^6.11.0",      "ajv-cli": "^3.0.0",      "chai": "^4.2.0", -    "css-loader": "^3.4.0", +    "css-loader": "^3.4.2",      "eslint": "^6.8.0", -    "eslint-config-prettier": "^6.7.0", +    "eslint-config-prettier": "^6.10.0",      "eslint-plugin-prettier": "^3.1.2", -    "eslint-plugin-react": "^7.17.0", +    "eslint-plugin-react": "^7.18.3",      "eslint-plugin-standard": "^4.0.1",      "express": "^4.17.1",      "html-webpack-plugin": "^3.2.0",      "jsonwebtoken": "^8.5.1",      "jszip": "^3.2.2",      "karma": "^4.4.1", -    "karma-firefox-launcher": "^1.2.0", +    "karma-firefox-launcher": "^1.3.0",      "karma-html2js-preprocessor": "^1.1.0",      "karma-mocha": "^1.3.0",      "karma-mocha-reporter": "^2.2.5", @@ -61,28 +61,28 @@      "karma-webpack": "^4.0.2",      "lanthan": "0.0.2",      "mocha": "^7.0.1", -    "node-sass": "^4.13.0", +    "node-sass": "^4.13.1",      "prettier": "^1.19.1",      "prettier-eslint": "^9.0.1",      "react": "^16.12.0",      "react-dom": "^16.12.0",      "react-redux": "^7.1.3",      "react-test-renderer": "^16.12.0", -    "redux": "^4.0.4", +    "redux": "^4.0.5",      "redux-promise": "^0.6.0",      "reflect-metadata": "^0.1.13",      "request-promise-native": "^1.0.8", -    "sass-loader": "^8.0.0", +    "sass-loader": "^8.0.2",      "sinon": "^9.0.0",      "sinon-chrome": "^3.0.1", -    "style-loader": "^1.1.1", +    "style-loader": "^1.1.3",      "ts-loader": "^6.2.1", -    "ts-node": "^8.5.4", +    "ts-node": "^8.6.2",      "tsyringe": "^4.0.1", -    "typescript": "^3.7.4", +    "typescript": "^3.7.5",      "web-ext-types": "^3.2.1",      "webextensions-api-fake": "^0.9.1", -    "webpack": "^4.41.4", +    "webpack": "^4.41.5",      "webpack-cli": "^3.3.10"    }  }  | 
