diff --git a/karma.conf.js b/karma.conf.js index a0d44e413..c303b1d07 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -11,7 +11,10 @@ module.exports = config => { // // npm run test -- --grep test/foo/bar.test.js // npm run test -- --grep test/bar/* - config.grep ? config.grep : 'packages/*/test/**/*.test.js', + { + pattern: config.grep ? config.grep : 'packages/*/test/**/*.test.js', + type: 'module', + }, ], // TODO: improve coverage diff --git a/package.json b/package.json index 3a40eaabc..bf0a8bf78 100644 --- a/package.json +++ b/package.json @@ -11,9 +11,9 @@ "@open-wc/demoing-storybook": "^0.2.0", "@open-wc/eslint-config": "^0.4.5", "@open-wc/prettier-config": "^0.1.0", - "@open-wc/testing": "^0.11.5", - "@open-wc/testing-karma": "^1.0.0", - "@open-wc/testing-karma-bs": "^1.0.0", + "@open-wc/testing": "^0.12.5", + "@open-wc/testing-karma": "^2.0.3", + "@open-wc/testing-karma-bs": "^1.1.3", "@open-wc/testing-wallaby": "^0.1.12", "@webcomponents/webcomponentsjs": "^2.2.5", "babel-eslint": "^8.2.6", @@ -41,7 +41,7 @@ "test:legacy:watch": "karma start --legacy --auto-watch=true --single-run=false", "test:update-snapshots": "karma start --update-snapshots", "test:prune-snapshots": "karma start --prune-snapshots", - "test:bs": "karma start karma.bs.config.js --legacy --coverage", + "test:bs": "karma start karma.bs.config.js --coverage", "lint": "run-p lint:*", "lint:eclint": "eclint check $(find . \\( -name '*.html' -o -name '*.js' -o -name '*.css' \\) -type f -not -path '*/\\.*' -not -path '*node_modules/*' -not -path '*assets/*' -not -path '*coverage/*')", "lint:eslint": "eslint --ext .js,.html .", diff --git a/packages/calendar/test/utils/getFirstDayNextMonth.test.js b/packages/calendar/test/utils/getFirstDayNextMonth.test.js index a2fe90d45..579cd946a 100644 --- a/packages/calendar/test/utils/getFirstDayNextMonth.test.js +++ b/packages/calendar/test/utils/getFirstDayNextMonth.test.js @@ -1,11 +1,17 @@ import { expect } from '@open-wc/testing'; -import { formatDate } from '../../../localize/src/date/formatDate.js'; +import { isSameDate } from '../../src/utils/isSameDate.js'; import { getFirstDayNextMonth } from '../../src/utils/getFirstDayNextMonth.js'; describe('getFirstDayNextMonth', () => { it('returns the first day of the next month', () => { - expect(formatDate(getFirstDayNextMonth(new Date('2001/01/01')))).to.be.equal('01/02/2001'); - expect(formatDate(getFirstDayNextMonth(new Date('2001/10/10')))).to.be.equal('01/11/2001'); - expect(formatDate(getFirstDayNextMonth(new Date('2000/03/10')))).to.be.equal('01/04/2000'); + expect( + isSameDate(getFirstDayNextMonth(new Date('2001/01/01')), new Date('2001/02/01')), + ).to.equal(true); + expect( + isSameDate(getFirstDayNextMonth(new Date('2001/10/10')), new Date('2001/11/01')), + ).to.equal(true); + expect( + isSameDate(getFirstDayNextMonth(new Date('2000/03/10')), new Date('2000/04/01')), + ).to.equal(true); }); }); diff --git a/packages/calendar/test/utils/getLastDayPreviousMonth.test.js b/packages/calendar/test/utils/getLastDayPreviousMonth.test.js index 83125522a..c517c66d7 100644 --- a/packages/calendar/test/utils/getLastDayPreviousMonth.test.js +++ b/packages/calendar/test/utils/getLastDayPreviousMonth.test.js @@ -1,11 +1,17 @@ import { expect } from '@open-wc/testing'; -import { formatDate } from '../../../localize/src/date/formatDate.js'; +import { isSameDate } from '../../src/utils/isSameDate.js'; import { getLastDayPreviousMonth } from '../../src/utils/getLastDayPreviousMonth.js'; describe('getLastDayPreviousMonth', () => { it('returns the last day of the previous month', () => { - expect(formatDate(getLastDayPreviousMonth(new Date('2001/01/01')))).to.be.equal('31/12/2000'); - expect(formatDate(getLastDayPreviousMonth(new Date('2001/10/10')))).to.be.equal('30/09/2001'); - expect(formatDate(getLastDayPreviousMonth(new Date('2000/03/10')))).to.be.equal('29/02/2000'); + expect( + isSameDate(getLastDayPreviousMonth(new Date('2001/01/01')), new Date('2000/12/31')), + ).to.equal(true); + expect( + isSameDate(getLastDayPreviousMonth(new Date('2001/10/10')), new Date('2001/09/30')), + ).to.equal(true); + expect( + isSameDate(getLastDayPreviousMonth(new Date('2000/03/10')), new Date('2000/02/29')), + ).to.equal(true); }); }); diff --git a/packages/input-datepicker/src/LionInputDatepicker.js b/packages/input-datepicker/src/LionInputDatepicker.js index 061311b04..6d9a24c1e 100644 --- a/packages/input-datepicker/src/LionInputDatepicker.js +++ b/packages/input-datepicker/src/LionInputDatepicker.js @@ -306,7 +306,10 @@ export class LionInputDatepicker extends LionInputDate { async __openCalendarOverlay() { this._overlayCtrl.show(); - await this._calendarElement.updateComplete; + await Promise.all([ + this._calendarOverlayElement.updateComplete, + this._calendarElement.updateComplete, + ]); this._onCalendarOverlayOpened(); } diff --git a/packages/input-datepicker/test/lion-input-datepicker.test.js b/packages/input-datepicker/test/lion-input-datepicker.test.js index 3f9171f7d..059256b4b 100644 --- a/packages/input-datepicker/test/lion-input-datepicker.test.js +++ b/packages/input-datepicker/test/lion-input-datepicker.test.js @@ -1,4 +1,4 @@ -import { expect, fixture, aTimeout, defineCE } from '@open-wc/testing'; +import { expect, fixture, defineCE } from '@open-wc/testing'; import sinon from 'sinon'; import { localizeTearDown } from '@lion/localize/test-helpers.js'; import { html, LitElement } from '@lion/core'; @@ -164,7 +164,6 @@ describe('', () => { `); const elObj = new DatepickerInputObject(el); await elObj.openCalendar(); - await aTimeout(); expect(elObj.calendarObj.focusedDayObj.el).not.to.equal(null); }); diff --git a/packages/input-datepicker/test/test-utils.js b/packages/input-datepicker/test/test-utils.js index f098851ae..bb6b5a192 100644 --- a/packages/input-datepicker/test/test-utils.js +++ b/packages/input-datepicker/test/test-utils.js @@ -14,7 +14,14 @@ export class DatepickerInputObject { // Make sure the calendar is opened, not closed/toggled; this.overlayController.hide(); this.invokerEl.click(); - return this.calendarEl ? this.calendarEl.updateComplete : false; + const completePromises = []; + if (this.overlayEl) { + completePromises.push(this.overlayEl.updateComplete); + } + if (this.calendarEl) { + completePromises.push(this.calendarEl.updateComplete); + } + return Promise.all(completePromises); } async selectMonthDay(day) { diff --git a/yarn.lock b/yarn.lock index 62614e732..06fc98f5c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -36,6 +36,26 @@ semver "^5.4.1" source-map "^0.5.0" +"@babel/core@^7.4.4": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.5.tgz#081f97e8ffca65a9b4b0fdc7e274e703f000c06a" + integrity sha512-OvjIh6aqXtlsA8ujtGKfC7LYWksYSX8yQcM8Ay3LuvVeQ63lcOKgoZWVqcpFwkd29aYU9rVx7jxhfhiEDV9MZA== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.4.4" + "@babel/helpers" "^7.4.4" + "@babel/parser" "^7.4.5" + "@babel/template" "^7.4.4" + "@babel/traverse" "^7.4.5" + "@babel/types" "^7.4.4" + convert-source-map "^1.1.0" + debug "^4.1.0" + json5 "^2.1.0" + lodash "^4.17.11" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + "@babel/generator@7.0.0-beta.44": version "7.0.0-beta.44" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-beta.44.tgz#c7e67b9b5284afcf69b309b50d7d37f3e5033d42" @@ -47,7 +67,7 @@ source-map "^0.5.0" trim-right "^1.0.1" -"@babel/generator@^7.0.0", "@babel/generator@^7.4.4": +"@babel/generator@^7.0.0", "@babel/generator@^7.4.0", "@babel/generator@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.4.4.tgz#174a215eb843fc392c7edcaabeaa873de6e8f041" integrity sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ== @@ -280,6 +300,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.4.tgz#5977129431b8fe33471730d255ce8654ae1250b6" integrity sha512-5pCS4mOsL+ANsFZGdvNLybx4wtqAZJ0MJjMHxvzI3bvIsz6sQvzW8XX92EYIkiPtIvcfG3Aj+Ir5VNyjnZhP7w== +"@babel/parser@^7.4.3", "@babel/parser@^7.4.5": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.5.tgz#04af8d5d5a2b044a2a1bffacc1e5e6673544e872" + integrity sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew== + "@babel/plugin-proposal-async-generator-functions@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e" @@ -709,7 +734,7 @@ babylon "7.0.0-beta.44" lodash "^4.2.0" -"@babel/template@^7.0.0", "@babel/template@^7.1.0", "@babel/template@^7.2.2", "@babel/template@^7.4.4": +"@babel/template@^7.0.0", "@babel/template@^7.1.0", "@babel/template@^7.2.2", "@babel/template@^7.4.0", "@babel/template@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237" integrity sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw== @@ -749,6 +774,21 @@ globals "^11.1.0" lodash "^4.17.11" +"@babel/traverse@^7.4.3", "@babel/traverse@^7.4.5": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.4.5.tgz#4e92d1728fd2f1897dafdd321efbff92156c3216" + integrity sha512-Vc+qjynwkjRmIFGxy0KYoPj4FdVDxLej89kMHFsWScq999uX+pwcX4v9mWRjW0KcAYTPAuVQl2LKP1wEVLsp+A== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.4.4" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/parser" "^7.4.5" + "@babel/types" "^7.4.4" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.11" + "@babel/types@7.0.0-beta.44": version "7.0.0-beta.44" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.44.tgz#6b1b164591f77dec0a0342aca995f2d046b3a757" @@ -758,7 +798,7 @@ lodash "^4.2.0" to-fast-properties "^2.0.0" -"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.4.4": +"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.4.4.tgz#8db9e9a629bb7c29370009b4b779ed93fe57d5f0" integrity sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ== @@ -1772,6 +1812,17 @@ universal-user-agent "^2.0.0" url-template "^2.0.8" +"@open-wc/building-utils@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@open-wc/building-utils/-/building-utils-1.1.1.tgz#e3d5cf9bd4c3e1d52eeda4434017bcc7037c1a83" + integrity sha512-VZAG1PpiW1Nj5uXEio4vhMjBsVhnQmXyPyAdjG01DG0yupUaBluYEpd59w80bwbvVjl6mHtWR5xOSMEIVcd2Rg== + dependencies: + "@babel/core" "^7.4.4" + browserslist "^4.5.6" + chokidar "^3.0.0" + lru-cache "^5.1.1" + minimatch "^3.0.4" + "@open-wc/chai-dom-equals@^0.11.5": version "0.11.5" resolved "https://registry.yarnpkg.com/@open-wc/chai-dom-equals/-/chai-dom-equals-0.11.5.tgz#146b7b47874e1b3457dc5bd7ed37b9878eb3b5b5" @@ -1780,6 +1831,14 @@ "@open-wc/semantic-dom-diff" "^0.10.5" "@types/chai" "^4.1.7" +"@open-wc/chai-dom-equals@^0.12.5": + version "0.12.5" + resolved "https://registry.yarnpkg.com/@open-wc/chai-dom-equals/-/chai-dom-equals-0.12.5.tgz#bf883c2403b8cf282c63a2f44a7c1eb38331be76" + integrity sha512-m6Q3hiGMa8MM9iMSN1gZC57RWmpFv6CoUD3kezUd5RQ3yoO7JAv42ZqjHb7kxpQSmNt2LgUkr9uvsY1hO4iJyw== + dependencies: + "@open-wc/semantic-dom-diff" "^0.11.5" + "@types/chai" "^4.1.7" + "@open-wc/demoing-storybook@^0.2.0": version "0.2.2" resolved "https://registry.yarnpkg.com/@open-wc/demoing-storybook/-/demoing-storybook-0.2.2.tgz#129e8a62bf76f71c8f9d65915cbd844026182d06" @@ -1818,6 +1877,27 @@ eslint-plugin-import "^2.0.0" eslint-plugin-wc "^1.0.0" +"@open-wc/karma-esm@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@open-wc/karma-esm/-/karma-esm-1.0.3.tgz#7dcac372d919fecad829a2659845001e104ad008" + integrity sha512-kV2iAVWPh6wUqBKP4mOSaCLRG2v9DGOAm56qHoeCoE7ywgS2uDxLIEtpJBJwpX4wsJjYPGaW0Ahc3yKVgA576Q== + dependencies: + "@babel/core" "^7.3.3" + "@babel/plugin-syntax-dynamic-import" "^7.2.0" + "@babel/plugin-syntax-import-meta" "^7.2.0" + "@babel/polyfill" "^7.0.0" + "@babel/preset-env" "^7.0.0" + "@open-wc/building-utils" "^1.1.1" + "@types/node" "^11.13.0" + arrify "^2.0.1" + babel-plugin-istanbul "^5.1.1" + chokidar "^2.1.5" + minimatch "^3.0.4" + path-is-inside "^1.0.2" + resolve "^1.10.0" + webpack-merge "^4.2.1" + whatwg-url "^7.0.0" + "@open-wc/prettier-config@^0.1.0": version "0.1.10" resolved "https://registry.yarnpkg.com/@open-wc/prettier-config/-/prettier-config-0.1.10.tgz#7b8ab8c2621064bbdbaee79234b3a87d6266cf42" @@ -1831,35 +1911,46 @@ resolved "https://registry.yarnpkg.com/@open-wc/semantic-dom-diff/-/semantic-dom-diff-0.10.5.tgz#c3ead8d0f8adc4b26e12b3077692e254f7d98c98" integrity sha512-CB9DVjy5nQjRA1A4S7qRTnZvR1tUvHGsLwih29diU3UiGULrmkFqS9NZii/YgyORAAAPhq0rD23DWn4QTLehbg== +"@open-wc/semantic-dom-diff@^0.11.5": + version "0.11.5" + resolved "https://registry.yarnpkg.com/@open-wc/semantic-dom-diff/-/semantic-dom-diff-0.11.5.tgz#7e028a15ea74d758b8e5593d11d0abb945d51bf8" + integrity sha512-+IQ8o64Z+voxn5807+YTN9GjIEfPsdZ6Zb1O04fGL2w1/qjWAKMFZa+G0r1UuFyEUP3LU+5XGGmCXPefWmSbhA== + "@open-wc/testing-helpers@^0.8.9": version "0.8.9" resolved "https://registry.yarnpkg.com/@open-wc/testing-helpers/-/testing-helpers-0.8.9.tgz#c3f17cfb5338ed77b5349d712025ba6b85bec413" integrity sha512-nej/k+s1EL8ynnSlkkafFCxCw51IIfzJjND1lmFFw2x0B+qAinAsILf7o4Bewm+OlKTpQs4zg6vHnTQBq1Vg3g== -"@open-wc/testing-karma-bs@^1.0.0": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@open-wc/testing-karma-bs/-/testing-karma-bs-1.0.5.tgz#2ced81b4812df0e1c0215384ca76b487cd7bcc85" - integrity sha512-s2lRWbPMTV132SPQcBGaWfaFMc93yCAyq7H4NPbdzOyseUabF1oBkTJ8+CAQlusByEiW11axJb0rRAIfPwa1yQ== +"@open-wc/testing-helpers@^0.9.5": + version "0.9.5" + resolved "https://registry.yarnpkg.com/@open-wc/testing-helpers/-/testing-helpers-0.9.5.tgz#694ae7f06b4533863caacfadc2ddcfa736857ecc" + integrity sha512-D67ya5kUdnwlm0FuG/ZZVyCl9rluDExZ924Ix7Q+ixrHVomx8AtCg43jJbhFSunKEF/mktQMx5jheqBuLExaSg== + +"@open-wc/testing-karma-bs@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@open-wc/testing-karma-bs/-/testing-karma-bs-1.1.3.tgz#5599e12b71a8fac4ce955593a80d591ad0f02a1c" + integrity sha512-ZsQAkP/odbcPqx1AS4QdtNRRyLuLrawMndqmLea7KlGixJBJ1BC+RshWFaCyLspWgs3Lpi7xoNA5MnO4C/ASsQ== dependencies: - "@open-wc/testing-karma" "^1.1.1" + "@open-wc/testing-karma" "^2.0.3" "@types/node" "^11.13.0" karma-browserstack-launcher "^1.0.0" -"@open-wc/testing-karma@^1.0.0", "@open-wc/testing-karma@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@open-wc/testing-karma/-/testing-karma-1.1.1.tgz#79b612ea8f8c03079ee667533addf3110ec37c79" - integrity sha512-ZVYJwsQmHxeu8PZCZ+AjLfgLKQ8p5D8QUAUIAJxr2JJPwH1OawFvgGYwsVkltSztPvda3bAOoAyCgd21EaJEdw== +"@open-wc/testing-karma@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@open-wc/testing-karma/-/testing-karma-2.0.3.tgz#83fa758148bae04ecca01731d8b086a533031bf5" + integrity sha512-L+FX+bPVA4ezPWSvOqVxVOgvQh+GaoqjRbTmC86mJ5QGH1H3kxlHAofRdkix89JlbIkdwVRBB+iu3uKVW6C/qg== dependencies: "@babel/core" "^7.3.3" "@babel/plugin-syntax-dynamic-import" "^7.2.0" "@babel/plugin-syntax-import-meta" "^7.2.0" "@babel/polyfill" "^7.0.0" "@babel/preset-env" "^7.0.0" - "@open-wc/webpack-import-meta-loader" "^0.2.0" + "@open-wc/karma-esm" "^1.0.3" "@types/node" "^11.13.0" "@webcomponents/webcomponentsjs" "^2.2.0" babel-loader "^8.0.0" babel-plugin-bundled-import-meta "^0.3.0" + babel-plugin-istanbul "^5.1.1" istanbul-instrumenter-loader "^3.0.0" karma "^4.0.0" karma-chrome-launcher "^2.0.0" @@ -1873,6 +1964,7 @@ karma-static "^1.0.1" karma-webpack "^5.0.0-alpha.2" webpack "^4.28.0" + webpack-merge "^4.1.5" "@open-wc/testing-wallaby@^0.1.12": version "0.1.12" @@ -1882,7 +1974,7 @@ wallaby-webpack "^3.0.0" webpack "^4.28.0" -"@open-wc/testing@^0.11.1", "@open-wc/testing@^0.11.5": +"@open-wc/testing@^0.11.1": version "0.11.5" resolved "https://registry.yarnpkg.com/@open-wc/testing/-/testing-0.11.5.tgz#3783c257921901111e9289a5fe3a2840e9b986bb" integrity sha512-6+P8bu7ASs/cBnswDTamoYWspJJOLamu9lYEP3HTEFDXAoNW/rdS6AlvjSOmhuEjrBZGwu8tL7BYkPGOdiRiHA== @@ -1895,10 +1987,18 @@ "@types/mocha" "^5.0.0" mocha "^5.0.0" -"@open-wc/webpack-import-meta-loader@^0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@open-wc/webpack-import-meta-loader/-/webpack-import-meta-loader-0.2.0.tgz#850768171ce5d9c716571f40baae43ad180c3d36" - integrity sha512-f++jX//ncufD56rhv24g/1bbkVa4GNYrWlIcJW3lLJdFaaKKTmOsCc9HjDq3Wh5O8Wh3edjkB08Nui3iY8c9Xw== +"@open-wc/testing@^0.12.5": + version "0.12.5" + resolved "https://registry.yarnpkg.com/@open-wc/testing/-/testing-0.12.5.tgz#1df3fdfe405168039f6792e31af69278409a8d74" + integrity sha512-rdEkmKWdxjevb6L5r4jCVVtbR3RGHm8EoCJsn618nw+X2bW25V1zWETlsw4jxkuw1cEjwCStlYUBsiTHGLpoJQ== + dependencies: + "@bundled-es-modules/chai" "^4.2.0" + "@open-wc/chai-dom-equals" "^0.12.5" + "@open-wc/semantic-dom-diff" "^0.11.5" + "@open-wc/testing-helpers" "^0.9.5" + "@types/chai" "^4.1.7" + "@types/mocha" "^5.0.0" + mocha "^5.0.0" "@polymer/iron-test-helpers@^3.0.1": version "3.0.1" @@ -2808,6 +2908,14 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" +anymatch@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.0.2.tgz#ddb3a8495d44875423af7b919aace11e91732a41" + integrity sha512-rUe9SxpRQlVg4EM8It7JMNWWYHAirTPpbTuvaSKybb5IejNgWB3PGBBX9rrPKDx2pM/p3Wh+7+ASaWRyyAbxmQ== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + app-root-dir@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/app-root-dir/-/app-root-dir-1.0.2.tgz#38187ec2dea7577fff033ffcb12172692ff6e118" @@ -2978,6 +3086,11 @@ arrify@^1.0.0, arrify@^1.0.1: resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + asap@^2.0.0, asap@~2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" @@ -3026,7 +3139,7 @@ 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-each@^1.0.1: +async-each@^1.0.1, async-each@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== @@ -3239,6 +3352,15 @@ babel-plugin-emotion@^9.2.11: source-map "^0.5.7" touch "^2.0.1" +babel-plugin-istanbul@^5.1.1: + version "5.1.4" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.4.tgz#841d16b9a58eeb407a0ddce622ba02fe87a752ba" + integrity sha512-dySz4VJMH+dpndj0wjJ8JPs/7i1TdSPb1nRrn56/92pKOF9VKC1FMFJmMXjzlGGusnCAqujP6PBCiKq0sVA+YQ== + dependencies: + find-up "^3.0.0" + istanbul-lib-instrument "^3.3.0" + test-exclude "^5.2.3" + babel-plugin-macros@^2.0.0, babel-plugin-macros@^2.4.5: version "2.5.1" resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.5.1.tgz#4a119ac2c2e19b458c259b9accd7ee34fd57ec6f" @@ -3560,6 +3682,11 @@ binary-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== +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== + blob@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" @@ -3656,6 +3783,13 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^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== + dependencies: + fill-range "^7.0.1" + brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" @@ -3743,6 +3877,15 @@ browserslist@^4.5.2, browserslist@^4.5.4: electron-to-chromium "^1.3.124" node-releases "^1.1.14" +browserslist@^4.5.6: + version "4.6.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.6.0.tgz#5274028c26f4d933d5b1323307c1d1da5084c9ff" + integrity sha512-Jk0YFwXBuMOOol8n6FhgkDzn3mY9PYLYGk29zybF05SbRTsMgPqmTNeQQhOghCxq5oFqAXE3u4sYddr4C0uRhg== + dependencies: + caniuse-lite "^1.0.30000967" + electron-to-chromium "^1.3.133" + node-releases "^1.1.19" + browserstack-local@^1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/browserstack-local/-/browserstack-local-1.3.7.tgz#cac9fc958eaa0a352e8f1ca1dc91bb141ba5da6f" @@ -3971,6 +4114,11 @@ caniuse-lite@^1.0.30000929, caniuse-lite@^1.0.30000957, caniuse-lite@^1.0.300009 resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000963.tgz#5be481d5292f22aff5ee0db4a6c049b65b5798b1" integrity sha512-n4HUiullc7Lw0LyzpeLa2ffP8KxFBGdxqD/8G3bSL6oB758hZ2UE2CVK+tQN958tJIi0/tfpjAc67aAtoHgnrQ== +caniuse-lite@^1.0.30000967: + version "1.0.30000971" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000971.tgz#d1000e4546486a6977756547352bc96a4cfd2b13" + integrity sha512-TQFYFhRS0O5rdsmSbF1Wn+16latXYsQJat66f7S7lizXW1PVpWJeZw9wqqVLIjuxDRz7s7xRUj13QCfd8hKn6g== + case-sensitive-paths-webpack-plugin@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.2.0.tgz#3371ef6365ef9c25fa4b81c16ace0e9c7dc58c3e" @@ -4070,6 +4218,41 @@ chokidar@^2.0.2, chokidar@^2.0.3: optionalDependencies: fsevents "^1.2.7" +chokidar@^2.1.5: + version "2.1.6" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.6.tgz#b6cad653a929e244ce8a834244164d241fa954c5" + integrity sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chokidar@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.0.0.tgz#6b538f0fd6d5d31d5dd2b59e05426bec0f49aa40" + integrity sha512-ebzWopcacB2J19Jsb5RPtMrzmjUZ5VAQnsL0Ztrix3lswozHbiDp+1Lg3AWSKHdwsps/W2vtshA/x3I827F78g== + dependencies: + anymatch "^3.0.1" + async-each "^1.0.3" + braces "^3.0.2" + glob-parent "^5.0.0" + is-binary-path "^2.1.0" + is-glob "^4.0.1" + normalize-path "^3.0.0" + readdirp "^3.0.1" + optionalDependencies: + fsevents "^2.0.6" + chownr@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" @@ -5280,6 +5463,11 @@ electron-to-chromium@^1.3.103, electron-to-chromium@^1.3.124: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.127.tgz#9b34d3d63ee0f3747967205b953b25fe7feb0e10" integrity sha512-1o25iFRf/dbgauTWalEzmD1EmRN3a2CzP/K7UVpYLEBduk96LF0FyUdCcf4Ry2mAWJ1VxyblFjC93q6qlLwA2A== +electron-to-chromium@^1.3.133: + version "1.3.137" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.137.tgz#ba7c88024984c038a5c5c434529aabcea7b42944" + integrity sha512-kGi32g42a8vS/WnYE7ELJyejRT7hbr3UeOOu0WeuYuQ29gCpg9Lrf6RdcTQVXSt/v0bjCfnlb/EWOOsiKpTmkw== + elegant-spinner@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" @@ -6031,6 +6219,13 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + finalhandler@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" @@ -6263,6 +6458,11 @@ fsevents@^1.2.7: nan "^2.12.1" node-pre-gyp "^0.12.0" +fsevents@^2.0.6: + version "2.0.7" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.0.7.tgz#382c9b443c6cbac4c57187cdda23aa3bf1ccfc2a" + integrity sha512-a7YT0SV3RB+DjYcppwVDLtn13UQnmg0SWZS7ezZD0UjnLwXmy8Zm21GMVGLaFGimIqcvyMQaOJBrop8MyOp1kQ== + fstream@^1.0.0, fstream@^1.0.2: version "1.0.11" resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" @@ -6458,6 +6658,13 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" +glob-parent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.0.0.tgz#1dc99f0f39b006d3e92c2c284068382f0c20e954" + integrity sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg== + dependencies: + is-glob "^4.0.1" + glob-stream@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4" @@ -7285,6 +7492,13 @@ is-binary-path@^1.0.0: dependencies: binary-extensions "^1.0.0" +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.4, is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -7409,7 +7623,7 @@ is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" -is-glob@^4.0.0: +is-glob@^4.0.0, 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== @@ -7433,6 +7647,11 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + is-obj@^1.0.0, is-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" @@ -7674,6 +7893,11 @@ istanbul-lib-coverage@^2.0.4: resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#927a354005d99dd43a24607bb8b33fd4e9aca1ad" integrity sha512-LXTBICkMARVgo579kWDm8SqfB6nvSDKNqIOBEjmJRnL04JvoMHCYGWaMddQnseJYtkEuEvO/sIcOxPLk9gERug== +istanbul-lib-coverage@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" + integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== + istanbul-lib-hook@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-2.0.6.tgz#5baa6067860a38290aef038b389068b225b01b7d" @@ -7707,6 +7931,19 @@ istanbul-lib-instrument@^3.2.0: istanbul-lib-coverage "^2.0.4" semver "^6.0.0" +istanbul-lib-instrument@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" + integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== + dependencies: + "@babel/generator" "^7.4.0" + "@babel/parser" "^7.4.3" + "@babel/template" "^7.4.0" + "@babel/traverse" "^7.4.3" + "@babel/types" "^7.4.0" + istanbul-lib-coverage "^2.0.5" + semver "^6.0.0" + istanbul-lib-report@^2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.7.tgz#370d80d433c4dbc7f58de63618f49599c74bd954" @@ -9112,6 +9349,13 @@ node-releases@^1.1.14, node-releases@^1.1.3: dependencies: semver "^5.3.0" +node-releases@^1.1.19: + version "1.1.21" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.21.tgz#46c86f9adaceae4d63c75d3c2f2e6eee618e55f3" + integrity sha512-TwnURTCjc8a+ElJUjmDqU6+12jhli1Q61xOQmdZ7ECZVBZuQpN/1UnembiIHDM1wCcfLvh5wrWXUF5H6ufX64Q== + dependencies: + semver "^5.3.0" + node-version@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/node-version/-/node-version-1.2.0.tgz#34fde3ffa8e1149bd323983479dda620e1b5060d" @@ -9881,6 +10125,11 @@ 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: + version "2.0.7" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.0.7.tgz#514169d8c7cd0bdbeecc8a2609e34a7163de69f6" + integrity sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA== + pidtree@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.0.tgz#f6fada10fccc9f99bf50e90d0b23d72c9ebc2e6b" @@ -10707,6 +10956,14 @@ read-pkg-up@^3.0.0: find-up "^2.0.0" read-pkg "^3.0.0" +read-pkg-up@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" + integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== + dependencies: + find-up "^3.0.0" + read-pkg "^3.0.0" + read-pkg@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" @@ -10791,6 +11048,13 @@ readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" +readdirp@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.0.1.tgz#14a8875883c5575c235579624a1e177cb0b1ec58" + integrity sha512-emMp13NEwWQQX1yeDgrzDNCSY7NHV6k9HTW0OhyQqOAzYacbqQhnmWiCYjxNPcqMTQ9k77oXQJp28jkytm3+jg== + dependencies: + picomatch "^2.0.4" + recast@~0.11.12: version "0.11.23" resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.23.tgz#451fd3004ab1e4df9b4e4b66376b2a21912462d3" @@ -11088,6 +11352,11 @@ require-main-filename@^1.0.1: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= +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== + requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" @@ -12197,6 +12466,16 @@ terser@^3.16.1: source-map "~0.6.1" source-map-support "~0.5.10" +test-exclude@^5.2.3: + version "5.2.3" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" + integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== + dependencies: + glob "^7.1.3" + minimatch "^3.0.4" + read-pkg-up "^4.0.0" + require-main-filename "^2.0.0" + text-extensions@^1.0.0: version "1.9.0" resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" @@ -12317,6 +12596,13 @@ to-regex-range@^2.1.0: is-number "^3.0.0" repeat-string "^1.6.1" +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + to-regex@^3.0.1, to-regex@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" @@ -12956,7 +13242,7 @@ webpack-log@^2.0.0: ansi-colors "^3.0.0" uuid "^3.3.2" -webpack-merge@^4.1.5: +webpack-merge@^4.1.5, webpack-merge@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.1.tgz#5e923cf802ea2ace4fd5af1d3247368a633489b4" integrity sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw==