diff --git a/.babelrc b/.babelrc index 56999588..efcc41fd 100644 --- a/.babelrc +++ b/.babelrc @@ -3,16 +3,15 @@ [ "@babel/preset-env", { - debug: true, - targets: { - browsers: [ - ">0.25%", - "not ie 10", - "not op_mini all" - ] - } + useBuiltIns: "usage", + corejs: 3, + // debug: true, // outputs polyfills and browserlist + // targets: 'defaults' // allows .browserslistrc to work } ], "jest" + ], + "plugins": [ + 'babel-plugin-angularjs-annotate' ] } diff --git a/.gitignore b/.gitignore index 569fd8f4..ffd63c8f 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ node_modules coverage **.DS_Store *.*-e +yarn-error.log \ No newline at end of file diff --git a/.npmignore b/.npmignore index 812a8177..d1a4c69d 100644 --- a/.npmignore +++ b/.npmignore @@ -1,3 +1,4 @@ node_modules coverage *.*-e +.yarn-error.log \ No newline at end of file diff --git a/package.json b/package.json index 7a474268..3641aef2 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,11 @@ { "name": "materia-server-client-assets", - "version": "2.1.1", + "version": "2.2.0", "license": "AGPL-3.0", "description": "Materia Server Client Assets contains all the javascript and css for Materia Server and the Materia Widget Development Kit.", "author": "University of Central Florida, Center for Distributed Learning", "homepage": "https://ucfopen.github.io/Materia-Docs", + "repository": "https://github.com/ucfopen/Materia-Server-Client-Assets.git", "scripts": { "test": "TZ=Etc/UTC jest --verbose", "test:dev": "TZ=Etc/UTC jest --verbose --watch --coverage", @@ -12,10 +13,10 @@ "build": "webpack -p", "build-watch": "webpack --watch", "build-dev": "webpack", + "prepare": "yarn build", "prettier:run": "prettier --write 'src/**/*.{js,scss}'", "prettier:debug": "prettier -l 'src/**/*.{js,scss}'", - "prettier:detectchanges": "git diff --exit-code ./src || (echo '!! Prettier created files that need to be manually added.'; exit 1;)", - "precommit": "yarn test && lint-staged" + "prettier:detectchanges": "git diff --exit-code ./src || (echo '!! Prettier created files that need to be manually added.'; exit 1;)" }, "prettier": { "printWidth": 100, @@ -25,10 +26,19 @@ }, "lint-staged": { "src/**/*.{js,scss}": [ - "yarn prettier --write", - "git add" + "yarn prettier --write" ] }, + "husky": { + "hooks": { + "pre-commit": "yarn test:ci && yarn lint-staged" + } + }, + "browserslist": [ + "> 0.5%", + "not ie >= 0", + "not op_mini all" + ], "jest": { "transform": { "ctrl-widget-catalog.js": "babel-jest" @@ -46,41 +56,44 @@ ], "coverageThreshold": { "global": { - "statements": 44, - "branches": 31, + "statements": 43, + "branches": 32, "functions": 48, "lines": 43 } } }, "dependencies": { - "angular": "1.6.9", + "angular": "1.8.0", "js-snakecase": "^1.2.0", "ngmodal": "ucfcdl/ngModal#v1.2.2" }, "devDependencies": { - "@babel/core": "^7.4.5", - "@babel/preset-env": "^7.4.5", - "angular-animate": "1.6.9", - "angular-mocks": "1.6.9", - "babel-jest": "^24.6.0", - "babel-loader": "^8.0.6", + "@babel/core": "^7.10.4", + "@babel/preset-env": "^7.10.4", + "angular-animate": "1.8.0", + "angular-mocks": "1.8.0", + "autoprefixer": "^9.7.6", + "babel-jest": "^26.1.0", + "babel-loader": "^8.1.0", "babel-plugin-angularjs-annotate": "^0.10.0", - "babel-polyfill": "^6.26.0", - "clean-webpack-plugin": "^2.0.2", - "css-loader": "^0.28.4", - "extract-text-webpack-plugin": "^3.0.0", + "clean-webpack-plugin": "^3.0.0", + "core-js": "3", + "css-loader": "^3.6.0", "hammerjs": "2.0.8", - "husky": "^2.3.0", - "jest": "^24.6.0", - "lint-staged": "^8.1.7", - "node-sass": "^4.12.0", - "prettier": "^1.11.1", - "sass-loader": "^6.0.6", - "style-loader": "^0.20.2", - "webpack": "3.12.0", - "webpack-strip-block": "^0.2.0", - "whatwg-fetch": "^3.0.0" + "husky": "^4.2.5", + "ignore-emit-webpack-plugin": "^2.0.2", + "jest": "^26.1.0", + "lint-staged": "^10.2.11", + "mini-css-extract-plugin": "^0.9.0", + "node-sass": "^4.14.1", + "postcss-loader": "^3.0.0", + "prettier": "^2.0.5", + "sass-loader": "^9.0.1", + "style-loader": "^1.2.1", + "webpack": "4.43.0", + "webpack-cli": "^3.3.12", + "webpack-strip-block": "^0.2.0" }, "engines": { "node": "^12.3.1", diff --git a/src/css/login.scss b/src/css/login.scss index ee73c2c0..542f850a 100644 --- a/src/css/login.scss +++ b/src/css/login.scss @@ -1,273 +1,273 @@ -.login label { - cursor: text; -} - -.login section.page, -.login aside { - background: #fff; -} - -.login .container { - margin: 15px auto 0px auto; - width: 640px; - position: relative; -} - -.login section.page, -.login aside { - border: rgba(0, 0, 0, 0.11) 1px solid; - box-shadow: 1px 3px 10px #888; -} - -.login section.page { - width: 600px; - margin: 0 auto; - top: 0; - right: 0; - z-index: 100; - padding: 30px 10px; -} - -.login .container.widget section.page { - min-height: 400px; - border-left: 0; - border-right: 0; - border-bottom: 0; -} - -.login .container.widget .attempts.page { - min-height: 280px; -} - -.login .container.widget div.detail .unavailable-text { - margin-top: 40px; - margin-bottom: 5px; -} - -.login .container.widget div.detail .unavailable-subtext { - margin-bottom: 40px; - font-size: 0.8em; - font-weight: 600; -} - -.login .container.widget.preview section.page { - border-top: 4px #b944cc solid; - margin-top: 55px; -} - -.login .container.widget.preview section.page:before { - content: 'Previewing'; - background: #b944cc; - - position: absolute; - left: 0; - top: -40px; - width: 160px; - height: 20px; - padding: 8px 0 12px 0; - - font-family: 'Lato', 'Arial', sans-serif; - font-size: 20px; - font-weight: 900; - color: #ffffff; - text-align: center; - vertical-align: middle; - - border-radius: 5px 5px 0 0; -} - -.login .availability_message { - padding: 1em 70px; -} - -.login div.detail, -div.detail { - text-align: center; - clear: both; -} - -div.detail.icon-offset { - margin-left: 110px; -} - -.login .container.widget div.detail h3, -.login .container.widget div.detail h3 { - margin-top: 3px; -} - -.login .form-content ul { - margin: 0; - position: relative; - width: 500px; - margin: 0 auto; - margin-top: 30px; - padding: 0; -} - -.login .form-content ul li { - position: relative; - list-style-type: none; - display: block; - height: 46px; - width: 350px; - margin: 0 auto; - margin-top: 13px; -} - -.login .form-content ul li.submit_button { - text-align: center; -} - -.login .form-content ul li label, -.login .form-content ul li input[type='text'], -.login .form-content ul li input[type='password'] { - position: absolute; - top: 0; - left: 0; - display: block; - width: 300px; - font-size: 17px; -} - -.login .form-content ul li label { - z-index: 1000; - height: 27px; - margin-top: 13px; - margin-left: 14px; -} -.login .form-content ul li input[type='text'], -.login .form-content ul li input[type='password'] { - z-index: 500; - height: 40px; - padding-left: 12px; - padding-right: 12px; - width: 326px; - border: solid 1px #abadb3; - background: #fff; -} - -.login ul.help_links { - text-align: center; - padding: 0; -} - -.login ul.help_links li { - display: inline; -} - -.login ul.help_links li a { - margin: 0 5px 0 5px; -} - -.login ul.help_links li:after { - content: '|'; -} - -.login ul.help_links li:last-child:after { - content: ''; -} - -.login .error { - margin: -5px 0 -10px 0; -} - -.login .error p { - background: #ffcfcf; - color: red; - font-family: 'Lato'; - font-weight: 600; - font-size: 17px; - padding: 6px 10px; - text-align: center; - width: 340px; - margin: 25px auto 0; -} - -.login .additional_info { - padding-bottom: 20px; - padding-left: 20px; - padding-right: 20px; -} - -.login .widget_info { - padding-left: 70px; - padding-right: 15px; - margin: 0; - list-style: none; - /*min-height: 155px;*/ - margin-bottom: 20px; -} -.login .widget_info li { - list-style-type: none; - margin-right: 10px; - display: block; -} - -.login .widget_icon { - position: absolute; - top: 25px; - left: -25px; - background: #0093e7; - width: 115px; - height: inherit; - padding: 15px; - text-align: right; - color: #fff; - font-size: 10px; - line-height: 13px; - box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.4); -} - -.login .widget_icon img { - padding-bottom: 5px; - padding-left: 10px; - width: 100px; - height: 100px; -} - -.login .widget_info li.widget_tag { - background: #f2f0d0; - color: #48483e; - border-radius: 3px; - text-transform: uppercase; - padding: 2px 6px; - font-size: 12px; - display: inline-block; - vertical-align: top; - margin-right: 3px; -} - -.login .widget_info li.widget_availability { - font-size: 13px; - display: inline-block; - padding: 0; - width: 335px; - padding-bottom: 15px; -} - -.login .widget_info li.widget_availability .available_date, -.login .widget_info li.widget_availability .available_time { - font-weight: 100; -} - -.login .widget_info li.widget_name { - font-family: 'Lato', arial, serif; - font-weight: 700; - font-size: 38px; - border-bottom: dotted black 1px; - margin: 0; - padding: 0 0 5px 0; - margin-bottom: 10px; - line-height: 37px; -} - -.login .widget_type { - font-size: 12px; - text-transform: uppercase; - color: #b2b2b2; - display: block; -} - -.login .server_date { - display: none; -} +.login label { + cursor: text; +} + +.login section.page, +.login aside { + background: #fff; +} + +.login .container { + margin: 15px auto 0px auto; + width: 640px; + position: relative; +} + +.login section.page, +.login aside { + border: rgba(0, 0, 0, 0.11) 1px solid; + box-shadow: 1px 3px 10px #888; +} + +.login section.page { + width: 600px; + margin: 0 auto; + top: 0; + right: 0; + z-index: 100; + padding: 30px 10px; +} + +.login .container.widget section.page { + min-height: 400px; + border-left: 0; + border-right: 0; + border-bottom: 0; +} + +.login .container.widget .attempts.page { + min-height: 280px; +} + +.login .container.widget div.detail .unavailable-text { + margin-top: 40px; + margin-bottom: 5px; +} + +.login .container.widget div.detail .unavailable-subtext { + margin-bottom: 40px; + font-size: 0.8em; + font-weight: 600; +} + +.login .container.widget.preview section.page { + border-top: 4px #b944cc solid; + margin-top: 55px; +} + +.login .container.widget.preview section.page:before { + content: 'Previewing'; + background: #b944cc; + + position: absolute; + left: 0; + top: -40px; + width: 160px; + height: 20px; + padding: 8px 0 12px 0; + + font-family: 'Lato', 'Arial', sans-serif; + font-size: 20px; + font-weight: 900; + color: #ffffff; + text-align: center; + vertical-align: middle; + + border-radius: 5px 5px 0 0; +} + +.login .availability_message { + padding: 1em 70px; +} + +.login div.detail, +div.detail { + text-align: center; + clear: both; +} + +div.detail.icon-offset { + margin-left: 110px; +} + +.login .container.widget div.detail h3, +.login .container.widget div.detail h3 { + margin-top: 3px; +} + +.login .form-content ul { + margin: 0; + position: relative; + width: 500px; + margin: 0 auto; + margin-top: 30px; + padding: 0; +} + +.login .form-content ul li { + position: relative; + list-style-type: none; + display: block; + height: 46px; + width: 350px; + margin: 0 auto; + margin-top: 13px; +} + +.login .form-content ul li.submit_button { + text-align: center; +} + +.login .form-content ul li label, +.login .form-content ul li input[type='text'], +.login .form-content ul li input[type='password'] { + position: absolute; + top: 0; + left: 0; + display: block; + width: 300px; + font-size: 17px; +} + +.login .form-content ul li label { + z-index: 1000; + height: 27px; + margin-top: 13px; + margin-left: 14px; +} +.login .form-content ul li input[type='text'], +.login .form-content ul li input[type='password'] { + z-index: 500; + height: 40px; + padding-left: 12px; + padding-right: 12px; + width: 326px; + border: solid 1px #abadb3; + background: #fff; +} + +.login ul.help_links { + text-align: center; + padding: 0; +} + +.login ul.help_links li { + display: inline; +} + +.login ul.help_links li a { + margin: 0 5px 0 5px; +} + +.login ul.help_links li:after { + content: '|'; +} + +.login ul.help_links li:last-child:after { + content: ''; +} + +.login .error { + margin: -5px 0 -10px 0; +} + +.login .error p { + background: #ffcfcf; + color: red; + font-family: 'Lato'; + font-weight: 600; + font-size: 17px; + padding: 6px 10px; + text-align: center; + width: 340px; + margin: 25px auto 0; +} + +.login .additional_info { + padding-bottom: 20px; + padding-left: 20px; + padding-right: 20px; +} + +.login .widget_info { + padding-left: 70px; + padding-right: 15px; + margin: 0; + list-style: none; + /*min-height: 155px;*/ + margin-bottom: 20px; +} +.login .widget_info li { + list-style-type: none; + margin-right: 10px; + display: block; +} + +.login .widget_icon { + position: absolute; + top: 25px; + left: -25px; + background: #0093e7; + width: 115px; + height: inherit; + padding: 15px; + text-align: right; + color: #fff; + font-size: 10px; + line-height: 13px; + box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.4); +} + +.login .widget_icon img { + padding-bottom: 5px; + padding-left: 10px; + width: 100px; + height: 100px; +} + +.login .widget_info li.widget_tag { + background: #f2f0d0; + color: #48483e; + border-radius: 3px; + text-transform: uppercase; + padding: 2px 6px; + font-size: 12px; + display: inline-block; + vertical-align: top; + margin-right: 3px; +} + +.login .widget_info li.widget_availability { + font-size: 13px; + display: inline-block; + padding: 0; + width: 335px; + padding-bottom: 15px; +} + +.login .widget_info li.widget_availability .available_date, +.login .widget_info li.widget_availability .available_time { + font-weight: 100; +} + +.login .widget_info li.widget_name { + font-family: 'Lato', arial, serif; + font-weight: 700; + font-size: 38px; + border-bottom: dotted black 1px; + margin: 0; + padding: 0 0 5px 0; + margin-bottom: 10px; + line-height: 37px; +} + +.login .widget_type { + font-size: 12px; + text-transform: uppercase; + color: #b2b2b2; + display: block; +} + +.login .server_date { + display: none; +} diff --git a/src/css/my-widgets.scss b/src/css/my-widgets.scss index df3b70e5..3350ccff 100644 --- a/src/css/my-widgets.scss +++ b/src/css/my-widgets.scss @@ -389,28 +389,55 @@ opacity: 0.5; } - .page .controls div.delete_dialogue { - background: url(../../../img/delete-dialogue-bg.png) no-repeat center; - padding: 20px 0; - margin-bottom: 5px; + .page .controls .delete_dialogue { text-align: center; - } + width: 345px; + margin: 0; + position: absolute; + padding: 21px 10px 17px; + box-sizing: border-box; + background: white; + border-radius: 10px; + box-shadow: 3px 1px 6px rgba(0, 0, 0, 0.3); + + // css triangle arrow to point at delete link + &:before { + content: ' '; + height: 0; + position: absolute; + width: 0; + top: -35px; + right: 20px; + border: 20px solid transparent; + border-bottom-color: white; + } - .page .controls div.delete_dialogue .action_button { - margin-top: 5px; - } + .bottom_buttons { + margin-top: 18px; + } - .page .controls div.delete_dialogue .red { - background: #ca0000; - background-image: linear-gradient(#e10000, #ca0000); - border-color: #747474; - color: #ffffff; - } + .action_button { + margin-top: 5px; + } - .page .controls div.delete_dialogue .red:hover { - background: #ca0000; - background-image: linear-gradient(#ca0000, #e10000); - text-decoration: none; + .red { + background: #ca0000; + background-image: linear-gradient(#e10000, #ca0000); + border-color: #747474; + color: #ffffff; + } + + .red:hover { + background: #ca0000; + background-image: linear-gradient(#ca0000, #e10000); + text-decoration: none; + } + + .gray:hover { + background: #a2c129; + background-image: linear-gradient(#b8b8b8, #e4e4e4); + text-decoration: none; + } } .page .controls a.disabled, @@ -425,12 +452,6 @@ opacity: 0.5; } - .page .controls div.delete_dialogue .gray:hover { - background: #a2c129; - background-image: linear-gradient(#b8b8b8, #e4e4e4); - text-decoration: none; - } - .page .controls div.additional_options { border-top: #8e8e8e dotted 1px; margin: 20px 10px 0px 5px; diff --git a/src/css/ng-modal.scss b/src/css/ng-modal.scss index eb965c37..8c931901 100644 --- a/src/css/ng-modal.scss +++ b/src/css/ng-modal.scss @@ -1 +1,2 @@ @import '~ngmodal/dist/ng-modal.css'; +// copy the ng-modal css to this file diff --git a/src/css/partials/_widget_availability_modal.scss b/src/css/partials/_widget_availability_modal.scss index 0a44d92e..09073faa 100644 --- a/src/css/partials/_widget_availability_modal.scss +++ b/src/css/partials/_widget_availability_modal.scss @@ -16,6 +16,16 @@ text-align: left; } + .student-role-notice { + margin: 0 auto 15px auto; + padding: 10px; + font-size: 0.9em; + width: 90%; + + background: rgb(238, 238, 238); + border-radius: 5px; + } + ul { &.inline li { list-style: none; @@ -25,7 +35,7 @@ } &.inline { - margin: 50px auto 20px auto; + margin: 20px auto 20px auto; padding: 0; width: 255px; } @@ -83,7 +93,10 @@ .disabled { pointer-events: none; - opacity: 0.4; + label, + input { + opacity: 0.4; + } } h3 { @@ -138,17 +151,20 @@ } } - .data_explanation { - margin-left: 125px; - width: 450px; - font-size: 14px; + .input_desc { + padding: 10px; + margin-bottom: 0; + background: #f2f2f2; + border-radius: 5px; + margin: 0.5em 1em 1em; + + .desc_notice { + margin-top: 1em; + } } - .access_explanation { - margin-left: 15px; - width: 450px; - font-size: 14px; - margin: 5px 20px; + .data_explanation { + margin-left: 125px; } .ui-slider-handle.ui-state-default.ui-corner-all { diff --git a/src/css/partials/_widget_copy_modal.scss b/src/css/partials/_widget_copy_modal.scss index a5834b05..76c6c4a2 100644 --- a/src/css/partials/_widget_copy_modal.scss +++ b/src/css/partials/_widget_copy_modal.scss @@ -1,103 +1,76 @@ .ng-modal.copy { - text-align: center; -} + // START MODAL PARTS -.ng-modal.copy .adding_shadow { - width: 640px; - height: 480px; - background-color: #000000; - border-radius: 3px; - position: absolute; - top: -65px; - left: -20px; - z-index: 1; - opacity: 0; - filter: alpha(opacity=0); -} + .ng-modal-dialog { + padding: 20px 20px 5px 20px; + min-width: 500px; + } -.ng-modal.copy .container { - position: absolute; - left: 20px; - top: 40px; - width: 600px; - padding-top: 15px; -} + .ng-modal-title { + margin: 0; + padding: 0; + font-size: 1.3em; + color: #555; + border-bottom: #999 dotted 1px; + padding-bottom: 20px; + margin-bottom: 20px; + position: relative; + text-align: left; + } -.ng-modal.copy .ng-modal-title { - top: 3px; - left: 12px; -} + a.close { + display: block; + position: absolute; + right: 5px; + top: 4px; + margin: 4px; + background: url('../../../img/close.png') no-repeat; + text-indent: -10000px; + width: 19px; + height: 19px; + } -.ng-modal.copy a.close { - display: block; - position: absolute; - right: 5px; - top: 4px; - margin: 4px; - background: url('../../../img/close.png') no-repeat; - text-indent: -10000px; - width: 19px; - height: 19px; -} + .container { + width: 100%; + } -.ng-modal.copy .input_label { - font-size: 16px; - margin: 0 25px 0 0; -} + // END MODAL PARTS -.ng-modal.copy input.newtitle { - width: 450px; - height: 30px; - padding-left: 10px; - position: relative; - z-index: 2; -} + .input_desc { + padding: 10px; + margin-bottom: 0; + background: #f2f2f2; + border-radius: 5px; + margin: 0.5em 1em 1em; + } -.ng-modal.copy .copy_button { - margin-top: 20px; -} + .title_container { + label { + margin: 0 25px 0 0; + } -.ng-modal.copy .copy_error { - display: none; - color: #ee0000; - margin-top: 5px; -} + #copy_input_title { + width: 450px; + height: 30px; + padding-left: 10px; + position: relative; + z-index: 2; + } + } -.share .perm-text { - width: 100%; - display: inline-block; -} - -.share .exp-date { - padding: 0; - text-decoration: underline; - color: #545454; - font-size: 8pt; - cursor: pointer; - background: transparent; - border: none; - width: 85px; -} -.share .exp-date:hover { - color: #969696; -} -.share .exp-date:disabled { - cursor: default; - color: #c5c5c5; - text-decoration: none; -} - -.share .exp-date:focus { - outline: none; - background: #fff; - border: solid 1px #f7b64a; -} + .options_container { + margin: 20px 0 0 0; + padding: 20px 0 0 0; + text-align: left; -.share .expires { - font-size: 8pt; -} + input { + margin-right: 5px; + } + } -.share .remove-expiration { - font-size: 8pt; - cursor: pointer; + .bottom_buttons { + margin-top: 20px; + text-align: center; + width: 100%; + } } diff --git a/src/css/partials/_widget_share_modal.scss b/src/css/partials/_widget_share_modal.scss index b1e6386e..3f81d4ce 100644 --- a/src/css/partials/_widget_share_modal.scss +++ b/src/css/partials/_widget_share_modal.scss @@ -1,33 +1,556 @@ -.ng-modal.share .cancel_button { - position: absolute; - bottom: -35px; - left: 200px; - - color: #555; - text-decoration: underline; - margin: 10px 15px; - cursor: pointer; -} - -.ng-modal.share .cancel_button.close_only { - left: 250px; +.ng-modal.share .avatar, +.user_perm_name, +.user-perm .options, +.user_perm_select, +.user_match_avatar, +.user_match_name { + display: inline-block; + vertical-align: middle; } -.ng-modal.share .action_button.save_button { - position: absolute; - bottom: -35px; - left: 285px; -} +.ng-modal.share { + text-align: center; -.ng-modal.share .toggle_transfer { - font-size: 12px; - position: absolute; - bottom: 20px; - left: 20px; - padding: 5px 10px; -} -.ng-modal.share .cancel_button .share_button { - margin-top: 10px; + .cancel_button { + position: absolute; + bottom: -35px; + left: 200px; + + color: #555; + text-decoration: underline; + margin: 10px 15px; + cursor: pointer; + } + + .cancel_button.close_only { + left: 250px; + } + + .search_container { + text-align: left; + position: relative; + margin-bottom: 20px; + } + + .action_button.save_button { + position: absolute; + bottom: -35px; + left: 285px; + } + + .toggle_transfer { + font-size: 12px; + position: absolute; + bottom: 20px; + left: 20px; + padding: 5px 10px; + } + .cancel_button .share_button { + margin-top: 10px; + } + + #adding { + background-color: #f0f0f0; + border: none; + background: transparent; + position: absolute; + top: 0; + } + + .container { + left: 0; + width: 580px; + height: 390px; + padding-top: 0; + } + + .ng-modal-title { + margin: 0; + padding: 0; + font-size: 1.3em; + color: #555; + border-bottom: #999 dotted 1px; + padding-bottom: 20px; + margin-bottom: 20px; + position: relative; + text-align: left; + } + + a.close { + display: block; + position: absolute; + right: 5px; + top: 4px; + margin: 4px; + background: url('../../../img/close.png') no-repeat; + text-indent: -10000px; + width: 19px; + height: 19px; + } + a.remove { + display: inline-block; + color: #bfbfbf; + text-decoration: none; + font-size: 15px; + position: absolute; + left: -30px; + top: 30px; + } + .name { + float: left; + font-weight: bold; + font-size: 15px; + margin-top: 8px; + text-align: left; + width: 160px; + } + + .name span { + display: block; + font-weight: normal; + text-align: left; + } + + .input_label { + font-size: 19px; + margin: 5px 25px 0 0; + } + + #adding .input_label { + left: 20px; + top: 20px; + } + + #access input.user_add, + #access .placeholder { + width: 445px; + height: 30px; + z-index: 2; + border: solid 1px #c9c9c9; + font-size: 16px; + } + + #adding #input_holder { + width: 445px; + height: 30px; + padding-left: 10px; + z-index: 2; + border: solid 1px #c9c9c9; + font-size: 16px; + background: #fff; + position: absolute; + right: 0; + text-align: left; + top: 20px; + right: 20px; + } + + #adding #input_area { + display: inline-block; + outline: none; + min-width: 15px; + min-height: 30px; + font-family: 'Lucida Grande', sans-serif; + font-size: 16px; + padding-top: 5px; + } + #adding #input_area input.user_add { + width: 460px; + height: 30px; + border: none; + margin: 0; + padding: 0; + display: inline-block; + } + + #adding #input_area input.user_add::input-placeholder { + color: #343434; + } + + #adding #expArea { + display: block; + } + #adding #expArea #expSet { + display: none; + padding: 0; + margin: 0; + } + .expElement { + padding: 0; + margin: 0 5px; + } + + .changeRoleExpiration { + display: none; + } + + #adding #expArea .exp_disclaimer { + padding: 0; + margin: 10px 0; + } + #adding #expArea #roleExpiration { + width: 100px; + } + + .share_user_to_add { + display: inline-block; + font-size: 14px; + border-radius: 3px; + background-color: #fbfbfb; + border: 1px solid #aeaeae; + margin: 3px; + padding: 3px; + height: 30px; + } + + .search_list { + width: 456px; + min-height: 130px; + height: 340px; + position: absolute; + background-color: #ffffff; + border: #bfbfbf 1px solid; + padding-bottom: 5px; + overflow: auto; + z-index: 3; + text-align: left; + top: 50px; + left: 120px; + } + .no_match_message, + .no_match_reason { + width: 60%; + text-align: center; + margin: 10px auto; + } + + .no_match_reason { + color: #a0a0a0; + font-size: 14px; + } + + .search_match { + width: 200px; + height: 56px; + margin: 5px 5px 0 5px; + padding: 0 5px 5px 0; + border-radius: 3px; + display: inline-block; + background-color: #ffffff; + } + .search_match:hover { + background-color: #c5e7fa; + cursor: pointer; + } + .search_match.focused { + background-color: #7fc9f3; + } + .access_list { + background-color: #f2f2f2; + width: 520px; + height: 250px; + -moz-border-radius: 5px; + border-radius: 5px; + padding: 0 30px; + text-align: right; + overflow: auto; + } + + .access_list.no-add-access { + background-color: #f2f2f2; + height: 320px; + margin-top: 0px; + } + + .access_heading { + margin: 5px 125px 0 0; + padding: 0; + } + + .user_match_name { + font-size: 14px; + text-align: left; + width: 140px; + height: 40px; + font-family: 'Lucida Grande', sans-serif; + } + .user_match_student { + position: relative; + } + .user_match_student:after { + content: 'Student'; + position: absolute; + top: -10px; + left: 0; + font-size: 10px; + } + + .disclaimer { + color: #575757; + font-size: 14px; + margin-top: 10px; + } + + .user_perm { + border-bottom: #e1e1e1 1px solid; + margin: 5px 0; + margin: 0; + } + + .user_perm:last-child { + border: none; + } + + .user_perm { + width: 420px; + min-height: 64px; + vertical-align: middle; + position: relative; + margin-left: auto; + margin-right: auto; + display: block; + padding: 15px 0 0 0; + } + + .user_perm .options { + position: absolute; + right: 0; + width: 145px; + float: left; + text-align: left; + margin-top: 6px; + } + + .user_perm .options select { + display: block; + } + + .avatar { + margin-left: 40px; + } + + .avatar, + .user_match_avatar { + width: 50px; + height: 50px; + -moz-border-radius: 3px; + border-radius: 3px; + display: inline-block; + float: left; + margin-right: 10px; + margin: 5px; + } + + .user_perm_name { + width: 187px; + font-size: 15px; + text-align: left; + padding: 0 0 0 18px; + margin: 0; + font-weight: bold; + } + + .user_perm_name span { + display: block; + font-weight: normal; + } + + .user_perm_select { + width: 150px; + height: 20px; + margin-right: 33px; + text-align: left; + } + + #adding .options { + width: 450px; + margin: 10px 25px 0 0; + float: right; + } + #adding .user_perm_select { + margin-left: 8px; + } + + hr { + width: 100%; + border: 1px dotted; + margin: 10px 0; + } + + .user_perm_check { + float: left; + margin-bottom: 10px; + } + + .user_perm_message { + display: block; + text-align: left; + width: 426px; + } + #adding textarea { + resize: none; + } + + .options { + text-align: right; + } + + .owner { + display: none; + width: 145px; + text-align: left; + } + + .owner a { + display: block; + font-size: 13px; + } + + .transfer { + display: none; + } + + a.cancel-transfer { + display: inline !important; + } + + .transfer .do-transfer, + .transfer span { + display: none; + } + + .transfer span { + font-size: 14px; + } + + .owner .transfer-owner { + display: none; + } + + .undo { + display: none; + width: 145px; + text-align: left; + } + + .deleted .avatar { + opacity: 0.5; + } + + .deleted .name { + color: #5f5f5f; + } + + .user_perm .exp_change_view { + display: none; + text-align: right; + background: #f2f2f2; + + position: absolute; + top: 0; + right: 0; + height: 64px; + font-size: 12px; + top: -15px; + width: 225px; + padding-left: 16px; + + background: white; + border-radius: 1px; + box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.25); + } + + .user_perm .exp_change_view .access_expires { + text-align: left; + font-family: 'Lato'; + font-size: 13px; + line-height: 0; + padding-top: 6px; + } + + .user_perm label { + margin-right: 10px; + } + + .exp_change_view .exp_button { + font-family: Lato, arial, serif; + position: absolute; + top: 10px; + right: 10px; + } + + .exp_change_view .gray_min { + background: #aeaeae; + color: #545454; + } + .exp_change_view .gray_min:hover { + background: #919191; + } + .exp_change_view .green_min { + background: #b2cd43; + color: #4d5822; + } + .exp_change_view .green_min:hover { + background: #a2c129; + } + + .exp_change_view input[type='text'] { + display: none; + position: absolute; + width: 75px; + left: 145px; + } + + .demote_dialogue { + border-radius: 4px; + box-shadow: 0 2px 2px rgba(0, 0, 0, 0.3); + padding: 1em; + width: 310px; + font-family: 'Lucida Grande', sans-serif; + font-size: 9pt; + color: black; + text-align: center; + background: #fcdbdb; + height: 40px; + z-index: 10000; + position: absolute; + margin-left: 90px; + } + + .demote_dialogue .arrow { + background: url('../../../img/pink-arrow-left.png') no-repeat 0 center; + width: 13px; + height: 23px; + display: inline-block; + top: 0; + left: -13px; + position: absolute; + height: 100%; + } + + .demote_dialogue .warning { + display: block; + margin: -4px 0 6px 0; + text-align: center; + } + + .demote_dialogue .button { + text-align: center; + margin: 0 10px 0 10px; + } + + .demote_dialogue .red { + color: white; + font-size: 11pt; + padding: 5px 12px; + } + + .demote_dialogue .no_button { + font-family: Lato, arial, serif; + color: #555; + text-decoration: underline; + font-size: 12pt; + } } .ng-modal .green { @@ -53,528 +576,51 @@ text-decoration: none; } -.ng-modal.share { - text-align: center; -} - -.ng-modal.share #adding { - background-color: #f0f0f0; - border: none; - background: transparent; - position: absolute; - top: 0; -} - -.ng-modal.share .container { - left: 0; - top: 50px; - width: 580px; - height: 390px; - padding-top: 15px; -} - -.ng-modal.share .ng-modal-title { - top: 15px; - left: 27px; -} - -.ng-modal.share a.close { - display: block; - position: absolute; - right: 5px; - top: 4px; - margin: 4px; - background: url('../../../img/close.png') no-repeat; - text-indent: -10000px; - width: 19px; - height: 19px; -} -.ng-modal.share a.remove { - display: inline-block; - color: #bfbfbf; - text-decoration: none; - font-size: 15px; - position: absolute; - left: 5px; - top: 30px; -} -.ng-modal.share .name { - float: left; - font-weight: bold; - font-size: 15px; - margin-top: 8px; - text-align: left; - width: 160px; -} - -.ng-modal.share .name span { - display: block; - font-weight: normal; - text-align: left; -} - -.ng-modal.share .input_label { - font-size: 19px; - margin: 0 25px 0 0; - - position: absolute; -} - -.ng-modal.share #adding .input_label { - left: 20px; - top: 20px; -} - -.ng-modal.share #access input.user_add, -.ng-modal.share #access .placeholder { - width: 445px; - height: 30px; - padding-left: 10px; - z-index: 2; - border: solid 1px #c9c9c9; - font-size: 16px; - - position: absolute; - right: 0; -} - -.ng-modal.share #adding #input_holder { - width: 445px; - height: 30px; - padding-left: 10px; - z-index: 2; - border: solid 1px #c9c9c9; - font-size: 16px; - background: #fff; - position: absolute; - right: 0; - text-align: left; - top: 20px; - right: 20px; -} - -.ng-modal.share #adding #input_area { - display: inline-block; - outline: none; - min-width: 15px; - min-height: 30px; - font-family: 'Lucida Grande', sans-serif; - font-size: 16px; - padding-top: 5px; -} -.ng-modal.share #adding #input_area input.user_add { - width: 460px; - height: 30px; - border: none; - margin: 0; - padding: 0; - display: inline-block; -} - -.ng-modal.share #adding #input_area input.user_add::input-placeholder { - color: #343434; -} - -.ng-modal.share #adding #expArea { - display: block; -} -.ng-modal.share #adding #expArea #expSet { - display: none; - padding: 0; - margin: 0; -} -.ng-modal.share .expElement { - padding: 0; - margin: 0 5px; -} - -.ng-modal.share .changeRoleExpiration { - display: none; -} - -.ng-modal.share #adding #expArea .exp_disclaimer { - padding: 0; - margin: 10px 0; -} -.ng-modal.share #adding #expArea #roleExpiration { - width: 100px; -} - -.ng-modal.share .share_user_to_add { - display: inline-block; - font-size: 14px; - border-radius: 3px; - background-color: #fbfbfb; - border: 1px solid #aeaeae; - margin: 3px; - padding: 3px; - height: 30px; -} - .share_user_to_add_name { vertical-align: middle; padding: 0; margin: 0; } -.ng-modal.share .search_list { - width: 456px; - min-height: 130px; - height: 340px; - position: absolute; - background-color: #ffffff; - border: #bfbfbf 1px solid; - padding-bottom: 5px; - overflow: auto; - z-index: 3; - text-align: left; - top: 50px; - left: 120px; -} -.ng-modal.share .no_match_message, -.ng-modal.share .no_match_reason { - width: 60%; - text-align: center; - margin: 10px auto; -} - -.ng-modal.share .no_match_reason { - color: #a0a0a0; - font-size: 14px; -} - -.ng-modal.share .search_match { - width: 200px; - height: 56px; - margin: 5px 5px 0 5px; - padding: 0 5px 5px 0; - border-radius: 3px; - display: inline-block; - background-color: #ffffff; -} -.ng-modal.share .search_match:hover { - background-color: #c5e7fa; - cursor: pointer; -} -.ng-modal.share .search_match.focused { - background-color: #7fc9f3; -} -.ng-modal.share .access_list { - background-color: #f2f2f2; - width: 520px; - height: 250px; - -moz-border-radius: 5px; - border-radius: 5px; - margin-top: 50px; - padding: 0 30px; - text-align: right; - overflow: auto; -} - -.ng-modal.share .access_list.no-add-access { - background-color: #f2f2f2; - height: 320px; - margin-top: 0px; -} - -.ng-modal.share .access_heading { - margin: 5px 125px 0 0; - padding: 0; -} -.ng-modal.share .user_match_avatar { - float: left; - margin: 5px; -} -.ng-modal.share .user_match_name { - font-size: 14px; - text-align: left; - width: 140px; - height: 40px; - font-family: 'Lucida Grande', sans-serif; -} -.ng-modal.share .user_match_student { - position: relative; -} -.ng-modal.share .user_match_student:after { - content: 'Student'; - position: absolute; - top: -10px; - left: 0; - font-size: 10px; -} - -.ng-modal.share .disclaimer { - color: #575757; - font-size: 14px; - margin-top: 10px; -} - -.ng-modal.share .user_perm { - border-bottom: #e1e1e1 1px solid; - margin: 5px 0; - margin: 0; -} - -.ng-modal.share .user_perm:last-child { - border: none; -} - -.ng-modal.share .user_perm { - width: 420px; - min-height: 64px; - vertical-align: middle; - position: relative; - margin-left: auto; - margin-right: auto; - display: block; - padding: 15px 0 0 0; -} - -.ng-modal.share .user_perm .options { - position: absolute; - right: 0; - width: 145px; - float: left; - text-align: left; - margin-top: 6px; -} - -.ng-modal.share .user_perm .options select { - display: block; -} - -.ng-modal.share .avatar, -.user_perm_name, -.user-perm .options, -.user_perm_select, -.user_match_avatar, -.user_match_name { - display: inline-block; - vertical-align: middle; -} - -.ng-modal.share .avatar { - margin-left: 40px; -} - -.ng-modal.share .avatar, -.user_match_avatar { - width: 50px; - height: 50px; - -moz-border-radius: 3px; - border-radius: 3px; - display: inline-block; - float: left; - margin-right: 10px; -} - -.ng-modal.share .user_perm_name { - width: 187px; - font-size: 15px; - text-align: left; - padding: 0 0 0 18px; - margin: 0; - font-weight: bold; -} - -.ng-modal.share .user_perm_name span { - display: block; - font-weight: normal; -} - -.ng-modal.share .user_perm_select { - width: 150px; - height: 20px; - margin-right: 33px; - text-align: left; -} - -.ng-modal.share #adding .options { - width: 450px; - margin: 10px 25px 0 0; - float: right; -} -.ng-modal.share #adding .user_perm_select { - margin-left: 8px; -} - -.ng-modal.share hr { - width: 100%; - border: 1px dotted; - margin: 10px 0; -} - -.ng-modal.share .user_perm_check { - float: left; - margin-bottom: 10px; -} - -.ng-modal.share .user_perm_message { - display: block; - text-align: left; - width: 426px; -} -.ng-modal.share #adding textarea { - resize: none; -} - -.ng-modal.share .options { - text-align: right; -} - -.ng-modal.share .owner { - display: none; - width: 145px; - text-align: left; -} - -.ng-modal.share .owner a { - display: block; - font-size: 13px; -} - -.ng-modal.share .transfer { - display: none; -} - -.ng-modal.share a.cancel-transfer { - display: inline !important; -} - -.ng-modal.share .transfer .do-transfer, -.ng-modal.share .transfer span { - display: none; -} - -.ng-modal.share .transfer span { - font-size: 14px; -} - -.ng-modal.share .owner .transfer-owner { - display: none; -} - -.ng-modal.share .undo { - display: none; - width: 145px; - text-align: left; -} - -.ng-modal.share .deleted .avatar { - opacity: 0.5; -} - -.ng-modal.share .deleted .name { - color: #5f5f5f; -} - -.ng-modal.share .user_perm .exp_change_view { - display: none; - text-align: right; - background: #f2f2f2; - - position: absolute; - top: 0; - right: 0; - height: 64px; - font-size: 12px; - top: -15px; - width: 225px; - padding-left: 16px; - - background: white; - border-radius: 1px; - box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.25); -} - -.ng-modal.share .user_perm .exp_change_view .access_expires { - text-align: left; - font-family: 'Lato'; - font-size: 13px; - line-height: 0; - padding-top: 6px; -} - -.ng-modal.share .user_perm label { - margin-right: 10px; -} - -.ng-modal.share .exp_change_view .exp_button { - font-family: Lato, arial, serif; - position: absolute; - top: 10px; - right: 10px; -} - -.ng-modal.share .exp_change_view .gray_min { - background: #aeaeae; - color: #545454; -} -.ng-modal.share .exp_change_view .gray_min:hover { - background: #919191; -} -.ng-modal.share .exp_change_view .green_min { - background: #b2cd43; - color: #4d5822; -} -.ng-modal.share .exp_change_view .green_min:hover { - background: #a2c129; -} - -.ng-modal.share .exp_change_view input[type='text'] { - display: none; - position: absolute; - width: 75px; - left: 145px; -} - -.ng-modal.share .demote_dialogue { - border-radius: 4px; - box-shadow: 0 2px 2px rgba(0, 0, 0, 0.3); - padding: 1em; - width: 310px; - font-family: 'Lucida Grande', sans-serif; - font-size: 9pt; - color: black; - text-align: center; - background: #fcdbdb; - height: 40px; - z-index: 10000; - position: absolute; - margin-left: 90px; -} - -.ng-modal.share .demote_dialogue .arrow { - background: url('../../../img/pink-arrow-left.png') no-repeat 0 center; - width: 13px; - height: 23px; - display: inline-block; - top: 0; - left: -13px; - position: absolute; - height: 100%; -} - -.ng-modal.share .demote_dialogue .warning { - display: block; - margin: -4px 0 6px 0; - text-align: center; -} - -.ng-modal.share .demote_dialogue .button { - text-align: center; - margin: 0 10px 0 10px; -} - -.ng-modal.share .demote_dialogue .red { - color: white; - font-size: 11pt; - padding: 5px 12px; -} - -.ng-modal.share .demote_dialogue .no_button { - font-family: Lato, arial, serif; - color: #555; - text-decoration: underline; - font-size: 12pt; +.share { + .perm-text { + width: 100%; + display: inline-block; + } + + .exp-date { + padding: 0; + text-decoration: underline; + color: #545454; + font-size: 8pt; + cursor: pointer; + background: transparent; + border: none; + width: 85px; + + &:hover { + color: #969696; + } + + &:disabled { + cursor: default; + color: #c5c5c5; + text-decoration: none; + } + + &:focus { + outline: none; + background: #fff; + border: solid 1px #f7b64a; + } + } + + .expires { + font-size: 8pt; + } + + .remove-expiration { + font-size: 8pt; + cursor: pointer; + } } diff --git a/src/css/profile.scss b/src/css/profile.scss index 55f26288..04f17812 100644 --- a/src/css/profile.scss +++ b/src/css/profile.scss @@ -1,456 +1,460 @@ -.user section.page, -.user aside { - background: #fff; -} - -.user .container { - margin: 0 auto; - width: 970px; - position: relative; -} - -.user section.page, -.user aside { - border: rgba(0, 0, 0, 0.22) 1px solid; - box-shadow: 1px 3px 10px #888; -} - -.user section.page { - margin: 0 auto; - top: 0; - right: 0; - z-index: 100; - width: 575px; /*625px*/ - padding: 30px 60px 30px 145px; - background: url('../../../img/user_page_background.gif') 0 0 repeat-y; - background-color: #fff; - min-height: 400px; -} - -.user.search section.page { - margin: 0 auto; - top: 0; - right: 0; - z-index: 100; - width: 575px; /*625px*/ - padding: 30px 60px 30px 145px; - background: url('../../../img/repeat_border_diag_bottom.png') 0 100% repeat-x; - background-color: #fff; - min-height: 400px; -} - -.user h2 { - font-family: 'Lato', arial, serif; - font-weight: 700; - font-size: 38px; - border-bottom: dotted #000 1px; - margin: 0; - padding: 0 0 5px 0; -} - -.user h2 span { - font-size: 12px; - text-transform: uppercase; - color: #b2b2b2; - display: block; -} - -.user .avatar_big { - position: absolute; - top: 25px; - left: -25px; - background: #0093e7; - width: 115px; - height: inherit; - padding: 15px; - text-align: right; - color: #fff; - font-size: 10px; - line-height: 13px; - - box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.4); -} - -.user .avatar_big img { - padding-bottom: 5px; - padding-left: 10px; - width: 100px; - height: 100px; -} - -.user .avatar_big a:link, -.user .avatar_big a:visited, -.user .avatar_big a:active, -.user .avatar_big a:hover { - color: #fff; - text-decoration: underline; -} -.user .avatar_big a:hover { - color: #fff; - text-decoration: none; -} - -.user .avatar_big a.external { - padding-right: 18px; - background: url('../../../img/external_link_arrow.png') right center no-repeat; -} - -.user .rank { - position: absolute; - top: 25px; - right: 25px; - - font-size: 55px; - padding: 0; - margin: 0; - font-family: 'Lato', arial, serif; - font-weight: 600; - color: #0093e7; - line-height: 35px; - text-align: right; - margin-top: 5px; -} - -.user .rank a { - display: block; - font-size: 13px; - color: #969696; - text-decoration: underline; -} - -.user .rank a:hover { - color: #969696; - text-decoration: none; -} - -.user ul.user_information { - padding: 0; - font-size: 13px; - font-weight: bold; - font-family: 'Lato', arial, serif; -} - -.user ul.user_information li { - list-style-type: none; - display: inline-block; - margin-right: 10px; -} - -.user .user_type { - background: #f2f0d0; - color: #48483e; - border-radius: 3px; - text-transform: uppercase; - padding: 2px 6px; - font-size: 12px; -} - -.user .user_type.staff { - background: #ef0223; - color: #ffc4cc; -} - -.user h3 { - color: #000; - font-weight: 700; - font-family: 'Lato', arial, serif; - height: 25px; -} - -.user h3.loading { - background: transparent url('../../../img/loading_icon_black_on_white.gif') no-repeat bottom - center; -} - -.user .activity { - width: 575px; -} - -.user .no_logs { - background: #f7f7f7; - border-radius: 5px; - padding: 15px 20px; - text-align: center; - font-size: 15px; - color: #4a4a4a; -} - -.activity_logs_template { - display: none; -} - -.user .message_loading { - background: url('../../../img/profile_load_more_activity.gif'); - width: 16px; - height: 16px; - margin: 0 5px 0 0; - overflow: hidden; - text-indent: -99999px; - display: inline-block; -} - -.user .show_more_activity { - background: linear-gradient(center top, #f9f9f9 5%, #dddddd 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9f9f9', endColorstr='#dddddd'); - background-color: #dddddd; - border: 1px solid #cecece; - color: #777777; - font-family: 'Lato', arial, serif; - font-size: 14px; - font-weight: bold; - padding: 12px 0px; - text-align: center; - width: 572px; - display: block; - height: 19px; - text-shadow: 1px 1px 0px #ffffff; - text-decoration: none; - text-transform: uppercase; -} -.user .show_more_activity:hover { - background: linear-gradient(center top, #ededed 5%, #dfdfdf 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#dfdfdf'); - background-color: #ededed; - cursor: pointer; -} -.user .show_more_activity:active { - background: -moz-linear-gradient(center top, #dddddd 5%, #f9f9f9 100%); - background: -o-linear-gradient(center top, #dddddd 5%, #f9f9f9 100%); - background: -ms-linear-gradient(center top, #dddddd 5%, #f9f9f9 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#dddddd', endColorstr='#f9f9f9'); - background-color: #dddddd; -} - -.user .activity, -.user .activity ul { - padding: 0; -} -.user .activity li { - list-style-type: none; -} - -.user .activity_log { - margin: 0; - padding: 0; -} - -.user .activity_log:last-child a { - border: 0; -} - -.user .activity_log .score-link { - display: block; - min-height: 50px; - padding: 5px; - border-bottom: #d8d8d8 1px solid; - position: relative; -} - -.activity_log.complete .score-link:hover { - background: #eee; -} - -.user .activity_log .score { - display: block; - position: absolute; - left: 5px; - top: 10px; - width: 40px; - - background: #0093e7; - color: #fff; - border-radius: 3px; - font-size: 28px; - min-height: 28px; - font-weight: 700; - font-family: 'Lato', arial, serif; - text-align: center; - overflow: hidden; - - padding-top: 2px; - padding-bottom: 4px; - height: inherit; -} - -.activity_log.incomplete .score { - background: #ccc; -} - -.user .activity_log.perfect_score .score { - font-size: 21px; - padding-top: 6px; - padding-bottom: 6px; -} - -.user .activity_log .date { - display: block; - position: absolute; - right: 5px; - top: 5px; - text-align: right; - - color: #a4a4a4; - - font-size: 11px; - font-weight: 700; - font-family: 'Lato', arial, serif; -} - -.user .activity_log .widget { - display: block; - text-align: left; - font-family: 'LatoBlack', arial, serif; - color: #7b7b7b; - font-size: 11px; - font-weight: 700; - font-family: 'Lato', arial, serif; - text-transform: uppercase; - position: absolute; - left: 55px; - top: 10px; -} - -.user .activity_log .title { - font-family: 'Lato', arial, serif; - font-size: 17px; - position: absolute; - left: 55px; - top: 22px; -} - -.user .activity_log .status { - position: absolute; - top: 12px; - right: 1px; - color: #eee; - font-size: 30px; -} - -.user .main_navigation { - display: block; - position: absolute; - left: 0; - top: 175px; - width: 83px; - margin: 0; - padding: 0; - list-style-type: none; -} - -.user .main_navigation li a { - display: block; - width: 83px; - text-align: right; - font-size: 12px; - text-transform: uppercase; - font-family: 'Lato', arial, serif; - font-weight: 700; - padding-top: 10px; - padding-bottom: 10px; - padding-right: 30px; - color: #0093e7; - text-decoration: underline; - border: transparent 1px #fff; -} - -.user .main_navigation li.selected a { - background: #fff; - border: solid 1px #e6e6e6; - border-right: 0; - border-left: 0; - color: #333; - text-decoration: none; -} - -.user .main_navigation li a:hover { - text-decoration: none; -} -.user .main_navigation li.selected a:hover { - text-decoration: underline; -} - -.user .main_navigation li.selected.settings a { - background-image: url('../../../img/user_page_icons_sprite.png'); - background-repeat: no-repeat; - background-position: 89px -18px; -} - -.user .main_navigation li.selected.profile a { - background-image: url('../../../img/user_page_icons_sprite.png'); - background-repeat: no-repeat; - background-position: 89px 10px; -} - -.user .main_navigation li.settings a { - background-image: url('../../../img/user_page_icons_sprite.png'); - background-repeat: no-repeat; - background-position: 89px -75px; -} - -.user .main_navigation li.profile a { - background-image: url('../../../img/user_page_icons_sprite.png'); - background-repeat: no-repeat; - background-position: 89px -46px; -} - -.user.settings h3 { - margin-bottom: 0.5em; -} -.user.settings form label, -.user.settings form input { - cursor: pointer; -} -.user.settings form label { - font-size: 14px; -} - -.user.settings form ul { - font-size: 14px; - list-style-type: none; - padding: 0; - margin: 0; - margin-bottom: 3em; -} - -.user.settings form ul li { - display: block; - margin-bottom: 0.5em; -} - -.user.settings form ul a { - margin-left: 5px; - font-size: 8pt; -} - -.user.settings form .action_button { - margin-top: 3em; -} - -.user.settings form .action_button.disabled, -.user.settings form .action_button:disabled, -.user.settings form .action_button.disabled:hover { - background: #aeaeae; - background-image: linear-gradient(#e4e4e4, #b8b8b8); - border-color: #747474; - color: #545454; - cursor: default; - opacity: 0.5; -} - -.user.settings .email_exp { - color: #7f7f7f; - font-family: 'Lato', arial, serif; - font-size: 12px; - padding: 0 0 0 20px; - margin: 0; -} -.user.settings .email_exp .email_exp_addr { - color: #3f3f3f; -} - -.settingSaveAlert { - display: inline-block; - font-family: 'Lucida Grande', sans; - margin: 0; - padding: 0 0 0 20px; -} +.user section.page, +.user aside { + background: #fff; +} + +.user .container { + margin: 0 auto; + width: 970px; + position: relative; +} + +.user section.page, +.user aside { + border: rgba(0, 0, 0, 0.22) 1px solid; + box-shadow: 1px 3px 10px #888; +} + +.user section.page { + margin: 0 auto; + top: 0; + right: 0; + z-index: 100; + width: 575px; /*625px*/ + padding: 30px 60px 30px 145px; + background: url('../../../img/user_page_background.gif') 0 0 repeat-y; + background-color: #fff; + min-height: 400px; +} + +.user.search section.page { + margin: 0 auto; + top: 0; + right: 0; + z-index: 100; + width: 575px; /*625px*/ + padding: 30px 60px 30px 145px; + background: url('../../../img/repeat_border_diag_bottom.png') 0 100% repeat-x; + background-color: #fff; + min-height: 400px; +} + +.user h2 { + font-family: 'Lato', arial, serif; + font-weight: 700; + font-size: 38px; + border-bottom: dotted #000 1px; + margin: 0; + padding: 0 0 5px 0; +} + +.user h2 span { + font-size: 12px; + text-transform: uppercase; + color: #b2b2b2; + display: block; +} + +.user .avatar_big { + position: absolute; + top: 25px; + left: -25px; + background: #0093e7; + width: 115px; + height: inherit; + padding: 15px; + text-align: right; + color: #fff; + font-size: 10px; + line-height: 13px; + + box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.4); +} + +.user .avatar_big img { + padding-bottom: 5px; + padding-left: 10px; + width: 100px; + height: 100px; +} + +.user .avatar_big a:link, +.user .avatar_big a:visited, +.user .avatar_big a:active, +.user .avatar_big a:hover { + color: #fff; + text-decoration: underline; +} +.user .avatar_big a:hover { + color: #fff; + text-decoration: none; +} + +.user .avatar_big a.external { + padding-right: 18px; + background: url('../../../img/external_link_arrow.png') right center no-repeat; +} + +.user .rank { + position: absolute; + top: 25px; + right: 25px; + + font-size: 55px; + padding: 0; + margin: 0; + font-family: 'Lato', arial, serif; + font-weight: 600; + color: #0093e7; + line-height: 35px; + text-align: right; + margin-top: 5px; +} + +.user .rank a { + display: block; + font-size: 13px; + color: #969696; + text-decoration: underline; +} + +.user .rank a:hover { + color: #969696; + text-decoration: none; +} + +.user ul.user_information { + padding: 0; + font-size: 13px; + font-weight: bold; + font-family: 'Lato', arial, serif; +} + +.user ul.user_information li { + list-style-type: none; + display: inline-block; + margin-right: 10px; +} + +.user .user_type { + background: #f2f0d0; + color: #48483e; + border-radius: 3px; + text-transform: uppercase; + padding: 2px 6px; + font-size: 12px; +} + +.user .user_type.staff { + background: #ef0223; + color: #ffc4cc; +} + +.user h3 { + color: #000; + font-weight: 700; + font-family: 'Lato', arial, serif; + height: 25px; +} + +.user h3.loading { + background: transparent url('../../../img/loading_icon_black_on_white.gif') no-repeat bottom + center; +} + +.user .activity { + width: 575px; +} + +.user .no_logs { + background: #f7f7f7; + border-radius: 5px; + padding: 15px 20px; + text-align: center; + font-size: 15px; + color: #4a4a4a; +} + +.activity_logs_template { + display: none; +} + +.user .message_loading { + background: url('../../../img/profile_load_more_activity.gif'); + width: 16px; + height: 16px; + margin: 0 5px 0 0; + overflow: hidden; + text-indent: -99999px; + display: inline-block; +} + +.user .show_more_activity { + background: linear-gradient(center top, #f9f9f9 5%, #dddddd 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9f9f9', endColorstr='#dddddd'); + background-color: #dddddd; + border: 1px solid #cecece; + color: #777777; + font-family: 'Lato', arial, serif; + font-size: 14px; + font-weight: bold; + padding: 12px 0px; + text-align: center; + width: 572px; + display: block; + height: 19px; + text-shadow: 1px 1px 0px #ffffff; + text-decoration: none; + text-transform: uppercase; +} +.user .show_more_activity:hover { + background: linear-gradient(center top, #ededed 5%, #dfdfdf 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#dfdfdf'); + background-color: #ededed; + cursor: pointer; +} +.user .show_more_activity:active { + background: -moz-linear-gradient(center top, #dddddd 5%, #f9f9f9 100%); + background: -o-linear-gradient(center top, #dddddd 5%, #f9f9f9 100%); + background: -ms-linear-gradient(center top, #dddddd 5%, #f9f9f9 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#dddddd', endColorstr='#f9f9f9'); + background-color: #dddddd; +} + +.user .activity, +.user .activity ul { + padding: 0; +} +.user .activity li { + list-style-type: none; +} + +.user .activity_log { + margin: 0; + padding: 0; +} + +.user .activity_log:last-child a { + border: 0; +} + +.user .activity_log .score-link { + display: block; + min-height: 50px; + padding: 5px; + border-bottom: #d8d8d8 1px solid; + position: relative; +} + +.activity_log.complete .score-link:hover { + background: #eee; +} + +.user .activity_log .score { + display: block; + position: absolute; + left: 5px; + top: 10px; + width: 40px; + + background: #0093e7; + color: #fff; + border-radius: 3px; + font-size: 28px; + min-height: 28px; + font-weight: 700; + font-family: 'Lato', arial, serif; + text-align: center; + overflow: hidden; + + padding-top: 2px; + padding-bottom: 4px; + height: inherit; +} + +.activity_log.incomplete .score { + background: #ccc; +} + +.user .activity_log.perfect_score .score { + font-size: 21px; + padding-top: 6px; + padding-bottom: 6px; +} + +.user .activity_log .date { + display: block; + position: absolute; + right: 5px; + top: 5px; + text-align: right; + + color: #a4a4a4; + + font-size: 11px; + font-weight: 700; + font-family: 'Lato', arial, serif; +} + +.user .activity_log .widget { + display: block; + text-align: left; + font-family: 'LatoBlack', arial, serif; + color: #7b7b7b; + font-size: 11px; + font-weight: 700; + font-family: 'Lato', arial, serif; + text-transform: uppercase; + position: absolute; + left: 55px; + top: 10px; +} + +.user .activity_log .title { + font-family: 'Lato', arial, serif; + font-size: 17px; + position: absolute; + left: 55px; + top: 22px; +} + +.user .activity_log .status { + position: absolute; + top: 12px; + right: 1px; + color: #eee; + font-size: 30px; +} + +.user .main_navigation { + display: block; + position: absolute; + left: 0; + top: 175px; + width: 83px; + margin: 0; + padding: 0; + list-style-type: none; +} + +.user .main_navigation li a { + display: block; + width: 83px; + text-align: right; + font-size: 12px; + text-transform: uppercase; + font-family: 'Lato', arial, serif; + font-weight: 700; + padding-top: 10px; + padding-bottom: 10px; + padding-right: 30px; + color: #0093e7; + text-decoration: underline; + border: transparent 1px #fff; +} + +.user .main_navigation li.selected a { + background: #fff; + border: solid 1px #e6e6e6; + border-right: 0; + border-left: 0; + color: #333; + text-decoration: none; +} + +.user .main_navigation li a:hover { + text-decoration: none; +} +.user .main_navigation li.selected a:hover { + text-decoration: underline; +} + +.user .main_navigation li.selected.settings a { + background-image: url('../../../img/user_page_icons_sprite.png'); + background-repeat: no-repeat; + background-position: 89px -18px; +} + +.user .main_navigation li.selected.profile a { + background-image: url('../../../img/user_page_icons_sprite.png'); + background-repeat: no-repeat; + background-position: 89px 10px; +} + +.user .main_navigation li.settings a { + background-image: url('../../../img/user_page_icons_sprite.png'); + background-repeat: no-repeat; + background-position: 89px -75px; +} + +.user .main_navigation li.profile a { + background-image: url('../../../img/user_page_icons_sprite.png'); + background-repeat: no-repeat; + background-position: 89px -46px; +} + +.user.settings h3 { + margin-bottom: 0.5em; +} +.user.settings form label, +.user.settings form input { + cursor: pointer; +} +.user.settings form label { + font-size: 14px; +} + +.user.settings form ul { + font-size: 14px; + list-style-type: none; + padding: 0; + margin: 0; + margin-bottom: 3em; +} + +.user.settings form ul li { + display: block; + margin-bottom: 0.5em; +} + +.user.settings form ul a { + margin-left: 5px; + font-size: 8pt; +} + +.user.settings form .action_button { + margin-top: 3em; + + &.no_top_margin { + margin-top: 0; + } +} + +.user.settings form .action_button.disabled, +.user.settings form .action_button:disabled, +.user.settings form .action_button.disabled:hover { + background: #aeaeae; + background-image: linear-gradient(#e4e4e4, #b8b8b8); + border-color: #747474; + color: #545454; + cursor: default; + opacity: 0.5; +} + +.user.settings .email_exp { + color: #7f7f7f; + font-family: 'Lato', arial, serif; + font-size: 12px; + padding: 0 0 0 20px; + margin: 0; +} +.user.settings .email_exp .email_exp_addr { + color: #3f3f3f; +} + +.settingSaveAlert { + display: inline-block; + font-family: 'Lucida Grande', sans; + margin: 0; + padding: 0 0 0 20px; +} diff --git a/src/css/util-lti-picker.scss b/src/css/util-lti-picker.scss index c0cbe22d..33200c6a 100644 --- a/src/css/util-lti-picker.scss +++ b/src/css/util-lti-picker.scss @@ -42,6 +42,11 @@ header { margin-bottom: 2em; } +.help-container { + margin: 0 auto; + width: 500px; +} + .lti-error header, .selectWidget header, .widgetSelected header, diff --git a/src/js/admin.js b/src/js/admin.js new file mode 100644 index 00000000..e01ec636 --- /dev/null +++ b/src/js/admin.js @@ -0,0 +1,5 @@ +require('./controllers/ctrl-admin-user') +require('./controllers/ctrl-admin-widget') +require('./services/srv-admin') + +// Materia Server admin interface pages diff --git a/src/js/author.js b/src/js/author.js new file mode 100644 index 00000000..04e85029 --- /dev/null +++ b/src/js/author.js @@ -0,0 +1,27 @@ +require('./controllers/ctrl-widget-creator') +require('./controllers/ctrl-my-widgets-export') +require('./controllers/ctrl-lti-resource-selection') +require('./controllers/ctrl-media-import') +require('./controllers/ctrl-my-widgets') +require('./controllers/ctrl-question-import') +require('./controllers/ctrl-my-widgets-collaboration') +require('./controllers/ctrl-my-widgets-selected') +require('./controllers/ctrl-my-widgets-settings') +require('./directives/dir-beardable') +require('./directives/dir-datatable') +require('./directives/dir-date-validation') +require('./directives/dir-filedropper') +require('./directives/dir-fileonchange') +require('./directives/dir-ngenter') +require('./directives/dir-scoredata') +require('./directives/dir-scoregraph') +require('./directives/dir-scoretable') +require('./filters/filter-escape') +require('./filters/filter-highlight') +require('./filters/filter-multiword') +require('./materia/materia.mywidgets.statistics') +require('./services/srv-api') +require('./services/srv-beard') +require('./services/srv-scores') + +// Materia Server scripts for creating content: my widgets, widget authoring, lti picker diff --git a/src/js/materia-constants.js b/src/js/common/materia-constants.js similarity index 86% rename from src/js/materia-constants.js rename to src/js/common/materia-constants.js index e24c4dc0..a9c37116 100644 --- a/src/js/materia-constants.js +++ b/src/js/common/materia-constants.js @@ -5,14 +5,14 @@ app.constant('PLAYER', { RETRY_LIMIT: 15, // When the logs fail to send, retry how many times before switching to slow mode? RETRY_FAST: 1000, RETRY_SLOW: 10000, - EMBED_TARGET: 'container' + EMBED_TARGET: 'container', }) app.constant('OBJECT_TYPES', { QUESTION: 1, ASSET: 2, WIDGET: 3, - WIDGET_INSTANCE: 4 + WIDGET_INSTANCE: 4, }) app.constant('ACCESS', { @@ -23,5 +23,6 @@ app.constant('ACCESS', { EDIT: 20, COPY: 25, FULL: 30, - SHARE: 35 + SHARE: 35, + SU: 90, }) diff --git a/src/js/materia-constants.test.js b/src/js/common/materia-constants.test.js similarity index 86% rename from src/js/materia-constants.test.js rename to src/js/common/materia-constants.test.js index 65b50fe6..aa2ba52e 100644 --- a/src/js/materia-constants.test.js +++ b/src/js/common/materia-constants.test.js @@ -8,15 +8,15 @@ describe('materia constants', () => { QUESTION: 1, ASSET: 2, WIDGET: 3, - WIDGET_INSTANCE: 4 + WIDGET_INSTANCE: 4, } var _OBJECT_TYPES inject([ 'OBJECT_TYPES', - OBJECT_TYPES => { + (OBJECT_TYPES) => { _OBJECT_TYPES = OBJECT_TYPES - } + }, ]) expect(_OBJECT_TYPES).toMatchObject(ex) }) @@ -30,15 +30,15 @@ describe('materia constants', () => { EDIT: 20, COPY: 25, FULL: 30, - SHARE: 35 + SHARE: 35, } var _ACCESS inject([ 'ACCESS', - ACCESS => { + (ACCESS) => { _ACCESS = ACCESS - } + }, ]) expect(_ACCESS).toMatchObject(ex) }) @@ -49,15 +49,15 @@ describe('materia constants', () => { RETRY_LIMIT: 15, RETRY_FAST: 1000, RETRY_SLOW: 10000, - EMBED_TARGET: 'container' + EMBED_TARGET: 'container', } var _PLAYER inject([ 'PLAYER', - PLAYER => { + (PLAYER) => { _PLAYER = PLAYER - } + }, ]) expect(_PLAYER).toMatchObject(ex) }) @@ -69,9 +69,9 @@ describe('materia constants', () => { expect(() => { inject([ 'FAKE', - FAKE => { + (FAKE) => { _FAKE = FAKE - } + }, ]) }).toThrowError(/\$injector:unpr/) }) diff --git a/src/js/materia-namespace.js b/src/js/common/materia-namespace.js similarity index 82% rename from src/js/materia-namespace.js rename to src/js/common/materia-namespace.js index c674adbd..ed10d005 100644 --- a/src/js/materia-namespace.js +++ b/src/js/common/materia-namespace.js @@ -9,11 +9,11 @@ // } // } // } -window.Namespace = ns => { +window.Namespace = (ns) => { let namespaces = ns.split('.') let w = window - namespaces.forEach(namespace => { + namespaces.forEach((namespace) => { w[namespace] = w[namespace] || {} w = w[namespace] // recurse down }) diff --git a/src/js/materia-namespace.test.js b/src/js/common/materia-namespace.test.js similarity index 100% rename from src/js/materia-namespace.test.js rename to src/js/common/materia-namespace.test.js diff --git a/src/js/controllers/__snapshots__/ctrl-media-import.test.js.snap b/src/js/controllers/__snapshots__/ctrl-media-import.test.js.snap index 2ed905c2..59a3ff57 100644 --- a/src/js/controllers/__snapshots__/ctrl-media-import.test.js.snap +++ b/src/js/controllers/__snapshots__/ctrl-media-import.test.js.snap @@ -1,13 +1,13 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`mediaImportCtrl announces readyForDirectUpload via postmessage before loading media 1`] = ` +exports[`MediaImportCtrl announces readyForDirectUpload via postmessage before loading media 1`] = ` Array [ "{\\"type\\":\\"readyForDirectUpload\\",\\"source\\":\\"media-importer\\",\\"data\\":\\"\\"}", "*", ] `; -exports[`mediaImportCtrl grabs a list of valid image assets 1`] = ` +exports[`MediaImportCtrl grabs a list of valid image assets 1`] = ` Array [ Object { "created": "6/14/2017", diff --git a/src/js/controllers/__snapshots__/ctrl-widget-catalog.test.js.snap b/src/js/controllers/__snapshots__/ctrl-widget-catalog.test.js.snap index 6d61f89d..8c65be8f 100644 --- a/src/js/controllers/__snapshots__/ctrl-widget-catalog.test.js.snap +++ b/src/js/controllers/__snapshots__/ctrl-widget-catalog.test.js.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`widgetCatalogController defines expected scope vars 1`] = ` +exports[`WidgetCatalogCtrl defines expected scope vars 1`] = ` Array [ "$watch", "$on", @@ -23,7 +23,7 @@ Array [ ] `; -exports[`widgetCatalogController implements url based filters and search on initial load 1`] = ` +exports[`WidgetCatalogCtrl implements url based filters and search on initial load 1`] = ` Array [ "$watch", "$on", @@ -46,7 +46,7 @@ Array [ ] `; -exports[`widgetCatalogController implements url based filters and search on initial load 2`] = ` +exports[`WidgetCatalogCtrl implements url based filters and search on initial load 2`] = ` Object { "SuPpOrTeD FoUr!!": Object { "clean": "su_pp_or_te_d_fo_ur", @@ -86,7 +86,7 @@ Object { } `; -exports[`widgetCatalogController initializes with no filters and search on initial load 1`] = ` +exports[`WidgetCatalogCtrl initializes with no filters and search on initial load 1`] = ` Array [ "$watch", "$on", @@ -109,7 +109,7 @@ Array [ ] `; -exports[`widgetCatalogController initializes with no filters and search on initial load 2`] = ` +exports[`WidgetCatalogCtrl initializes with no filters and search on initial load 2`] = ` Object { "SuPpOrTeD FoUr!!": Object { "clean": "su_pp_or_te_d_fo_ur", @@ -149,7 +149,7 @@ Object { } `; -exports[`widgetCatalogController properly generates clean filter names 1`] = ` +exports[`WidgetCatalogCtrl properly generates clean filter names 1`] = ` Array [ "feature1", "feature3", @@ -161,7 +161,7 @@ Array [ ] `; -exports[`widgetCatalogController toggling on a filter updates scope 1`] = ` +exports[`WidgetCatalogCtrl toggling on a filter updates scope 1`] = ` Array [ Object { "dir": "mockDir1", diff --git a/src/js/controllers/ctrl-admin-user.js b/src/js/controllers/ctrl-admin-user.js index 22bdabb6..e0034296 100644 --- a/src/js/controllers/ctrl-admin-user.js +++ b/src/js/controllers/ctrl-admin-user.js @@ -1,5 +1,5 @@ const app = angular.module('materia') -app.controller('adminUserController', function(Please, $scope, $window, adminSrv, userServ) { +app.controller('AdminUserController', function (Please, $scope, $window, AdminSrv, UserServ) { let lastSearch = '' const _sortNames = (userA, userB) => { @@ -8,13 +8,13 @@ app.controller('adminUserController', function(Please, $scope, $window, adminSrv return nameA.localeCompare(nameB) } - const _getIconUrls = instances => { - instances.forEach(i => { + const _getIconUrls = (instances) => { + instances.forEach((i) => { i.icon = Materia.Image.iconUrl(i.widget.dir, 60) }) } - const _processPlayed = instances => { + const _processPlayed = (instances) => { const _pre = [] for (let play of instances) { @@ -24,17 +24,17 @@ app.controller('adminUserController', function(Please, $scope, $window, adminSrv name: play.name, widget: play.widget, icon: Materia.Image.iconUrl(play.widget.dir, 60), - plays: [] + plays: [], } } _pre[play.id].plays.push(play) } // convert to an array - return Object.keys(_pre).map(i => _pre[i]) + return Object.keys(_pre).map((i) => _pre[i]) } - const search = nameOrFragment => { + const _searchFor = (nameOrFragment) => { if (nameOrFragment === lastSearch) { return } @@ -54,7 +54,7 @@ app.controller('adminUserController', function(Please, $scope, $window, adminSrv const inputArray = nameOrFragment.split(',') nameOrFragment = inputArray[inputArray.length - 1] - adminSrv.searchUsers(nameOrFragment).then(result => { + AdminSrv.searchUsers(nameOrFragment).then((result) => { $scope.searchResults.searching = false if (result && result.halt) { alert(result.msg) @@ -67,8 +67,8 @@ app.controller('adminUserController', function(Please, $scope, $window, adminSrv matches = result } - matches.forEach(user => { - user.gravatar = userServ.getAvatar(user, 50) + matches.forEach((user) => { + user.gravatar = UserServ.getAvatar(user, 50) }) matches = matches.sort(_sortNames) @@ -79,8 +79,8 @@ app.controller('adminUserController', function(Please, $scope, $window, adminSrv }) } - const searchMatchClick = user => { - adminSrv.lookupUser(user.id).then(data => { + const searchMatchClick = (user) => { + AdminSrv.lookupUser(user.id).then((data) => { $scope.inputs.userSearchInput = '' $scope.selectedUser = user $scope.additionalData = data @@ -97,10 +97,10 @@ app.controller('adminUserController', function(Please, $scope, $window, adminSrv email: u.email, is_student: u.is_student === 'true' || u.is_student === true, notify: u.profile_fields.notify, - useGravatar: u.profile_fields.useGravatar === 'true' || u.profile_fields.useGravatar === true + useGravatar: u.profile_fields.useGravatar === 'true' || u.profile_fields.useGravatar === true, } - adminSrv.saveUser(update).then(response => { + AdminSrv.saveUser(update).then((response) => { let errors = [] for (let prop in response) { const stat = response[prop] @@ -125,14 +125,20 @@ app.controller('adminUserController', function(Please, $scope, $window, adminSrv none: true, show: false, searching: false, - matches: [] + matches: [], } $scope.deselectUser = deselectUser $scope.save = save $scope.searchMatchClick = searchMatchClick - $scope.search = search + + /* develblock:start */ + // these method are exposed for testing + $scope.jestTest = { + _searchFor, + } + /* develblock:end */ // initialize deselectUser() - $scope.$watch('inputs.userSearchInput', input => $scope.search(input)) + $scope.$watch('inputs.userSearchInput', (input) => _searchFor(input)) }) diff --git a/src/js/controllers/ctrl-admin-user.test.js b/src/js/controllers/ctrl-admin-user.test.js index b1ba6a8e..a8bced02 100644 --- a/src/js/controllers/ctrl-admin-user.test.js +++ b/src/js/controllers/ctrl-admin-user.test.js @@ -1,6 +1,6 @@ -describe('adminUserController', function() { - var adminSrv - var _userServ +describe('AdminUserController', function () { + var AdminSrv + var _UserServ var sendMock var postMock var getMock @@ -19,32 +19,32 @@ describe('adminUserController', function() { } beforeEach(() => { - _userServ = { - getAvatar: jest.fn(() => 'avatar') + _UserServ = { + getAvatar: jest.fn(() => 'avatar'), } mockPlease = { $apply: jest.fn() } let app = angular.module('materia') app.factory('Please', () => mockPlease) - app.factory('userServ', () => _userServ) + app.factory('UserServ', () => _UserServ) // MOCK $window $window = { addEventListener: jest.fn(), location: { - reload: jest.fn() - } + reload: jest.fn(), + }, } app.factory('$window', () => $window) - require('../materia-namespace') - require('../materia-constants') + require('../common/materia-namespace') + require('../common/materia-constants') require('../services/srv-admin') require('./ctrl-admin-user') - inject((_$controller_, _$q_, _adminSrv_, _$rootScope_) => { + inject((_$controller_, _$q_, _AdminSrv_, _$rootScope_) => { $controller = _$controller_ $q = _$q_ - adminSrv = _adminSrv_ + AdminSrv = _AdminSrv_ $rootScope = _$rootScope_ }) @@ -57,19 +57,18 @@ describe('adminUserController', function() { it('defines expected scope vars', () => { var $scope = { $watch: jest.fn() } - var controller = $controller('adminUserController', { $scope }) + var controller = $controller('AdminUserController', { $scope }) expect($scope.inputs).toMatchObject({ userSearchInput: '' }) expect($scope.searchResults).toMatchObject({ none: true, show: false, searching: false, - matches: [] + matches: [], }) expect($scope.selectedUser).toBeNull() expect($scope.additionalData).toBeNull() expect($scope.errorMessage).toMatchObject([]) - expect(typeof $scope.search).toBe('function') expect(typeof $scope.searchMatchClick).toBe('function') expect(typeof $scope.save).toBe('function') expect(typeof $scope.deselectUser).toBe('function') @@ -77,14 +76,14 @@ describe('adminUserController', function() { it('defines watches search input changes', () => { var $scope = { $watch: jest.fn() } - var controller = $controller('adminUserController', { $scope }) + var controller = $controller('AdminUserController', { $scope }) expect($scope.$watch).toHaveBeenCalledWith('inputs.userSearchInput', expect.anything()) }) it('deselectUser resets scope vars', () => { var $scope = { $watch: jest.fn() } - var controller = $controller('adminUserController', { $scope }) + var controller = $controller('AdminUserController', { $scope }) $scope.errorMessage = 'test' $scope.selectedUser = 'test' $scope.additionalData = 'test' @@ -98,7 +97,7 @@ describe('adminUserController', function() { it('searchMatchClick looks up a user and updates the scope', () => { let lookupUser = { instances_available: [{ icon: 3, widget: { dir: '999' } }], - instances_played: [{ id: 9, name: 'test', widget: { dir: 'somedir' } }] + instances_played: [{ id: 9, name: 'test', widget: { dir: 'somedir' } }], } let instances_played = [ { @@ -110,16 +109,16 @@ describe('adminUserController', function() { id: 9, name: 'test', widget: { - dir: 'somedir' - } - } + dir: 'somedir', + }, + }, ], - widget: { dir: 'somedir' } - } + widget: { dir: 'somedir' }, + }, ] var $scope = { $watch: jest.fn(), $apply: jest.fn() } - var controller = $controller('adminUserController', { $scope }) + var controller = $controller('AdminUserController', { $scope }) mockJsonPromiseOnce(getMock, lookupUser) $scope.searchMatchClick({ id: 5 }) @@ -131,7 +130,7 @@ describe('adminUserController', function() { it('save sends args to service and updates scope', () => { var $scope = { $watch: jest.fn(), $apply: jest.fn() } - var controller = $controller('adminUserController', { $scope }) + var controller = $controller('AdminUserController', { $scope }) $scope.selectedUser = { id: 1, @@ -139,8 +138,8 @@ describe('adminUserController', function() { is_student: 'false', profile_fields: { notify: 'notify', - useGravatar: 'true' - } + useGravatar: 'true', + }, } mockJsonPromiseOnce(postMock, { id: 1 }) @@ -151,7 +150,7 @@ describe('adminUserController', function() { id: 1, is_student: false, notify: 'notify', - useGravatar: true + useGravatar: true, }) expect($scope.errorMessage).toMatchObject([1]) expect(mockPlease.$apply).toHaveBeenCalledTimes(1) @@ -159,7 +158,7 @@ describe('adminUserController', function() { it('save sets errors', () => { var $scope = { $watch: jest.fn(), $apply: jest.fn() } - var controller = $controller('adminUserController', { $scope }) + var controller = $controller('AdminUserController', { $scope }) $scope.selectedUser = { id: 1, @@ -167,8 +166,8 @@ describe('adminUserController', function() { is_student: false, profile_fields: { notify: 'notify', - useGravatar: 'true' - } + useGravatar: 'true', + }, } mockJsonPromiseOnce(postMock, { id: 'this was an error' }) @@ -180,38 +179,38 @@ describe('adminUserController', function() { it('search sends args to service and updates scope', () => { var $scope = { $watch: jest.fn(), $apply: jest.fn() } - var controller = $controller('adminUserController', { $scope }) + var controller = $controller('AdminUserController', { $scope }) mockJsonPromiseOnce(getMock, { id: 1 }) - $scope.search('one') + $scope.jestTest._searchFor('one') expect(getMock).toHaveBeenCalledTimes(1) expect(getMock).toHaveBeenLastCalledWith('/api/admin/user_search/one') mockJsonPromiseOnce(getMock, { id: 1 }) - $scope.search('one two three') + $scope.jestTest._searchFor('one two three') expect(getMock).toHaveBeenCalledTimes(2) expect(getMock).toHaveBeenLastCalledWith('/api/admin/user_search/one%20two%20three') }) it('search sends doesnt search twice with the same input', () => { var $scope = { $watch: jest.fn(), $apply: jest.fn() } - var controller = $controller('adminUserController', { $scope }) + var controller = $controller('AdminUserController', { $scope }) mockJsonPromiseOnce(getMock, { id: 1 }) mockJsonPromiseOnce(getMock, { id: 1 }) - $scope.search('one') - $scope.search('one') + $scope.jestTest._searchFor('one') + $scope.jestTest._searchFor('one') expect(getMock).toHaveBeenCalledTimes(1) }) it('search responds to api errors with an alert and a location change', () => { global.alert = jest.fn() var $scope = { $watch: jest.fn(), $apply: jest.fn() } - var controller = $controller('adminUserController', { $scope }) + var controller = $controller('AdminUserController', { $scope }) mockJsonPromiseOnce(getMock, { halt: true, msg: 'oh no' }) - $scope.search('one') + $scope.jestTest._searchFor('one') $rootScope.$digest() // processes promise expect(alert).toHaveBeenCalledWith('oh no') expect($window.location.reload).toHaveBeenCalledWith(true) @@ -219,10 +218,10 @@ describe('adminUserController', function() { it('search handles no matches', () => { var $scope = { $watch: jest.fn(), $apply: jest.fn() } - var controller = $controller('adminUserController', { $scope }) + var controller = $controller('AdminUserController', { $scope }) mockJsonPromiseOnce(getMock, []) - $scope.search('one') + $scope.jestTest._searchFor('one') $rootScope.$digest() // processes promise expect($scope.searchResults.none).toBe(true) expect($scope.searchResults.show).toBe(true) @@ -231,11 +230,11 @@ describe('adminUserController', function() { it('search short cuts empty string', () => { var $scope = { $watch: jest.fn(), $apply: jest.fn() } - var controller = $controller('adminUserController', { $scope }) + var controller = $controller('AdminUserController', { $scope }) mockJsonPromiseOnce(getMock, []) - $scope.search('one') - $scope.search('') + $scope.jestTest._searchFor('one') + $scope.jestTest._searchFor('') $rootScope.$digest() // processes promise expect($scope.searchResults.none).toBe(true) expect($scope.searchResults.show).toBe(false) @@ -244,23 +243,26 @@ describe('adminUserController', function() { it('search shows sorted matches', () => { var $scope = { $watch: jest.fn(), $apply: jest.fn() } - var controller = $controller('adminUserController', { $scope }) + var controller = $controller('AdminUserController', { $scope }) let expected = [ { first: 'a', gravatar: 'avatar', - last: 'a' + last: 'a', }, { first: 'z', gravatar: 'avatar', - last: 'z' - } + last: 'z', + }, ] - mockJsonPromiseOnce(getMock, [{ first: 'z', last: 'z' }, { first: 'a', last: 'a' }]) - $scope.search('one') + mockJsonPromiseOnce(getMock, [ + { first: 'z', last: 'z' }, + { first: 'a', last: 'a' }, + ]) + $scope.jestTest._searchFor('one') $rootScope.$digest() // processes promise expect($scope.searchResults.none).toBe(false) expect($scope.searchResults.show).toBe(true) diff --git a/src/js/controllers/ctrl-admin-widget.js b/src/js/controllers/ctrl-admin-widget.js index 01845d06..35b8e05c 100644 --- a/src/js/controllers/ctrl-admin-widget.js +++ b/src/js/controllers/ctrl-admin-widget.js @@ -1,6 +1,6 @@ const app = angular.module('materia') -app.controller('adminWidgetController', function($scope, Please, adminSrv) { - const _save = widget => { +app.controller('AdminWidgetController', function ($scope, Please, AdminSrv) { + const _save = (widget) => { const update = { id: widget.id, clean_name: widget.clean_name, @@ -11,10 +11,10 @@ app.controller('adminWidgetController', function($scope, Please, adminSrv) { restrict_publish: widget.restrict_publish, about: widget.meta_data.about, excerpt: widget.meta_data.excerpt, - demo: widget.meta_data.demo + demo: widget.meta_data.demo, } - adminSrv.saveWidget(update).then(response => { + AdminSrv.saveWidget(update).then((response) => { widget.errorMessage = [] for (let prop in response) { const stat = response[prop] @@ -30,8 +30,8 @@ app.controller('adminWidgetController', function($scope, Please, adminSrv) { } const _displayWidgets = () => - adminSrv.getWidgets().then(widgets => { - widgets.forEach(w => { + AdminSrv.getWidgets().then((widgets) => { + widgets.forEach((w) => { w.icon = Materia.Image.iconUrl(w.dir, 60) }) @@ -39,7 +39,7 @@ app.controller('adminWidgetController', function($scope, Please, adminSrv) { Please.$apply() }) - const _onUploaderChange = e => { + const _onUploaderChange = (e) => { $scope.selectedFileName = 'No File Selected' if (e.target.files && e.target.files.length > 0) { $scope.selectedFileName = e.target.files[0].name diff --git a/src/js/controllers/ctrl-admin-widget.test.js b/src/js/controllers/ctrl-admin-widget.test.js index 8537acc9..4b863e23 100644 --- a/src/js/controllers/ctrl-admin-widget.test.js +++ b/src/js/controllers/ctrl-admin-widget.test.js @@ -1,5 +1,5 @@ -describe('adminWidgetController', () => { - var adminSrv +describe('AdminWidgetController', () => { + var AdminSrv var $controller var mockPlease var $q @@ -20,15 +20,15 @@ describe('adminWidgetController', () => { let app = angular.module('materia') app.factory('Please', () => mockPlease) - require('../materia-namespace') - require('../materia-constants') + require('../common/materia-namespace') + require('../common/materia-constants') require('../services/srv-admin') require('./ctrl-admin-widget') - inject((_$controller_, _$q_, _adminSrv_, _$rootScope_) => { + inject((_$controller_, _$q_, _AdminSrv_, _$rootScope_) => { $controller = _$controller_ $q = _$q_ - adminSrv = _adminSrv_ + AdminSrv = _AdminSrv_ $rootScope = _$rootScope_ }) @@ -38,12 +38,12 @@ describe('adminWidgetController', () => { let getElementById = jest.spyOn(document, 'getElementById') widgetUploaderChangeListener = jest.fn() getElementById.mockReturnValueOnce({ - addEventListener: widgetUploaderChangeListener + addEventListener: widgetUploaderChangeListener, }) - jest.spyOn(adminSrv, 'getWidgets') - mockPromiseOnce(adminSrv.getWidgets, ['sampleval']) + jest.spyOn(AdminSrv, 'getWidgets') + mockPromiseOnce(AdminSrv.getWidgets, ['sampleval']) $scope = { $watch: jest.fn() } - var controller = $controller('adminWidgetController', { $scope }) + var controller = $controller('AdminWidgetController', { $scope }) }) it('defines expected scope vars', () => { @@ -74,11 +74,11 @@ describe('adminWidgetController', () => { meta_data: { about: 'f', excerpt: 'f', - demo: 'f' - } + demo: 'f', + }, } // tests - let saveWidget = jest.spyOn(adminSrv, 'saveWidget') + let saveWidget = jest.spyOn(AdminSrv, 'saveWidget') mockPromiseOnce(saveWidget, { success: true }) $scope.save(w) $rootScope.$digest() diff --git a/src/js/controllers/ctrl-alert.js b/src/js/controllers/ctrl-alert.js index d7b96661..44d6bd84 100644 --- a/src/js/controllers/ctrl-alert.js +++ b/src/js/controllers/ctrl-alert.js @@ -1,7 +1,7 @@ // Controller and accessory factory for Materia's modal alert dialog const app = angular.module('materia') app.requires.push('ngModal') -app.controller('alertCtrl', function($scope, Alert, $window) { +app.controller('AlertCtrl', function ($scope, Alert, $window) { $scope.alert = Alert $scope.reloadPage = () => { $window.location.reload() @@ -12,5 +12,5 @@ app.factory('Alert', () => ({ title: '', msg: '', fatal: false, - enableLoginButton: false + enableLoginButton: false, })) diff --git a/src/js/controllers/ctrl-current-user.js b/src/js/controllers/ctrl-current-user.js deleted file mode 100644 index 8d439548..00000000 --- a/src/js/controllers/ctrl-current-user.js +++ /dev/null @@ -1,4 +0,0 @@ -const app = angular.module('materia') -app.controller('currentUserCtrl', ($scope, $sce, userServ, $http, $rootScope) => { - $scope.currentUser = userServ.getCurrentUser() -}) diff --git a/src/js/controllers/ctrl-help.js b/src/js/controllers/ctrl-help.js deleted file mode 100644 index 97bd73a9..00000000 --- a/src/js/controllers/ctrl-help.js +++ /dev/null @@ -1,6 +0,0 @@ -const app = angular.module('materia') -app.controller('helpCtrl', $scope => { - Materia.Flashcheck.flashInstalled(version => { - $scope.hasFlash = !(version === false || version.major <= 10) - }) -}) diff --git a/src/js/controllers/ctrl-spotlight.js b/src/js/controllers/ctrl-home-page-spotlight.js similarity index 79% rename from src/js/controllers/ctrl-spotlight.js rename to src/js/controllers/ctrl-home-page-spotlight.js index 8cb7ee8d..95dc5dcd 100644 --- a/src/js/controllers/ctrl-spotlight.js +++ b/src/js/controllers/ctrl-home-page-spotlight.js @@ -1,5 +1,5 @@ const app = angular.module('materia') -app.controller('spotlightCtrl', function() { +app.controller('HomePageSpotlightCtrl', function () { // find all the spotlights, assign them an id, and make a radio button for them Materia.Store.SlideShow.formatCycler(Array.from(document.querySelectorAll('.store_main'))) }) diff --git a/src/js/controllers/ctrl-lti.js b/src/js/controllers/ctrl-lti-resource-selection.js similarity index 89% rename from src/js/controllers/ctrl-lti.js rename to src/js/controllers/ctrl-lti-resource-selection.js index ef7959c9..96dd2a17 100644 --- a/src/js/controllers/ctrl-lti.js +++ b/src/js/controllers/ctrl-lti-resource-selection.js @@ -1,5 +1,12 @@ const app = angular.module('materia') -app.controller('ltiCtrl', function(Please, $interval, $timeout, $scope, $sce, widgetSrv) { +app.controller('LTIResourceSelectionCtrl', function ( + Please, + $interval, + $timeout, + $scope, + $sce, + WidgetSrv +) { const REFRESH_FAKE_DELAY_MS = 500 const CHANGE_SECTION_FADE_DELAY_MS = 250 let selectedWidget = null @@ -9,14 +16,14 @@ app.controller('ltiCtrl', function(Please, $interval, $timeout, $scope, $sce, wi $scope.showRefreshArrow = true } - const loadWidgets = fakeDelay => { + const loadWidgets = (fakeDelay) => { if (fakeDelay == null) { fakeDelay = 1 } $timeout( () => - widgetSrv.getWidgets().then(widgets => { + WidgetSrv.getWidgets(true).then((widgets) => { if (widgets != null ? widgets.halt : undefined) { return } @@ -43,14 +50,14 @@ app.controller('ltiCtrl', function(Please, $interval, $timeout, $scope, $sce, wi ) } - const _highlight = widget => { + const _highlight = (widget) => { for (let w of Array.from($scope.widgets)) { w.selected = false } widget.selected = true } - const _embedWidget = widget => { + const _embedWidget = (widget) => { if (selectedWidget && selectedWidget.state && selectedWidget.state === 'pending') { return } @@ -80,7 +87,7 @@ app.controller('ltiCtrl', function(Please, $interval, $timeout, $scope, $sce, wi }, 1000) } - const setDisplayState = newSection => { + const setDisplayState = (newSection) => { $scope.section = newSection $timeout(() => { let body = document.querySelector('body') @@ -130,7 +137,7 @@ app.controller('ltiCtrl', function(Please, $interval, $timeout, $scope, $sce, wi } }, 200) - document.addEventListener('keyup', event => { + document.addEventListener('keyup', (event) => { if (event.keyCode === 16) { $scope.easterMode = true Please.$apply() @@ -139,7 +146,7 @@ app.controller('ltiCtrl', function(Please, $interval, $timeout, $scope, $sce, wi } const getAvailabilityStr = (startDate, endDate) => { - const availability = widgetSrv.convertAvailibilityDates(startDate, endDate) + const availability = WidgetSrv.convertAvailibilityDates(startDate, endDate) if (endDate < 0 && startDate < 0) { return 'Anytime' @@ -148,9 +155,7 @@ app.controller('ltiCtrl', function(Please, $interval, $timeout, $scope, $sce, wi } else if (startDate > 0 && endDate < 0) { return `Anytime after ${availability.start.date} at ${availability.start.time}` } else { - return `From ${availability.start.date} at ${availability.start.time} until ${ - availability.end.date - } at ${availability.end.time}` + return `From ${availability.start.date} at ${availability.start.time} until ${availability.end.date} at ${availability.end.time}` } } diff --git a/src/js/controllers/ctrl-media-import.js b/src/js/controllers/ctrl-media-import.js index 2dc125ab..68dfabbb 100644 --- a/src/js/controllers/ctrl-media-import.js +++ b/src/js/controllers/ctrl-media-import.js @@ -1,6 +1,6 @@ const app = angular.module('materia') -app.controller('mediaImportCtrl', function($scope, $window, $timeout) { +app.controller('MediaImportCtrl', function ($scope, $window, $timeout) { const SORTING_NONE = false const SORTING_ASC = 'asc' const SORTING_DESC = 'desc' @@ -13,20 +13,20 @@ app.controller('mediaImportCtrl', function($scope, $window, $timeout) { sortMethod: sortString.bind(null, 'name'), // bind the field name to the sort method name: 'Title', field: 'name', - status: SORTING_ASC + status: SORTING_ASC, }, { sortMethod: sortString.bind(null, 'type'), // bind the field name to the sort method name: 'Type', field: 'type', - status: SORTING_NONE + status: SORTING_NONE, }, { sortMethod: sortNumber.bind(null, 'timestamp'), // bind the field name to the sort method name: 'Date', field: 'timestamp', - status: SORTING_NONE - } + status: SORTING_NONE, + }, ] // generic media type definitions and substitutions for compatibility @@ -40,7 +40,7 @@ app.controller('mediaImportCtrl', function($scope, $window, $timeout) { jpeg: ['image/jpeg'], gif: ['image/gif'], png: ['image/png'], - mp3: ['audio/mp3', 'audio/mpeg', 'audio/mpeg3'] + mp3: ['audio/mp3', 'audio/mpeg', 'audio/mpeg3'], } const REQUESTED_FILE_TYPES = $window.location.hash.substring(1).split(',') @@ -51,7 +51,7 @@ app.controller('mediaImportCtrl', function($scope, $window, $timeout) { // all files before filtering let _allFiles = [] - const onMediaSelect = media => { + const onMediaSelect = (media) => { $window.parent.Materia.Creator.onMediaImportComplete([media]) } @@ -59,13 +59,13 @@ app.controller('mediaImportCtrl', function($scope, $window, $timeout) { $window.parent.Materia.Creator.onMediaImportComplete(null) } - const toggleSortOrder = sortOption => { + const toggleSortOrder = (sortOption) => { if (!sortOption) return const currentStatus = sortOption.status // reset all other sorting statusus - $scope.sortOptions.forEach(option => { + $scope.sortOptions.forEach((option) => { option.status = SORTING_NONE }) @@ -104,10 +104,9 @@ app.controller('mediaImportCtrl', function($scope, $window, $timeout) { const search = $scope.filter.toLowerCase().trim() if (!search) return - const filtered = $scope.displayFiles.filter(file => { + const filtered = $scope.displayFiles.filter((file) => { //combine file name and type for simplified filtering const simplified = file.name.replace(/\s/g, '').toLowerCase() + file.type + file.created - // @TODO: why is this returning? return simplified.includes(search) }) @@ -115,24 +114,24 @@ app.controller('mediaImportCtrl', function($scope, $window, $timeout) { } // just picks the first selected image - const uploadFile = e => { + const uploadFile = (e) => { const file = (e.target.files && e.target.files[0]) || (e.dataTransfer.files && e.dataTransfer.files[0]) if (file) _getFileData(file, _upload) } - const _loadAllMedia = file_id => { + const _loadAllMedia = (file_id) => { // load and/or select file for labelling - COMS.send('assets_get', []).then(result => { + COMS.send('assets_get', []).then((result) => { if (!result || result.msg || result.length == 0) return // convert REQUESTED_FILE_TYPES into Allowed Mime Types let allowedFileExtensions = [] - REQUESTED_FILE_TYPES.forEach(type => { + REQUESTED_FILE_TYPES.forEach((type) => { if (MIME_MAP[type]) { //split the file type out of the full mime type for each allowed mime type let extractedTypes = [] - MIME_MAP[type].forEach(subtype => { + MIME_MAP[type].forEach((subtype) => { extractedTypes = [...extractedTypes, subtype.split('/')[1]] }) @@ -141,7 +140,7 @@ app.controller('mediaImportCtrl', function($scope, $window, $timeout) { }) const allowedResult = [] - result.forEach(res => { + result.forEach((res) => { if ( res.remote_url != null && res.status !== 'upload_success' && @@ -165,7 +164,7 @@ app.controller('mediaImportCtrl', function($scope, $window, $timeout) { const dateString = [ creationDate.getMonth(), creationDate.getDate(), - creationDate.getFullYear() + creationDate.getFullYear(), ].join('/') allowedResult.push({ @@ -174,7 +173,7 @@ app.controller('mediaImportCtrl', function($scope, $window, $timeout) { name: fileName, created: dateString, timestamp: res.created_at, - thumb: _thumbnailUrl(res.id, res.type) + thumb: _thumbnailUrl(res.id, res.type), }) } }) @@ -210,7 +209,7 @@ app.controller('mediaImportCtrl', function($scope, $window, $timeout) { return } - dataReader.onload = event => { + dataReader.onload = (event) => { const src = event.target.result const mime = _getMimeType(src) if (mime == null) return @@ -220,17 +219,17 @@ app.controller('mediaImportCtrl', function($scope, $window, $timeout) { mime, ext: file.name.split('.').pop(), size: file.size, - src + src, }) } dataReader.readAsDataURL(file) } - const _getMimeType = dataUrl => { + const _getMimeType = (dataUrl) => { let allowedFileExtensions = [] - REQUESTED_FILE_TYPES.forEach(type => { + REQUESTED_FILE_TYPES.forEach((type) => { if (MIME_MAP[type]) { allowedFileExtensions = [...allowedFileExtensions, ...MIME_MAP[type]] } @@ -267,7 +266,7 @@ app.controller('mediaImportCtrl', function($scope, $window, $timeout) { } // upload to either local server or s3 - const _upload = fileData => { + const _upload = (fileData) => { const fd = new FormData() fd.append('name', fileData.name) fd.append('Content-Type', fileData.mime) @@ -275,7 +274,7 @@ app.controller('mediaImportCtrl', function($scope, $window, $timeout) { const request = new XMLHttpRequest() - request.onload = oEvent => { + request.onload = (oEvent) => { const res = JSON.parse(request.response) //parse response string if (res.error) { alert(`Error code ${res.error.code}: ${res.error.message}`) @@ -292,7 +291,7 @@ app.controller('mediaImportCtrl', function($scope, $window, $timeout) { } // creator can send a message with file data - const _onPostMessage = event => { + const _onPostMessage = (event) => { // does the event look like an image message? let json = JSON.parse(event.data) if (!json.name || !json.ext || !json.src) return @@ -313,7 +312,7 @@ app.controller('mediaImportCtrl', function($scope, $window, $timeout) { let msg = { type: 'readyForDirectUpload', source: 'media-importer', - data: '' + data: '', } $window.parent.postMessage(JSON.stringify(msg), '*') } diff --git a/src/js/controllers/ctrl-media-import.test.js b/src/js/controllers/ctrl-media-import.test.js index 9e09a07a..227d057c 100644 --- a/src/js/controllers/ctrl-media-import.test.js +++ b/src/js/controllers/ctrl-media-import.test.js @@ -1,4 +1,4 @@ -describe('mediaImportCtrl', function() { +describe('MediaImportCtrl', function () { var setGatewayMock var sendMock var postMock @@ -20,14 +20,14 @@ describe('mediaImportCtrl', function() { remote_url: remote_asset ? idString + '.' + fileType : null, status: status, title: title, - type: fileType + type: fileType, } } const XHR = { open: jest.fn(), send: jest.fn(), - setRequestHeader: jest.fn() + setRequestHeader: jest.fn(), } XMLHttpRequest = jest.fn().mockImplementation(() => XHR) @@ -42,7 +42,7 @@ describe('mediaImportCtrl', function() { createAssetObject(6, 'invalid1.exe'), createAssetObject(7, 'image4.gif'), // used to test names w/o extensions - createAssetObject(8, 'valid image without extension in title', 'jpg') + createAssetObject(8, 'valid image without extension in title', 'jpg'), ] beforeEach(() => { @@ -56,17 +56,17 @@ describe('mediaImportCtrl', function() { location: { reload: jest.fn(), hash: { - substring: jest.fn() - } + substring: jest.fn(), + }, }, parent: { - postMessage: jest.fn() - } + postMessage: jest.fn(), + }, } app.factory('$window', () => $window) - require('../materia-namespace') - require('../materia-constants') + require('../common/materia-namespace') + require('../common/materia-constants') require('./ctrl-media-import') global.MEDIA_UPLOAD_URL = 'https://mediauploadurl.com' @@ -78,13 +78,13 @@ describe('mediaImportCtrl', function() { }) Namespace('Materia.Coms.Json').setGateway = setGatewayMock = jest.fn() - Namespace('Materia.Coms.Json').send = sendMock = jest.fn().mockImplementation(target => { + Namespace('Materia.Coms.Json').send = sendMock = jest.fn().mockImplementation((target) => { switch (target) { case 'assets_get': return { - then: jest.fn().mockImplementation(callback => { + then: jest.fn().mockImplementation((callback) => { callback(useAssets) - }) + }), } default: break @@ -105,10 +105,10 @@ describe('mediaImportCtrl', function() { $window.location.hash.substring.mockReturnValueOnce('image') var $scope = { - $apply: jest.fn() + $apply: jest.fn(), } - var controller = $controller('mediaImportCtrl', { $scope }) + var controller = $controller('MediaImportCtrl', { $scope }) expect($scope.displayFiles).toHaveLength(0) }) @@ -119,10 +119,10 @@ describe('mediaImportCtrl', function() { $window.location.hash.substring.mockReturnValue('image') var $scope = { - $apply: jest.fn() + $apply: jest.fn(), } - var controller = $controller('mediaImportCtrl', { $scope }) + var controller = $controller('MediaImportCtrl', { $scope }) $timeout.flush() expect($scope.displayFiles).toHaveLength(5) expect($scope.displayFiles).toMatchSnapshot() @@ -134,10 +134,10 @@ describe('mediaImportCtrl', function() { $window.location.hash.substring.mockReturnValueOnce('png,unk') var $scope = { - $apply: jest.fn() + $apply: jest.fn(), } - var controller = $controller('mediaImportCtrl', { $scope }) + var controller = $controller('MediaImportCtrl', { $scope }) $timeout.flush() expect($scope.displayFiles).toHaveLength(1) }) @@ -145,16 +145,16 @@ describe('mediaImportCtrl', function() { it('ignores remote assets that were not successfully migrated', () => { useAssets = [ createAssetObject(1, 'image1.png', null, true), - createAssetObject(2, 'image2.png', null, true, 'migrated_asset') + createAssetObject(2, 'image2.png', null, true, 'migrated_asset'), ] $window.location.hash.substring.mockReturnValueOnce('image') var $scope = { - $apply: jest.fn() + $apply: jest.fn(), } - var controller = $controller('mediaImportCtrl', { $scope }) + var controller = $controller('MediaImportCtrl', { $scope }) $timeout.flush() expect($scope.displayFiles).toHaveLength(1) }) @@ -164,10 +164,10 @@ describe('mediaImportCtrl', function() { $window.location.hash.substring.mockReturnValueOnce('image,audio') var $scope = { - $apply: jest.fn() + $apply: jest.fn(), } - var controller = $controller('mediaImportCtrl', { $scope }) + var controller = $controller('MediaImportCtrl', { $scope }) $timeout.flush() //case one - images should be MEDIA_URL/assetid/thumbnail expect($scope.displayFiles[0].thumb).toEqual('https://mediaurl.com/00001/thumbnail') @@ -178,16 +178,16 @@ describe('mediaImportCtrl', function() { it('announces readyForDirectUpload via postmessage before loading media', () => { useAssets = [ createAssetObject(1, 'image1.png', null, true), - createAssetObject(2, 'image2.png', null, true, 'migrated_asset') + createAssetObject(2, 'image2.png', null, true, 'migrated_asset'), ] $window.location.hash.substring.mockReturnValueOnce('image') var $scope = { - $apply: jest.fn() + $apply: jest.fn(), } - var controller = $controller('mediaImportCtrl', { $scope }) + var controller = $controller('MediaImportCtrl', { $scope }) expect($window.parent.postMessage).toHaveBeenCalledTimes(1) expect($window.parent.postMessage.mock.calls[0]).toMatchSnapshot() }) @@ -196,10 +196,10 @@ describe('mediaImportCtrl', function() { $window.location.hash.substring.mockReturnValueOnce('image') var $scope = { - $apply: jest.fn() + $apply: jest.fn(), } - var controller = $controller('mediaImportCtrl', { $scope }) + var controller = $controller('MediaImportCtrl', { $scope }) expect($window.addEventListener).toHaveBeenCalledWith('message', expect.any(Function), false) }) @@ -207,7 +207,7 @@ describe('mediaImportCtrl', function() { $window.location.hash.substring.mockReturnValueOnce('image') var $scope = { - $apply: jest.fn() + $apply: jest.fn(), } // mock dom elements when diabling clicks @@ -215,7 +215,7 @@ describe('mediaImportCtrl', function() { .spyOn(document, 'getElementsByClassName') .mockReturnValueOnce([{ setAttribute: jest.fn() }]) - var controller = $controller('mediaImportCtrl', { $scope }) + var controller = $controller('MediaImportCtrl', { $scope }) var _onPostMessage = $window.addEventListener.mock.calls[0][1] // send a postmessage @@ -224,8 +224,8 @@ describe('mediaImportCtrl', function() { name: 'mock-file-name', ext: '.png', mime: 'image/png', - src: 'mock-image-data' - }) + src: 'mock-image-data', + }), }) expect(XHR.open).toHaveBeenCalledTimes(1) @@ -244,7 +244,7 @@ describe('mediaImportCtrl', function() { $window.location.hash.substring.mockReturnValueOnce('image') var $scope = { - $apply: jest.fn() + $apply: jest.fn(), } // mock dom elements when diabling clicks @@ -252,15 +252,15 @@ describe('mediaImportCtrl', function() { .spyOn(document, 'getElementsByClassName') .mockReturnValueOnce([{ setAttribute: jest.fn() }]) - var controller = $controller('mediaImportCtrl', { $scope }) + var controller = $controller('MediaImportCtrl', { $scope }) var _onPostMessage = $window.addEventListener.mock.calls[0][1] // send a postmessage _onPostMessage({ data: JSON.stringify({ name: 'mock-file-name', - ext: '.png' - }) + ext: '.png', + }), }) expect(XHR.open).toHaveBeenCalledTimes(0) @@ -270,19 +270,19 @@ describe('mediaImportCtrl', function() { //jest starts malfunctioning in strange ways when it tries interacting with the upload code //either it's an us issue or a jest issue, either way it's taking too long to figure out //need to pick this back up at some point in the future - it('should upload files successfully', done => { + it('should upload files successfully', (done) => { $window.location.hash.substring.mockReturnValueOnce('image,audio') var $scope = { - $apply: jest.fn() + $apply: jest.fn(), } - var controller = $controller('mediaImportCtrl', { $scope }) + var controller = $controller('MediaImportCtrl', { $scope }) //create an approximation of a file for testing let uploadFile = new File([''], 'audio1.mp3', { type: 'audio/mp3', - lastModified: new Date(1500000000) + lastModified: new Date(1500000000), }) //normally this would be handled by the browser @@ -293,8 +293,8 @@ describe('mediaImportCtrl', function() { //case one: a file was dropped on the interface uploadEvent = { target: { - files: [uploadFile] - } + files: [uploadFile], + }, } $scope.uploadFile(uploadEvent) diff --git a/src/js/controllers/ctrl-collaboration.js b/src/js/controllers/ctrl-my-widgets-collaboration.js similarity index 88% rename from src/js/controllers/ctrl-collaboration.js rename to src/js/controllers/ctrl-my-widgets-collaboration.js index 712b1b4b..0d3ccb22 100644 --- a/src/js/controllers/ctrl-collaboration.js +++ b/src/js/controllers/ctrl-my-widgets-collaboration.js @@ -1,11 +1,11 @@ const app = angular.module('materia') -app.controller('CollaborationController', function( +app.controller('MyWidgetsCollaborationController', function ( Please, $scope, $timeout, - selectedWidgetSrv, - widgetSrv, - userServ, + SelectedWidgetSrv, + WidgetSrv, + UserServ, ACCESS, OBJECT_TYPES, Alert @@ -17,7 +17,7 @@ app.controller('CollaborationController', function( const ESC = 27 let lastSearch = '' - const _search = nameOrFragment => { + const _searchFor = (nameOrFragment) => { if (nameOrFragment === lastSearch) { return } @@ -37,7 +37,7 @@ app.controller('CollaborationController', function( const inputArray = nameOrFragment.split(',') nameOrFragment = inputArray[inputArray.length - 1] - Materia.Coms.Json.send('users_search', [nameOrFragment]).then(matches => { + Materia.Coms.Json.send('users_search', [nameOrFragment]).then((matches) => { if (matches != null ? matches.halt : undefined) { $scope.alert.msg = matches.msg $scope.alert.fatal = true @@ -54,7 +54,7 @@ app.controller('CollaborationController', function( $scope.searchResults.none = matches.length < 1 for (let user of Array.from(matches)) { - user.gravatar = userServ.getAvatar(user, 50) + user.gravatar = UserServ.getAvatar(user, 50) } matches = matches.sort(sortNames) @@ -72,7 +72,7 @@ app.controller('CollaborationController', function( return nameA.localeCompare(nameB) } - const _searchKeyDown = event => { + const _searchKeyDown = (event) => { switch (event.which) { case RIGHT: $scope.selectedIndex++ @@ -122,7 +122,7 @@ app.controller('CollaborationController', function( }) } - const _searchMatchClick = user => { + const _searchMatchClick = (user) => { if (!user) { return } @@ -132,9 +132,8 @@ app.controller('CollaborationController', function( $scope.inputs.userSearchInput = '' if ($scope.selected.widget.guest_access === false && user.is_student) { - $scope.alert.msg = - 'Students can not be given access to this widget unless Guest Mode is enabled!' - $scope.alert.title = 'Unable to share with student' + $scope.alert.msg = 'Access must be set to "Guest Mode" to collaborate with students.' + $scope.alert.title = 'Share Not Allowed' $scope.alert.fatal = false return } @@ -164,7 +163,7 @@ app.controller('CollaborationController', function( first: user.first, last: user.last, gravatar: user.gravatar, - access: String(ACCESS.VISIBLE) + access: String(ACCESS.VISIBLE), }) $timeout(() => { @@ -172,7 +171,7 @@ app.controller('CollaborationController', function( }, 1) } - const _removeAccess = user => { + const _removeAccess = (user) => { user.remove = true $scope.checkForWarning(user) } @@ -213,7 +212,7 @@ app.controller('CollaborationController', function( permObj.push({ user_id: user.id, expiration: user.expires, - perms: access + perms: access, }) } @@ -221,13 +220,13 @@ app.controller('CollaborationController', function( Materia.Coms.Json.send('permissions_set', [ OBJECT_TYPES.WIDGET_INSTANCE, widget_id, - permObj - ]).then(returnData => { + permObj, + ]).then((returnData) => { if (returnData === true) { $scope.$emit('collaborators.update', '') $scope.show.collaborationModal = false if (remove_widget) { - widgetSrv.removeWidget(widget_id) + WidgetSrv.removeWidget(widget_id) } if (students.length > 0) { $scope.selected.widget.student_access = true @@ -246,13 +245,13 @@ app.controller('CollaborationController', function( }) } - const _checkForWarning = user => { + const _checkForWarning = (user) => { if (user.isCurrentUser && user.access <= ACCESS.FULL) { return (user.warning = true) } } - const _cancelDemote = user => { + const _cancelDemote = (user) => { user.warning = false user.remove = false return (user.access = ACCESS.FULL) @@ -262,18 +261,17 @@ app.controller('CollaborationController', function( $scope.searchResults = { show: false, searching: false, - matches: [] + matches: [], } $scope.ACCESS = { VISIBLE: ACCESS.VISIBLE, - FULL: ACCESS.FULL + FULL: ACCESS.FULL, } $scope.accessLevels = {} $scope.accessLevels[ACCESS.VISIBLE] = { value: ACCESS.VISIBLE, text: 'View Scores' } $scope.accessLevels[ACCESS.FULL] = { value: ACCESS.FULL, text: 'Full' } $scope.alert = Alert - $scope.search = _search $scope.updatePermissions = _updatePermissions $scope.checkForWarning = _checkForWarning $scope.cancelDemote = _cancelDemote @@ -283,5 +281,5 @@ app.controller('CollaborationController', function( // Initialize - $scope.$watch('inputs.userSearchInput', input => $scope.search(input)) + $scope.$watch('inputs.userSearchInput', (input) => _searchFor(input)) }) diff --git a/src/js/controllers/ctrl-collaboration.test.js b/src/js/controllers/ctrl-my-widgets-collaboration.test.js similarity index 74% rename from src/js/controllers/ctrl-collaboration.test.js rename to src/js/controllers/ctrl-my-widgets-collaboration.test.js index 039da5ff..879571a5 100644 --- a/src/js/controllers/ctrl-collaboration.test.js +++ b/src/js/controllers/ctrl-my-widgets-collaboration.test.js @@ -1,4 +1,4 @@ -describe('CollaborationController', () => { +describe('MyWidgetsCollaborationController', () => { let $controller var mockPlease let $scope @@ -8,8 +8,8 @@ describe('CollaborationController', () => { let app = angular.module('materia') app.factory('Please', () => mockPlease) - require('../materia-namespace') - require('../materia-constants') + require('../common/materia-namespace') + require('../common/materia-constants') require('../materia/materia.coms.json') require('../services/srv-selectedwidget') require('../services/srv-datetime') @@ -18,20 +18,20 @@ describe('CollaborationController', () => { require('ngmodal/dist/ng-modal') require('hammerjs') require('./ctrl-alert') - require('./ctrl-collaboration') + require('./ctrl-my-widgets-collaboration') - inject(_$controller_ => { + inject((_$controller_) => { $controller = _$controller_ }) $scope = { $watch: jest.fn(), - $on: jest.fn() + $on: jest.fn(), } }) it('defines expected scope vars - accessLevels', () => { - $controller('CollaborationController', { $scope }) + $controller('MyWidgetsCollaborationController', { $scope }) expect($scope.accessLevels).toHaveProperty('1') expect($scope.accessLevels).toHaveProperty('30') expect($scope.accessLevels[1]).toHaveProperty('text') diff --git a/src/js/controllers/ctrl-export-scores.js b/src/js/controllers/ctrl-my-widgets-export.js similarity index 87% rename from src/js/controllers/ctrl-export-scores.js rename to src/js/controllers/ctrl-my-widgets-export.js index 3e3f9d17..82edf9ce 100644 --- a/src/js/controllers/ctrl-export-scores.js +++ b/src/js/controllers/ctrl-my-widgets-export.js @@ -1,6 +1,6 @@ const app = angular.module('materia') // The modal that exports score CSVs on My Widgets -app.controller('ExportScoresController', function(Please, $scope, selectedWidgetSrv) { +app.controller('MyWidgetsExportController', function (Please, $scope, SelectedWidgetSrv) { // Builds the initial version of the popup window const _buildPopup = () => { const wgt = $scope.selected.widget @@ -31,7 +31,7 @@ app.controller('ExportScoresController', function(Please, $scope, selectedWidget // Finds all the scores with a given game instance id const _getScores = () => { - Materia.Coms.Json.send('score_summary_get', [$scope.selectedId]).then(summary => { + Materia.Coms.Json.send('score_summary_get', [$scope.selectedId]).then((summary) => { // Show export modal in callback because otherwise the text changes once the // callback is done $scope.show.exportModal = true @@ -43,7 +43,7 @@ app.controller('ExportScoresController', function(Please, $scope, selectedWidget $scope.semesters.push({ label, id, - checked: false + checked: false, }) } @@ -58,9 +58,9 @@ app.controller('ExportScoresController', function(Please, $scope, selectedWidget } // Updates the header of the popup and the ids for the download button - const _updateDownloadInfo = checkedSemesters => { + const _updateDownloadInfo = (checkedSemesters) => { // Get the labels from the checked Semesters - const labels = checkedSemesters.map(e => e.label) + const labels = checkedSemesters.map((e) => e.label) $scope.header = labels.join(', ') $scope.selectedSemesters = labels.join(',').replace(/\s/g, '-') if (checkedSemesters.length >= 3) { @@ -69,7 +69,7 @@ app.controller('ExportScoresController', function(Please, $scope, selectedWidget } // Updates the checkAll option depending on how many semesters are checked - const _updateCheckAll = checkedSemesters => { + const _updateCheckAll = (checkedSemesters) => { $scope.checkedAll = checkedSemesters.length === $scope.semesters.length } @@ -77,7 +77,7 @@ app.controller('ExportScoresController', function(Please, $scope, selectedWidget // Gets the checked semesters for the download information and checkAll const _onSelectedSemestersChange = () => { // Get the objects that have checked: true - const checked = $scope.semesters.filter(e => e.checked) + const checked = $scope.semesters.filter((e) => e.checked) _updateDownloadInfo(checked) _updateCheckAll(checked) } @@ -85,10 +85,10 @@ app.controller('ExportScoresController', function(Please, $scope, selectedWidget // Check or uncheck all semesters const _checkAll = () => { // Grab all of the checked semesters - const checked = $scope.semesters.filter(e => e.checked) + const checked = $scope.semesters.filter((e) => e.checked) angular.forEach( $scope.semesters, - semester => + (semester) => // If all of the semesters are checked, uncheck them all (semester.checked = checked.length !== $scope.semesters.length) ) diff --git a/src/js/controllers/ctrl-selectedwidget.js b/src/js/controllers/ctrl-my-widgets-selected.js similarity index 83% rename from src/js/controllers/ctrl-selectedwidget.js rename to src/js/controllers/ctrl-my-widgets-selected.js index 88e79bd7..0a3f2cdf 100644 --- a/src/js/controllers/ctrl-selectedwidget.js +++ b/src/js/controllers/ctrl-my-widgets-selected.js @@ -1,12 +1,12 @@ const app = angular.module('materia') -app.controller('SelectedWidgetController', function( +app.controller('MyWidgetsSelectedController', function ( Please, $rootScope, $scope, $q, - widgetSrv, - selectedWidgetSrv, - userServ, + WidgetSrv, + SelectedWidgetSrv, + UserServ, $anchorScroll, ACCESS, Alert @@ -18,7 +18,7 @@ app.controller('SelectedWidgetController', function( } // using 'function' here because this function is executed in another scope chain - const _hideModal = function() { + const _hideModal = function () { this.$parent.hideModal() } @@ -29,15 +29,18 @@ app.controller('SelectedWidgetController', function( } const _copyWidget = () => { - widgetSrv - .copyWidget($scope.selected.widget.id, $scope.selected.copy_title) - .then(inst_id => { + WidgetSrv.copyWidget( + $scope.selected.widget.id, + $scope.selected.copy_title, + $scope.selected.copy_retain_access + ) + .then((inst_id) => { $scope.show.copyModal = false - return widgetSrv.getWidget(inst_id) + return WidgetSrv.getWidget(inst_id) }) - .then(widget => { + .then((widget) => { $rootScope.$broadcast('widgetList.update') - widgetSrv.updateHashUrl(widget.id) + WidgetSrv.updateHashUrl(widget.id) }) .catch(() => { // @TODO show an alert? @@ -45,10 +48,10 @@ app.controller('SelectedWidgetController', function( } const _deleteWidget = () => { - widgetSrv.deleteWidget($scope.selected.widget.id).then(results => { + WidgetSrv.deleteWidget($scope.selected.widget.id).then((results) => { if (results) { $scope.show.deleteDialog = false - widgetSrv.removeWidget($scope.selected.widget.id) + WidgetSrv.removeWidget($scope.selected.widget.id) Please.$apply() } }) @@ -56,8 +59,8 @@ app.controller('SelectedWidgetController', function( const _editWidgetPromise = () => { return Materia.Coms.Json.send('widget_instance_edit_perms_verify', [ - $scope.selected.widget.id - ]).then(response => { + $scope.selected.widget.id, + ]).then((response) => { if (response.is_locked) { $scope.alert.msg = 'This widget is currently locked, you will be able to edit this widget when it is no longer being edited by somebody else.' @@ -110,13 +113,13 @@ app.controller('SelectedWidgetController', function( } const _showCopyDialog = () => { - if ($scope.selected.accessLevel != ACCESS.VISIBLE) { + if ($scope.selected.can.copy) { $scope.show.copyModal = true } } const _showDelete = () => { - if ($scope.selected.accessLevel != ACCESS.VISIBLE) { + if ($scope.selected.can.delete) { $scope.show.deleteDialog = !$scope.show.deleteDialog } } @@ -134,7 +137,7 @@ app.controller('SelectedWidgetController', function( $scope.perms.collaborators = [] $scope.show.collaborationModal = true - Materia.Coms.Json.send('user_get', [user_ids]).then(users => { + Materia.Coms.Json.send('user_get', [user_ids]).then((users) => { $scope.studentAccessible = false if (users.length != null) { @@ -159,7 +162,7 @@ app.controller('SelectedWidgetController', function( const timestamp = parseInt($scope.perms.widget[user.id][1], 10) user.expires = timestamp user.expiresText = getExpiresText(timestamp) - user.gravatar = userServ.getAvatar(user, 50) + user.gravatar = UserServ.getAvatar(user, 50) } $scope.perms.collaborators = users @@ -172,19 +175,16 @@ app.controller('SelectedWidgetController', function( const _setupPickers = () => // fill in the expiration link text & setup click event - Array.from($scope.perms.collaborators).map(user => - (user => { + Array.from($scope.perms.collaborators).map((user) => + ((user) => { return $(`.exp-date.user${user.id}`).datepicker({ minDate: getDateForBeginningOfTomorrow(), onSelect(dateText, inst) { - const timestamp = - $(this) - .datepicker('getDate') - .getTime() / 1000 + const timestamp = $(this).datepicker('getDate').getTime() / 1000 user.expires = timestamp user.expiresText = getExpiresText(timestamp) Please.$apply() - } + }, }) })(user) ) @@ -195,7 +195,7 @@ app.controller('SelectedWidgetController', function( return new Date(d.getFullYear(), d.getMonth(), d.getDate()) } - const getExpiresText = timestamp => { + const getExpiresText = (timestamp) => { timestamp = parseInt(timestamp, 10) if (!timestamp) { return 'Never' @@ -204,7 +204,7 @@ app.controller('SelectedWidgetController', function( } } - const _removeExpires = user => { + const _removeExpires = (user) => { user.expires = null user.expiresText = getExpiresText(user.expires) } @@ -236,7 +236,7 @@ app.controller('SelectedWidgetController', function( /* develblock:start */ // these method are exposed for testing $scope.jestTest = { - _editWidgetPromise + _editWidgetPromise, } /* develblock:end */ }) diff --git a/src/js/controllers/ctrl-selectedwidget.test.js b/src/js/controllers/ctrl-my-widgets-selected.test.js similarity index 84% rename from src/js/controllers/ctrl-selectedwidget.test.js rename to src/js/controllers/ctrl-my-widgets-selected.test.js index 5cbf14e6..2f73e3e2 100644 --- a/src/js/controllers/ctrl-selectedwidget.test.js +++ b/src/js/controllers/ctrl-my-widgets-selected.test.js @@ -1,5 +1,5 @@ -describe('adminWidgetController', () => { - var adminSrv +describe('MyWidgetSelectedController', () => { + var AdminSrv var $controller var mockPlease var $q @@ -11,8 +11,8 @@ describe('adminWidgetController', () => { let app = angular.module('materia') app.factory('Please', () => mockPlease) - require('../materia-namespace') - require('../materia-constants') + require('../common/materia-namespace') + require('../common/materia-constants') require('../services/srv-admin') require('../services/srv-widget') require('../services/srv-selectedwidget') @@ -20,23 +20,23 @@ describe('adminWidgetController', () => { require('../services/srv-user') require('./ctrl-alert') require('ngmodal/dist/ng-modal') - require('./ctrl-selectedwidget') + require('./ctrl-my-widgets-selected') - inject((_$controller_, _$q_, _adminSrv_, _$rootScope_) => { + inject((_$controller_, _$q_, _AdminSrv_, _$rootScope_) => { $controller = _$controller_ $q = _$q_ - adminSrv = _adminSrv_ + AdminSrv = _AdminSrv_ $rootScope = _$rootScope_ }) $scope = { $watch: jest.fn(), - $on: jest.fn() + $on: jest.fn(), } Namespace('Materia.Coms.Json').send = jest.fn() - var controller = $controller('SelectedWidgetController', { $scope }) + var controller = $controller('MyWidgetsSelectedController', { $scope }) }) it('defines expected scope vars', () => { @@ -61,7 +61,7 @@ describe('adminWidgetController', () => { expect($scope.hideModal).toBeDefined() this.$parent = { - hideModal: jest.fn() + hideModal: jest.fn(), } // calling hideModal should call the hideModal we provide in this scope @@ -72,7 +72,7 @@ describe('adminWidgetController', () => { it('does nothing if a widget is not editable', () => { $scope.selected = { - editable: false + editable: false, } $scope.editWidget() @@ -84,13 +84,13 @@ describe('adminWidgetController', () => { $scope.selected = { editable: true, widget: { - id: 1 - } + id: 1, + }, } Namespace('Materia.Coms.Json').send = jest.fn().mockResolvedValueOnce({ is_locked: true, - can_publish: true + can_publish: true, }) return $scope.jestTest._editWidgetPromise().then(() => { diff --git a/src/js/controllers/ctrl-widget-settings.js b/src/js/controllers/ctrl-my-widgets-settings.js similarity index 84% rename from src/js/controllers/ctrl-widget-settings.js rename to src/js/controllers/ctrl-my-widgets-settings.js index 0a4b5c74..da1d45bf 100644 --- a/src/js/controllers/ctrl-widget-settings.js +++ b/src/js/controllers/ctrl-my-widgets-settings.js @@ -1,14 +1,14 @@ const app = angular.module('materia') // The widget settings/availability modal on My Widgets -app.controller('WidgetSettingsController', function( +app.controller('MyWidgetsSettingsController', function ( Please, $rootScope, $scope, $timeout, $filter, $window, - selectedWidgetSrv, - widgetSrv, + SelectedWidgetSrv, + WidgetSrv, Alert ) { let currentlySubmitting = false @@ -31,7 +31,7 @@ app.controller('WidgetSettingsController', function( }, stop(event, ui) { $scope.updateSlider(ui.value) - } + }, }) // Sets up the date pickers for the availability times @@ -39,33 +39,48 @@ app.controller('WidgetSettingsController', function( $('.date.from').datepicker({ onSelect(dateText) { $scope.availability[0].date = dateText - } + }, }) $('.date.to').datepicker({ onSelect(dateText) { $scope.availability[1].date = dateText - } + }, }) } const _toggleNormalAccess = () => { - if (($scope.guestAccess = true)) { - $scope.guestAccess = false - } - if (($scope.embeddedOnly = true)) { + // disallow student made widgets from being toggled out of guest mode + if ($scope.studentMade) return + + $scope.guestAccess = !$scope.guestAccess + + if ($scope.embeddedOnly == true) { $scope.embeddedOnly = false } + + // warn user that students will be removed if guest mode is disabled + if ($scope.selected.widget.student_access == true && $scope.guestAccess == false) { + $scope.alert.msg = + 'Warning: Disabling Guest Mode will automatically revoke access to this widget for any students it has been shared with!' + $scope.alert.title = 'Students with access will be removed' + $scope.alert.fatal = false + } + + _updateSliderAfterChange() } const _toggleGuestAccess = () => { + // disallow student made widgets from being toggled out of guest mode if ($scope.studentMade) return $scope.guestAccess = !$scope.guestAccess if ($scope.guestAccess) { $scope.embeddedOnly = false } - if ($scope.selected.widget.student_access === true && $scope.guestAccess === false) { + + // warn user that students will be removed if guest mode is disabled + if ($scope.selected.widget.student_access == true && $scope.guestAccess == false) { $scope.alert.msg = 'Warning: Disabling Guest Mode will automatically revoke access to this widget for any students it has been shared with!' $scope.alert.title = 'Students with access will be removed' @@ -73,12 +88,8 @@ app.controller('WidgetSettingsController', function( } $scope.attemptsSliderValue = $scope.UNLIMITED_SLIDER_VALUE - $timeout(() => { - $('.selector').slider({ - value: $scope.attemptsSliderValue * 1000, - disabled: $scope.guestAccess - }) - }) + + _updateSliderAfterChange() } const _toggleEmbeddedOnly = () => { @@ -88,6 +99,20 @@ app.controller('WidgetSettingsController', function( if ($scope.embeddedOnly) { $scope.guestAccess = false } + + _updateSliderAfterChange() + } + + // this probably shouldn't have to be used + // because the toggles above should be just one + // function lilke _setAccess() + const _updateSliderAfterChange = () => { + $timeout(() => { + $('.selector').slider({ + value: $scope.attemptsSliderValue * 1000, + disabled: $scope.guestAccess, + }) + }) } // Fills in the dates from the selected widget @@ -96,7 +121,7 @@ app.controller('WidgetSettingsController', function( const close = $scope.selected.widget.close_at const dates = [ open > -1 ? new Date(open * 1000) : null, - close > -1 ? new Date(close * 1000) : null + close > -1 ? new Date(close * 1000) : null, ] dates.forEach((date, i) => { @@ -115,7 +140,7 @@ app.controller('WidgetSettingsController', function( } // If the time is blurred without minutes set, add :00 (so 2 becomes 2:00) - const _checkTime = index => { + const _checkTime = (index) => { if ( $scope.availability[index].time.indexOf(':') === -1 && $scope.availability[index].time !== '' @@ -129,7 +154,7 @@ app.controller('WidgetSettingsController', function( // Moves the slider to the specified value and updates the attempts. // From ng-click on the attempt numbers below the slider. - const _changeSlider = number => { + const _changeSlider = (number) => { let val if ($scope.guestAccess) { // always should be set to unlimited (-1) @@ -147,7 +172,7 @@ app.controller('WidgetSettingsController', function( // Updates the slider based on which value the slider is close to. // It will "click" into place when in between the steps. - const _updateSlider = value => { + const _updateSlider = (value) => { let smaller = Math.round(value / 1000) if (smaller > 5) { smaller = 5 * Math.round(smaller / 5) @@ -171,7 +196,7 @@ app.controller('WidgetSettingsController', function( date: 0, time: 0, missing: 0, - invalid: 0 + invalid: 0, } $scope.error = '' $scope.times = [] @@ -280,17 +305,16 @@ app.controller('WidgetSettingsController', function( $scope.attemptsSliderValue < $scope.UNLIMITED_SLIDER_VALUE ? $scope.attemptsSliderValue : -1 // Update the widget instance. - widgetSrv - .saveWidget({ - inst_id: $scope.selected.widget.id, - open_at: $scope.times[0], - close_at: $scope.times[1], - attempts, - guest_access: $scope.guestAccess, - embedded_only: $scope.embeddedOnly - }) - .then(widget => { - selectedWidgetSrv.set(widget) + WidgetSrv.saveWidget({ + inst_id: $scope.selected.widget.id, + open_at: $scope.times[0], + close_at: $scope.times[1], + attempts, + guest_access: $scope.guestAccess, + embedded_only: $scope.embeddedOnly, + }) + .then((widget) => { + SelectedWidgetSrv.set(widget) $rootScope.$broadcast('widgetList.update') currentlySubmitting = false }) @@ -319,13 +343,13 @@ app.controller('WidgetSettingsController', function( $scope.availability.push({ header: 'Available', anytimeLabel: 'Now', - anytime: true + anytime: true, }) // To $scope.availability.push({ header: 'Closes', anytimeLabel: 'Never', - anytime: true + anytime: true, }) $scope.error = '' diff --git a/src/js/controllers/ctrl-my-widgets.js b/src/js/controllers/ctrl-my-widgets.js index 1cefb59c..2c9892d3 100644 --- a/src/js/controllers/ctrl-my-widgets.js +++ b/src/js/controllers/ctrl-my-widgets.js @@ -1,31 +1,31 @@ const app = angular.module('materia') app.requires.push('ngModal') -app.config(function($locationProvider) { +app.config(function ($locationProvider) { $locationProvider.hashPrefix('') }) -app.controller('MyWidgetsController', function( +app.controller('MyWidgetsController', function ( Please, $rootScope, $scope, $q, $window, $timeout, - widgetSrv, - userServ, - selectedWidgetSrv, - beardServ, + WidgetSrv, + UserServ, + SelectedWidgetSrv, + BeardServ, ACCESS, Alert ) { let firstRun = true let loadScoresTimout = null - const _prepareWidgetForDisplay = widget => { + const _prepareWidgetForDisplay = (widget) => { widget.icon = Materia.Image.iconUrl(widget.widget.dir, 60) - widget.beard = beardServ.getRandomBeard() + widget.beard = BeardServ.getRandomBeard() } - const updateWidgets = data => { + const updateWidgets = (data) => { Materia.Set.Throbber.stopSpin('.courses') // data is empty @@ -38,7 +38,7 @@ app.controller('MyWidgetsController', function( } else { // we've got data // build attribues for each widget - angular.forEach(data, widget => { + angular.forEach(data, (widget) => { _prepareWidgetForDisplay(widget) }) @@ -49,9 +49,9 @@ app.controller('MyWidgetsController', function( // on the first load, select the widget from the url if (firstRun) { - widgetSrv.selectWidgetFromHashUrl() + WidgetSrv.selectWidgetFromHashUrl() firstRun = false - $window.addEventListener('hashchange', widgetSrv.selectWidgetFromHashUrl, false) + $window.addEventListener('hashchange', WidgetSrv.selectWidgetFromHashUrl, false) } } @@ -67,10 +67,10 @@ app.controller('MyWidgetsController', function( populateDisplay() $q.all([ - userServ.get(), - selectedWidgetSrv.getUserPermissions(), - selectedWidgetSrv.getDateRanges() - ]).then(data => { + UserServ.get(), + SelectedWidgetSrv.getUserPermissions(), + SelectedWidgetSrv.getDateRanges(), + ]).then((data) => { // don't render an old display if they user has clicked another widget if ($scope.selected.widget.id !== currentId) { return @@ -84,7 +84,7 @@ app.controller('MyWidgetsController', function( // load the scores a little later loadScoresTimout = $timeout(() => { - selectedWidgetSrv.getScoreSummaries().then(scores => { + SelectedWidgetSrv.getScoreSummaries().then((scores) => { $scope.selected.scores = scores populateScores() }) @@ -92,13 +92,13 @@ app.controller('MyWidgetsController', function( }) } - const populateAttempts = attemptsAllowed => { + const populateAttempts = (attemptsAllowed) => { attemptsAllowed = parseInt(attemptsAllowed, 10) $scope.attemptText = attemptsAllowed > 0 ? attemptsAllowed : 'Unlimited' } const populateAvailability = (startDateInt, endDateInt) => { - $scope.availability = widgetSrv.convertAvailibilityDates(startDateInt, endDateInt) + $scope.availability = WidgetSrv.convertAvailibilityDates(startDateInt, endDateInt) $scope.availabilityStart = startDateInt $scope.availabilityEnd = endDateInt @@ -137,9 +137,7 @@ app.controller('MyWidgetsController', function( // TODO $scope.perms.error = false - $scope.selected.preview = `preview/${$scope.selected.widget.id}/${ - $scope.selected.widget.clean_name - }` + $scope.selected.preview = `preview/${$scope.selected.widget.id}/${$scope.selected.widget.clean_name}` $scope.selected.copy_title = `${$scope.selected.widget.name} copy` $scope.selected.widget.iconbig = Materia.Image.iconUrl($scope.selected.widget.widget.dir, 275) } @@ -161,33 +159,36 @@ app.controller('MyWidgetsController', function( // Second half of populateDisplay // This allows us to update the display before the callback of scores finishes, which speeds up UI const populateAccess = () => { - // accessLevel == ACCESS.VISIBLE is effectively read-only - if ( - ($scope.perms.user[$scope.user.id] != null - ? $scope.perms.user[$scope.user.id][0] - : undefined) != null - ) { - $scope.selected.accessLevel = Number($scope.perms.user[$scope.user.id][0]) + const sel = $scope.selected + const perms = $scope.perms + const userId = $scope.user.id + const perm = (perms.user[userId] && perms.user[userId][0]) || ACCESS.VISIBLE + sel.accessLevel = parseInt(perm, 10) + sel.can = { + view: [ACCESS.VISIBLE, ACCESS.COPY, ACCESS.SHARE, ACCESS.FULL, ACCESS.SU].includes( + sel.accessLevel + ), + copy: [ACCESS.COPY, ACCESS.SHARE, ACCESS.FULL, ACCESS.SU].includes(sel.accessLevel), + edit: [ACCESS.FULL, ACCESS.SU].includes(sel.accessLevel), + delete: [ACCESS.FULL, ACCESS.SU].includes(sel.accessLevel), + share: [ACCESS.SHARE, ACCESS.FULL, ACCESS.SU].includes(sel.accessLevel), } - $scope.selected.editable = - $scope.selected.accessLevel > ACCESS.VISIBLE && - parseInt($scope.selected.widget.widget.is_editable) === 1 + sel.editable = + $scope.selected.accessLevel > ACCESS.VISIBLE && parseInt(sel.widget.widget.is_editable) === 1 - if ($scope.selected.editable) { - $scope.selected.edit = `/widgets/${$scope.selected.widget.widget.dir}create\#${ - $scope.selected.widget.id - }` + if (sel.editable) { + sel.edit = `/widgets/${sel.widget.widget.dir}create\#${sel.widget.id}` } else { - $scope.selected.edit = '#' + sel.edit = '#' } _countCollaborators() - $scope.selected.shareable = $scope.selected.accessLevel !== ACCESS.VISIBLE + sel.shareable = sel.accessLevel !== ACCESS.VISIBLE // old, but difficult to replace with sel.can.share :/ - populateAvailability($scope.selected.widget.open_at, $scope.selected.widget.close_at) - populateAttempts($scope.selected.widget.attempts) + populateAvailability(sel.widget.open_at, sel.widget.close_at) + populateAttempts(sel.widget.attempts) } // count up the number of other users collaborating @@ -216,7 +217,7 @@ app.controller('MyWidgetsController', function( const _setScoreViewTab = (index, view) => { // load storage data if needed if (view === $scope.SCORE_TAB_STORAGE) { - selectedWidgetSrv.getStorageData().then(data => { + SelectedWidgetSrv.getStorageData().then((data) => { $rootScope.$broadcast('storageData.loaded') Please.$apply() }) @@ -226,9 +227,9 @@ app.controller('MyWidgetsController', function( } const _onSelectedWidgetUpdate = () => { - $scope.selected.widget = selectedWidgetSrv.get() - const sessionCheck = userServ.checkValidSession() - sessionCheck.then(check => { + $scope.selected.widget = SelectedWidgetSrv.get() + const sessionCheck = UserServ.checkValidSession() + sessionCheck.then((check) => { if (check) { setSelectedWidget() } else { @@ -253,10 +254,10 @@ app.controller('MyWidgetsController', function( hasScores: false, preview: '', guestAccess: false, - embeddedOnly: false + embeddedOnly: false, } $scope.perms = { - collaborators: [] + collaborators: [], } $scope.show = { collaborationModal: false, @@ -267,27 +268,27 @@ app.controller('MyWidgetsController', function( deleteDialog: false, embedToggle: false, editPublishedWarning: false, - restrictedPublishWarning: false + restrictedPublishWarning: false, } $scope.SCORE_TAB_GRAPH = 0 $scope.SCORE_TAB_INDIVIDUAL = 1 $scope.SCORE_TAB_STORAGE = 2 $scope.selectedScoreView = [] // array of above (i.e. 0 = graph) - $scope.setSelected = id => { - widgetSrv.updateHashUrl(id) + $scope.setSelected = (id) => { + WidgetSrv.updateHashUrl(id) } // Initialize $scope.$on('selectedWidget.update', _onSelectedWidgetUpdate) $scope.$on('collaborators.update', _countCollaborators) - $scope.$on('widgetList.update', evt => { - updateWidgets(widgetSrv.getWidgets()) + $scope.$on('widgetList.update', (evt) => { + updateWidgets(WidgetSrv.getWidgets()) }) - $scope.$on('user.update', evt => { - $scope.user = userServ.get() + $scope.$on('user.update', (evt) => { + $scope.user = UserServ.get() }) - widgetSrv.getWidgets().then(updateWidgets) + WidgetSrv.getWidgets().then(updateWidgets) }) diff --git a/src/js/controllers/ctrl-question-import.js b/src/js/controllers/ctrl-question-import.js index 4d0bca95..10f7e892 100644 --- a/src/js/controllers/ctrl-question-import.js +++ b/src/js/controllers/ctrl-question-import.js @@ -1,15 +1,13 @@ const app = angular.module('materia') -app.controller('questionImporterCtrl', function($scope, $sce) { +app.controller('QuestionImporterCtrl', function ($scope, $sce) { let $selectedAssets = [] let $table = null const _setupTable = () => { // listener for selecting a question row - $(document).on('click', '#question-table tbody tr', e => { + $(document).on('click', '#question-table tbody tr', (e) => { const $checkbox = $(e.currentTarget).find(':checkbox') - const $selected = $(e.currentTarget) - .toggleClass('row_selected') - .hasClass('row_selected') + const $selected = $(e.currentTarget).toggleClass('row_selected').hasClass('row_selected') $checkbox.prop('checked', $selected) // update checkbox // stop the bubbling to prevent the row's click event @@ -25,13 +23,13 @@ app.controller('questionImporterCtrl', function($scope, $sce) { } }) - $('#submit-button').click(e => { + $('#submit-button').click((e) => { e.stopPropagation() _loadSelectedQuestions($selectedAssets) return false }) - $('#cancel-button').click(e => { + $('#cancel-button').click((e) => { e.stopPropagation() return window.parent.Materia.Creator.onQuestionImportComplete(null) }) @@ -55,7 +53,7 @@ app.controller('questionImporterCtrl', function($scope, $sce) { language: { search: '', infoFiltered: ' / _MAX_', - info: 'showing: _TOTAL_' + info: 'showing: _TOTAL_', }, // columsn to display columns: [{ data: 'text' }, { data: 'type' }, { data: 'created_at' }, { data: 'uses' }], @@ -69,18 +67,16 @@ app.controller('questionImporterCtrl', function($scope, $sce) { const d = new Date(data * 1000) return d.getMonth() + 1 + '/' + d.getDate() + '/' + d.getFullYear() }, - targets: 2 + targets: 2, }, { // select box render(data, type, full, meta) { - return ` ${data}` + return ` ${data}` }, - targets: 0 - } - ] + targets: 0, + }, + ], }) // re-fit the table now @@ -89,21 +85,15 @@ app.controller('questionImporterCtrl', function($scope, $sce) { const _loadAllQuestions = () => { $selectedAssets = [] - $('#question-table') - .dataTable() - .fnClearTable() // clear the table + $('#question-table').dataTable().fnClearTable() // clear the table // determine the types from the url hash string const questionTypes = _getType() // load - _getQuestions(null, questionTypes).then(result => { + _getQuestions(null, questionTypes).then((result) => { // to prevent error messages when result is null if (result && result.length && result.length > 0) { - $('#question-table') - .dataTable() - .fnClearTable() - $('#question-table') - .dataTable() - .fnAddData(result) + $('#question-table').dataTable().fnClearTable() + $('#question-table').dataTable().fnAddData(result) } }) } @@ -112,8 +102,8 @@ app.controller('questionImporterCtrl', function($scope, $sce) { return Materia.Coms.Json.send('questions_get', [questionIds, questionTypes]) } - const _loadSelectedQuestions = questionIds => - _getQuestions(questionIds).then(result => { + const _loadSelectedQuestions = (questionIds) => + _getQuestions(questionIds).then((result) => { if (result != null && !('msg' in result) && result.length > 0) { window.parent.Materia.Creator.onQuestionImportComplete(JSON.stringify(result)) } diff --git a/src/js/controllers/ctrl-scores.js b/src/js/controllers/ctrl-score-page.js similarity index 92% rename from src/js/controllers/ctrl-scores.js rename to src/js/controllers/ctrl-score-page.js index a809c57a..ba98c9c1 100644 --- a/src/js/controllers/ctrl-scores.js +++ b/src/js/controllers/ctrl-score-page.js @@ -1,5 +1,5 @@ const app = angular.module('materia') -app.controller('scorePageController', function(Please, $scope, $q, $timeout, widgetSrv, scoreSrv) { +app.controller('ScorePageController', function (Please, $scope, $q, $timeout, WidgetSrv, ScoreSrv) { const COMPARE_TEXT_CLOSE = 'Close Graph' const COMPARE_TEXT_OPEN = 'Compare With Class' // attempts is an array of attempts, [0] is the newest @@ -40,9 +40,8 @@ app.controller('scorePageController', function(Please, $scope, $q, $timeout, wid const _displayScoreData = (inst_id, play_id) => { const deferred = $q.defer() - widgetSrv - .getWidget(inst_id) - .then(instance => { + WidgetSrv.getWidget(inst_id) + .then((instance) => { widgetInstance = instance $scope.guestAccess = widgetInstance.guest_access if (_checkCustomScoreScreen()) _embed() @@ -92,7 +91,7 @@ app.controller('scorePageController', function(Please, $scope, $q, $timeout, wid Please.$apply() } - const _onPostMessage = e => { + const _onPostMessage = (e) => { const origin = `${e.origin}/` if (origin === STATIC_CROSSDOMAIN || origin === BASE_URL) { const msg = JSON.parse(e.data) @@ -132,7 +131,7 @@ app.controller('scorePageController', function(Please, $scope, $q, $timeout, wid } } - const _getInstanceScores = inst_id => { + const _getInstanceScores = (inst_id) => { const dfd = $q.defer() if (isPreview || single_id) { $scope.attempts = [{ id: -1, created_at: 0, percent: 0 }] @@ -142,14 +141,14 @@ app.controller('scorePageController', function(Please, $scope, $q, $timeout, wid // support guests. const send_token = typeof LAUNCH_TOKEN !== 'undefined' && LAUNCH_TOKEN !== null ? LAUNCH_TOKEN : play_id - scoreSrv.getWidgetInstanceScores(inst_id, send_token, result => { + ScoreSrv.getWidgetInstanceScores(inst_id, send_token, (result) => { _populateScores(result.scores) attemptsLeft = result.attempts_left dfd.resolve() }) } else { // Only want score corresponding to play_id if guest widget - scoreSrv.getGuestWidgetInstanceScores(inst_id, play_id, scores => { + ScoreSrv.getGuestWidgetInstanceScores(inst_id, play_id, (scores) => { _populateScores(scores) dfd.resolve() }) @@ -157,7 +156,7 @@ app.controller('scorePageController', function(Please, $scope, $q, $timeout, wid return dfd.promise } - const _populateScores = scores => { + const _populateScores = (scores) => { if (scores === null || scores.length < 1) { if (single_id) { single_id = null @@ -183,9 +182,9 @@ app.controller('scorePageController', function(Please, $scope, $q, $timeout, wid scoresLoadPromise = $q.defer() if (isPreview) { currentAttempt = 1 - scoreSrv.getWidgetInstancePlayScores(null, widgetInstance.id, _displayDetails) + ScoreSrv.getWidgetInstancePlayScores(null, widgetInstance.id, _displayDetails) } else if (single_id) { - scoreSrv.getWidgetInstancePlayScores(single_id, null, _displayDetails) + ScoreSrv.getWidgetInstancePlayScores(single_id, null, _displayDetails) } else { // get the current attempt from the url const hash = getAttemptNumberFromHash() @@ -199,7 +198,7 @@ app.controller('scorePageController', function(Please, $scope, $q, $timeout, wid if (details[$scope.attempts.length - currentAttempt] != null) { _displayDetails(details[$scope.attempts.length - currentAttempt]) } else { - scoreSrv.getWidgetInstancePlayScores(play_id, null, _displayDetails) + ScoreSrv.getWidgetInstancePlayScores(play_id, null, _displayDetails) } } } @@ -212,7 +211,7 @@ app.controller('scorePageController', function(Please, $scope, $q, $timeout, wid // Build the data for the overview section, prep for display through Underscore const widget = { title: widgetInstance.name, - dates: attempt_dates + dates: attempt_dates, } // show play again button? @@ -263,7 +262,7 @@ app.controller('scorePageController', function(Please, $scope, $q, $timeout, wid $scope.headerStyle = { 'font-size': textSize, - 'padding-top': paddingSize + 'padding-top': paddingSize, } $scope.hidePlayAgain = hidePlayAgain @@ -356,7 +355,7 @@ app.controller('scorePageController', function(Please, $scope, $q, $timeout, wid .script(`${cdnBase}jqPlot/1.0.9/plugins/jqplot.highlighter.min.js`) .wait(() => // ========== BUILD THE GRAPH ============= - scoreSrv.getWidgetInstanceScoreSummary(widgetInstance.id, data => { + ScoreSrv.getWidgetInstanceScoreSummary(widgetInstance.id, (data) => { // add up all semesters data into one dataset _graphData = [ ['0-9%', 0], @@ -368,7 +367,7 @@ app.controller('scorePageController', function(Please, $scope, $q, $timeout, wid ['60-69%', 0], ['70-79%', 0], ['80-89%', 0], - ['90-100%', 0] + ['90-100%', 0], ] for (let d of Array.from(data)) { @@ -389,45 +388,45 @@ app.controller('scorePageController', function(Please, $scope, $q, $timeout, wid color: '#1e91e1', rendererOptions: { animation: { - speed: 500 - } - } - } + speed: 500, + }, + }, + }, ], seriesDefaults: { showMarker: false, pointLabels: { show: true, formatString: '%.0f', - color: '#000' - } + color: '#000', + }, }, title: { text: "Compare Your Score With Everyone Else's", - fontFamily: 'Lato, Lucida Grande, Arial, sans' + fontFamily: 'Lato, Lucida Grande, Arial, sans', }, axesDefaults: { tickRenderer: $.jqplot.CanvasAxisTickRenderer, tickOptions: { angle: 0, fontSize: '8pt', - color: '#000' - } + color: '#000', + }, }, axes: { xaxis: { renderer: $.jqplot.CategoryAxisRenderer, - label: 'Score Percent' + label: 'Score Percent', }, yaxis: { tickOptions: { formatString: '%.1f', angle: 45 }, label: 'Number of Scores', labelRenderer: $.jqplot.CanvasAxisLabelRenderer, - color: '#000' - } + color: '#000', + }, }, cursor: { show: false }, - grid: { shadow: false } + grid: { shadow: false }, } // light the fuse @@ -436,7 +435,7 @@ app.controller('scorePageController', function(Please, $scope, $q, $timeout, wid ) } - const _displayDetails = results => { + const _displayDetails = (results) => { let score if (!$scope.customScoreScreen) { @@ -499,7 +498,7 @@ app.controller('scorePageController', function(Please, $scope, $q, $timeout, wid scoreTable = deets.details[0].table if ($scope.customScoreScreen) { const created_at = ~~deets.overview.created_at - scoreSrv.getWidgetInstanceQSet(play_id, widget_id, created_at, data => { + ScoreSrv.getWidgetInstanceQSet(play_id, widget_id, created_at, (data) => { if ( (data != null ? data.title : undefined) === 'Permission Denied' || data.title === 'error' @@ -517,7 +516,7 @@ app.controller('scorePageController', function(Please, $scope, $q, $timeout, wid } } - const _addCircleToDetailTable = detail => { + const _addCircleToDetailTable = (detail) => { detail.forEach((item, i) => { if (item.table && item.table.length) { item.table.forEach((table, j) => { @@ -545,14 +544,14 @@ app.controller('scorePageController', function(Please, $scope, $q, $timeout, wid // broadcasts a postMessage to inform Obojobo, or other platforms, about a score event // Bypasses the LTI interface and provides an alternative for platforms that use embedded Materia to listen for a score - const sendPostMessage = score => { + const sendPostMessage = (score) => { if (parent.postMessage && JSON.stringify) { parent.postMessage( JSON.stringify({ type: 'materiaScoreRecorded', source: 'score-controller', widget: widgetInstance, - score + score, }), '*' ) @@ -572,7 +571,7 @@ app.controller('scorePageController', function(Please, $scope, $q, $timeout, wid } const _getScoreDistribution = () => { - scoreSrv.getScoreDistribution(widgetInstance.id, data => { + ScoreSrv.getScoreDistribution(widgetInstance.id, (data) => { _sendToWidget('scoreDistribution', [data]) }) } @@ -597,7 +596,7 @@ app.controller('scorePageController', function(Please, $scope, $q, $timeout, wid _sendToWidget('updateWidget', [qset, scoreTable]) } - const _setHeight = h => { + const _setHeight = (h) => { const min_h = widgetInstance.widget.height let desiredHeight = Math.max(h, min_h) scoreWidget.style.height = `${desiredHeight}px` diff --git a/src/js/controllers/ctrl-user-current.js b/src/js/controllers/ctrl-user-current.js new file mode 100644 index 00000000..7d9bddc2 --- /dev/null +++ b/src/js/controllers/ctrl-user-current.js @@ -0,0 +1,4 @@ +const app = angular.module('materia') +app.controller('UserCurrentCtrl', ($scope, $sce, UserServ, $http, $rootScope) => { + $scope.currentUser = UserServ.getCurrentUser() +}) diff --git a/src/js/controllers/ctrl-login.js b/src/js/controllers/ctrl-user-login.js similarity index 51% rename from src/js/controllers/ctrl-login.js rename to src/js/controllers/ctrl-user-login.js index 83c9127c..790b548e 100644 --- a/src/js/controllers/ctrl-login.js +++ b/src/js/controllers/ctrl-user-login.js @@ -1,7 +1,7 @@ const app = angular.module('materia') app.controller( - 'loginCtrl', - ($scope, dateTimeServ) => + 'UserLoginCtrl', + ($scope, DateTimeServ) => // Widget login partial has this on widgets with expiration - ($scope.time = date => dateTimeServ.fixTime(date, $scope.date)) + ($scope.time = (date) => DateTimeServ.fixTime(date, $scope.date)) ) diff --git a/src/js/controllers/ctrl-notification.js b/src/js/controllers/ctrl-user-notification.js similarity index 68% rename from src/js/controllers/ctrl-notification.js rename to src/js/controllers/ctrl-user-notification.js index a9013c82..88d409d3 100644 --- a/src/js/controllers/ctrl-notification.js +++ b/src/js/controllers/ctrl-user-notification.js @@ -1,5 +1,5 @@ const app = angular.module('materia') -app.controller('notificationCtrl', function(Please, $scope, $sce) { +app.controller('UserNotificationCtrl', function (Please, $scope, $sce) { let $notices = document.querySelector('#notices') const _toggleOpen = () => { $scope.isOpen = !$scope.isOpen @@ -9,7 +9,7 @@ app.controller('notificationCtrl', function(Please, $scope, $sce) { let note = $scope.notifications[index] note.deleted = true Please.$apply() - Materia.Coms.Json.send('notification_delete', [id]).then(success => { + Materia.Coms.Json.send('notification_delete', [id]).then((success) => { if (success) { $scope.notifications.splice(index, 1) } else { @@ -22,10 +22,10 @@ app.controller('notificationCtrl', function(Please, $scope, $sce) { $scope.notifications = [] $scope.isOpen = false $scope.removeNotification = _removeNotification - $scope.trust = notification => $sce.trustAsHtml(notification) + $scope.trust = (notification) => $sce.trustAsHtml(notification) $scope.toggleOpen = _toggleOpen - Materia.Coms.Json.send('notifications_get').then(notifications => { + Materia.Coms.Json.send('notifications_get').then((notifications) => { $scope.notifications = notifications Please.$apply() }) diff --git a/src/js/controllers/ctrl-profile.js b/src/js/controllers/ctrl-user-profile.js similarity index 68% rename from src/js/controllers/ctrl-profile.js rename to src/js/controllers/ctrl-user-profile.js index 8d4ff254..b9812f87 100644 --- a/src/js/controllers/ctrl-profile.js +++ b/src/js/controllers/ctrl-user-profile.js @@ -1,10 +1,10 @@ const app = angular.module('materia') -app.controller('profileCtrl', function(Please, $scope, userServ, apiServ, dateTimeServ, $log) { +app.controller('UserProfileCtrl', function (Please, $scope, UserServ, APIServ, DateTimeServ, $log) { let loaded_offset = 0 // Shows selected game information on the mainscreen. // @param data Score data sent back from the server - const _showPlayActivity = data => { + const _showPlayActivity = (data) => { if (!$scope.activities) { $scope.activities = [] } @@ -20,40 +20,40 @@ app.controller('profileCtrl', function(Please, $scope, userServ, apiServ, dateTi $scope.loading = true Materia.Coms.Json.get(`/api/user/activity?range=10&start=${loaded_offset}`) - .then(result => { - apiServ.filterError(result) + .then((result) => { + APIServ.filterError(result) _showPlayActivity(result) }) - .catch(error => { + .catch((error) => { $log.error('Error loading user activity') }) } - const _getLink = activity => { + const _getLink = (activity) => { if (activity.is_complete === '1') { return `/scores/${activity.inst_id}#play-${activity.play_id}` } return '' } - const _getScore = activity => { + const _getScore = (activity) => { if (activity.is_complete === '1') { return Math.round(parseFloat(activity.percent)) } return '--' } - const _getStatus = activity => { + const _getStatus = (activity) => { if (activity.is_complete === '1') { return '' } return 'No Score Recorded' } - const _getDate = activity => - dateTimeServ.parseObjectToDateString(activity.created_at) + + const _getDate = (activity) => + DateTimeServ.parseObjectToDateString(activity.created_at) + ' at ' + - dateTimeServ.fixTime(parseInt(activity.created_at, 10) * 1000, DATE) + DateTimeServ.fixTime(parseInt(activity.created_at, 10) * 1000, DATE) // expose on scope @@ -66,8 +66,8 @@ app.controller('profileCtrl', function(Please, $scope, userServ, apiServ, dateTi $scope.loading = false $scope.user = {} $scope.avatar = '' - $scope.user = userServ.getCurrentUser() - $scope.avatar = userServ.getCurrentUserAvatar(100) + $scope.user = UserServ.getCurrentUser() + $scope.avatar = UserServ.getCurrentUserAvatar(100) // initialize $scope.getLogs() diff --git a/src/js/controllers/ctrl-settings.js b/src/js/controllers/ctrl-user-settings.js similarity index 56% rename from src/js/controllers/ctrl-settings.js rename to src/js/controllers/ctrl-user-settings.js index 755eeed8..a67643b6 100644 --- a/src/js/controllers/ctrl-settings.js +++ b/src/js/controllers/ctrl-user-settings.js @@ -1,28 +1,35 @@ const app = angular.module('materia') -app.controller('settingsController', function($scope, Please, userServ, apiServ, $log) { +app.controller('UserSettingsController', function ( + $scope, + Please, + UserServ, + APIServ, + $log, + $window +) { const _saveSettings = () => { Materia.Set.Throbber.startSpin('.page') const newSettings = { notify: $scope.user.notify, - useGravatar: $scope.useGravatar + useGravatar: $scope.useGravatar, } Materia.Coms.Json.post('/api/user/settings', newSettings) - .then(result => { - apiServ.filterError(result) + .then((result) => { + APIServ.filterError(result) Materia.Set.Throbber.stopSpin('.page') $scope.settingsForm.$setPristine() if (result.success) { // update my scope object for (let k in result.meta) { - userServ.updateSettings(k, result.meta[k]) + UserServ.updateSettings(k, result.meta[k]) } // update the user avatar if ((result.avatar != null ? result.avatar.length : undefined) > 0) { - userServ.updateSettings('avatar', result.avatar) - $scope.avatar = userServ.getCurrentUserAvatar(100) + UserServ.updateSettings('avatar', result.avatar) + $scope.avatar = UserServ.getCurrentUserAvatar(100) } } @@ -35,8 +42,14 @@ app.controller('settingsController', function($scope, Please, userServ, apiServ, }) } - $scope.user = userServ.getCurrentUser() - $scope.avatar = userServ.getCurrentUserAvatar(100) + $scope.user = UserServ.getCurrentUser() + $scope.avatar = UserServ.getCurrentUserAvatar(100) $scope.useGravatar = $scope.user.avatar.indexOf('gravatar') > -1 $scope.saveSettings = _saveSettings + + if (($scope.beardMode = $window.localStorage.beardMode)) { + $scope.disableBeardMode = () => { + $scope.beardMode = $window.localStorage.beardMode = false + } + } }) diff --git a/src/js/controllers/ctrl-widget-details.js b/src/js/controllers/ctrl-widget-catalog-details.js similarity index 91% rename from src/js/controllers/ctrl-widget-details.js rename to src/js/controllers/ctrl-widget-catalog-details.js index fdc46126..b7412f24 100644 --- a/src/js/controllers/ctrl-widget-details.js +++ b/src/js/controllers/ctrl-widget-catalog-details.js @@ -1,19 +1,16 @@ const app = angular.module('materia') -app.controller('widgetDetailsController', function( +app.controller('WidgetCatalogDetailsController', function ( Please, $scope, $window, $document, $timeout, - widgetSrv + WidgetSrv ) { let _pics let _offset const nameArr = window.location.pathname.replace('/widgets/', '').split('/') - const widgetID = nameArr - .pop() - .split('-') - .shift() + const widgetID = nameArr.pop().split('-').shift() const tooltipDescriptions = { Customizable: 'As the widget creator, you supply the widget with data to make it relevant to your course.', @@ -24,19 +21,19 @@ app.controller('widgetDetailsController', function( 'Multiple Choice': 'Users select a response from a collection of possible answers to questions provided by the widget.', 'Mobile Friendly': 'Designed with HTML5 to work on mobile devices like the iPad and iPhone.', - Fullscreen: 'This widget may be allowed to temporarily take up your entire screen.' + Fullscreen: 'This widget may be allowed to temporarily take up your entire screen.', } - const _tooltipObject = text => ({ + const _tooltipObject = (text) => ({ text, show: false, description: - tooltipDescriptions[text] || 'This feature has no additional information associated with it.' + tooltipDescriptions[text] || 'This feature has no additional information associated with it.', }) // Populates the details page with content // @object The current widget. - const _populateDefaults = widget => { + const _populateDefaults = (widget) => { const date = new Date(widget['created_at'] * 1000) $scope.widget = { @@ -52,7 +49,7 @@ app.controller('widgetDetailsController', function( players_guide: document.location.pathname + '/players-guide', created: date.toLocaleDateString(), width: ~~widget.width, - height: ~~widget.height + height: ~~widget.height, } $scope.hasPlayerGuide = widget.player_guide != '' @@ -71,7 +68,7 @@ app.controller('widgetDetailsController', function( for (let i = 1; i <= $scope.numScreenshots; i++) { $scope.widget.screenshots.push({ full: Materia.Image.screenshotUrl(widget.dir, i), - thumb: Materia.Image.screenshotThumbUrl(widget.dir, i) + thumb: Materia.Image.screenshotThumbUrl(widget.dir, i), }) } $scope.demoScreenshot = `url(${$scope.widget.screenshots[0].full})` @@ -94,7 +91,7 @@ app.controller('widgetDetailsController', function( _pics = document.getElementById('pics-scroller') const _hammer = new Hammer(_pics) _offset = 0 - _hammer.on('pan', e => { + _hammer.on('pan', (e) => { if (e.center.x == 0 && e.center.y == 0) { // fixes hammer/chrome issue with touch vertical scrolling // (see hammerjs issue #1050) @@ -154,7 +151,7 @@ app.controller('widgetDetailsController', function( const _showDemoClicked = () => { if (isWideEnough()) { $scope.demoLoading = true - Materia.Coms.Json.send('session_play_create', [$scope.inst_id]).then(playId => { + Materia.Coms.Json.send('session_play_create', [$scope.inst_id]).then((playId) => { $window.PLAY_ID = playId $scope.demoHeight = $scope.widget.height + 48 + 'px' $scope.demoWidth = $scope.widget.width + 10 + 'px' @@ -178,11 +175,11 @@ app.controller('widgetDetailsController', function( $scope.selectedImage = 0 $scope.showDemoClicked = _showDemoClicked - $scope.selectImage = i => ($scope.selectedImage = i) - $scope.nextImage = i => { + $scope.selectImage = (i) => ($scope.selectedImage = i) + $scope.nextImage = (i) => { $scope.selectedImage = ($scope.selectedImage + 1) % ($scope.numScreenshots + 1) } - $scope.prevImage = i => { + $scope.prevImage = (i) => { $scope.selectedImage = ($scope.selectedImage + $scope.numScreenshots) % ($scope.numScreenshots + 1) } @@ -193,7 +190,7 @@ app.controller('widgetDetailsController', function( // initialize initHammer() - widgetSrv.getWidgetInfo(widgetID).then(widget => { + WidgetSrv.getWidgetInfo(widgetID).then((widget) => { _populateDefaults(widget) }) }) diff --git a/src/js/controllers/ctrl-widget-details.test.js b/src/js/controllers/ctrl-widget-catalog-details.test.js similarity index 93% rename from src/js/controllers/ctrl-widget-details.test.js rename to src/js/controllers/ctrl-widget-catalog-details.test.js index ec13109b..9bf94090 100644 --- a/src/js/controllers/ctrl-widget-details.test.js +++ b/src/js/controllers/ctrl-widget-catalog-details.test.js @@ -1,4 +1,4 @@ -describe('widgetDetailsController', () => { +describe('WidgetCatalogDetailsController', () => { var $controller var mockPlease var $q @@ -22,10 +22,10 @@ describe('widgetDetailsController', () => { about: 'about', supported_data: ['supported1', 'supported2'], features: ['feature1', 'feature2'], - demo: 'abCD1' + demo: 'abCD1', }, width: '700', - height: '700' + height: '700', } beforeEach(() => { @@ -35,11 +35,11 @@ describe('widgetDetailsController', () => { // mock window.location mockWindow = {} - mockLocationSet = jest.fn(l => (location = l)) + mockLocationSet = jest.fn((l) => (location = l)) mockLocationGet = jest.fn(() => location) Object.defineProperty(mockWindow, 'location', { get: mockLocationGet, - set: mockLocationSet + set: mockLocationSet, }) app.factory('$window', () => mockWindow) @@ -50,15 +50,15 @@ describe('widgetDetailsController', () => { ` - require('../materia-namespace') - require('../materia-constants') + require('../common/materia-namespace') + require('../common/materia-constants') require('../materia/materia.coms.json') require('../services/srv-selectedwidget') require('../services/srv-datetime') require('../services/srv-widget') require('ngmodal/dist/ng-modal') require('hammerjs') - require('./ctrl-widget-details') + require('./ctrl-widget-catalog-details') inject((_$controller_, _$document_, _$window_, _$timeout_, _$q_, _$rootScope_) => { $controller = _$controller_ @@ -95,10 +95,10 @@ describe('widgetDetailsController', () => { $scope = { $watch: jest.fn(), - $on: jest.fn() + $on: jest.fn(), } - var controller = $controller('widgetDetailsController', { $scope }) + var controller = $controller('WidgetCatalogDetailsController', { $scope }) }) const setup = (customWidget = false, pageWidth = 1000) => { @@ -113,7 +113,7 @@ describe('widgetDetailsController', () => { const mockSessionCreate = () => { return (Namespace('Materia.Coms.Json').send = jest.fn(() => { return { - then: cb => cb('play-id') + then: (cb) => cb('play-id'), } })) } diff --git a/src/js/controllers/ctrl-widget-catalog.js b/src/js/controllers/ctrl-widget-catalog.js index 5e87b1ed..b967b11a 100644 --- a/src/js/controllers/ctrl-widget-catalog.js +++ b/src/js/controllers/ctrl-widget-catalog.js @@ -5,19 +5,19 @@ const app = angular.module('materia') // when the current url matches the widget catalog // then use html5Mode to allow the filters and search to update the url // and add ng-animate -// ex: /widgets or /widgets/1-adventrue +// ex: /widgets or /widgets/1-adventure if (window.location.href.match(/\/widgets($|\/\D|\?)/g)) { - app.config(function($locationProvider) { + app.config(function ($locationProvider) { $locationProvider.html5Mode({ enabled: true, - requireBase: false + requireBase: false, }) }) app.requires.push('ngAnimate') } -app.controller('widgetCatalogCtrl', function(Please, $scope, $window, $location, widgetSrv) { +app.controller('WidgetCatalogCtrl', function (Please, $scope, $window, $location, WidgetSrv) { const filterList = {} // key is raw filter name, value is filter object const mapCleanToFilter = {} // key is clean name, value is filter object const displayedWidgets = [] @@ -47,7 +47,7 @@ app.controller('widgetCatalogCtrl', function(Please, $scope, $window, $location, clearFilters(hideFilters) } - const toggleFilter = filterName => { + const toggleFilter = (filterName) => { const filter = filterList[filterName] setFilter(filter, !filter.isActive) _updateWidgetDisplay() @@ -65,22 +65,22 @@ app.controller('widgetCatalogCtrl', function(Please, $scope, $window, $location, const filter = { isActive: false, text: `${name}${appendLabel}`, - clean + clean, } filterList[name] = filter mapCleanToFilter[clean] = filter } - const _getFiltersFromWidgets = widgets => { - widgets.forEach(widget => { + const _getFiltersFromWidgets = (widgets) => { + widgets.forEach((widget) => { if (widget.meta_data.hasOwnProperty('features')) { - widget.meta_data.features.forEach(feature => { + widget.meta_data.features.forEach((feature) => { if (!filterList.hasOwnProperty(feature)) _registerFilter(feature) }) } if (widget.meta_data.hasOwnProperty('supported_data')) { - widget.meta_data.supported_data.forEach(data => { + widget.meta_data.supported_data.forEach((data) => { if (!filterList.hasOwnProperty(data)) _registerFilter(data, ' Questions') }) } @@ -88,7 +88,7 @@ app.controller('widgetCatalogCtrl', function(Please, $scope, $window, $location, } // checks filters and returns true if the widget should be shown, false if filtered out - const _isWidgetVisible = widget => { + const _isWidgetVisible = (widget) => { const wFeatures = widget.meta_data.features const wSupport = widget.meta_data.supported_data @@ -116,9 +116,9 @@ app.controller('widgetCatalogCtrl', function(Please, $scope, $window, $location, } const _updateWidgetDisplay = () => { - const widgets = allWidgets.filter(w => _isWidgetVisible(w)) + const widgets = allWidgets.filter((w) => _isWidgetVisible(w)) $scope.count = widgets.length - $scope.activeFilters = Object.keys(filterList).filter(key => filterList[key].isActive) + $scope.activeFilters = Object.keys(filterList).filter((key) => filterList[key].isActive) $scope.isFiltered = widgets.length != allWidgets.length if ($scope.isFiltered) { @@ -126,7 +126,7 @@ app.controller('widgetCatalogCtrl', function(Please, $scope, $window, $location, $scope.widgets = widgets } else { // no filters active - show the featured list - $scope.widgets = widgets.filter(w => w.in_catalog != '1') + $scope.widgets = widgets.filter((w) => w.in_catalog != '1') } Please.$apply() @@ -140,7 +140,7 @@ app.controller('widgetCatalogCtrl', function(Please, $scope, $window, $location, const _loadWidgets = () => { // load list of widgets - widgetSrv.getWidgetsByType('all').then(loaded => { + WidgetSrv.getWidgetsByType('all').then((loaded) => { if (!loaded || !loaded.length || !loaded.length > 0) { resetFilters() loaded = [] @@ -152,12 +152,12 @@ app.controller('widgetCatalogCtrl', function(Please, $scope, $window, $location, _getFiltersFromWidgets(allWidgets) // memoize icon paths - allWidgets.forEach(widget => { + allWidgets.forEach((widget) => { widget.icon = Materia.Image.iconUrl(widget.dir, 275) }) $scope.totalWidgets = allWidgets.length - $scope.featuredWidgets = allWidgets.filter(w => w.in_catalog == '1') + $scope.featuredWidgets = allWidgets.filter((w) => w.in_catalog == '1') // start watching search input $scope.$watch('search', _onSearch) @@ -219,7 +219,7 @@ app.controller('widgetCatalogCtrl', function(Please, $scope, $window, $location, /* develblock:start */ // these method are exposed for testing $scope.jestTest = { - getLocalVar: name => eval(name) + getLocalVar: (name) => eval(name), } /* develblock:end */ }) diff --git a/src/js/controllers/ctrl-widget-catalog.test.js b/src/js/controllers/ctrl-widget-catalog.test.js index 3a45cb0c..db6c717a 100644 --- a/src/js/controllers/ctrl-widget-catalog.test.js +++ b/src/js/controllers/ctrl-widget-catalog.test.js @@ -1,4 +1,4 @@ -describe('widgetCatalogController', () => { +describe('WidgetCatalogCtrl', () => { let $controller let $q let $scope @@ -19,9 +19,9 @@ describe('widgetCatalogController', () => { demo: '1', excerpt: 'more information about the widget', features: ['feature1', 'feature3'], - supported_data: ['supported1', 'supported_three', 'SuPpOrTeD FoUr!!'] + supported_data: ['supported1', 'supported_three', 'SuPpOrTeD FoUr!!'], }, - name: 'widget1' + name: 'widget1', } const widget2 = { id: 2, @@ -32,9 +32,9 @@ describe('widgetCatalogController', () => { demo: '2', excerpt: 'more information about the widget', features: ['feature2', 'feature3'], - supported_data: ['supported1', 'supported2'] + supported_data: ['supported1', 'supported2'], }, - name: 'widget2' + name: 'widget2', } const widget3 = { id: 3, @@ -45,9 +45,9 @@ describe('widgetCatalogController', () => { demo: '3', excerpt: 'more information about the widget', features: [], - supported_data: [] + supported_data: [], }, - name: 'widget3' + name: 'widget3', } const widgetWithoutFeatures = { @@ -57,10 +57,10 @@ describe('widgetCatalogController', () => { meta_data: { about: 'information about the widget', demo: '4', - excerpt: 'more information about the widget' + excerpt: 'more information about the widget', // features and supported_data are null!! }, - name: 'widgetWithoutFeatures' + name: 'widgetWithoutFeatures', } beforeEach(() => { @@ -69,17 +69,17 @@ describe('widgetCatalogController', () => { // why? because it's an internal private method and getting a handle // to wait for it to finish is difficult let getWidgetsByTypeImmediately = jest.fn().mockReturnValue({ - then: cb => { + then: (cb) => { cb(widgetsToReturn) - } + }, }) // mock all the required services mockWidgetSrv = { getWidgetsByType: getWidgetsByTypeImmediately } let app = angular.module('materia') app.factory('Please', () => ({ $apply: jest.fn() })) - app.factory('selectedWidgetSrv', () => ({})) - app.factory('dateTimeServ', () => ({})) - app.factory('widgetSrv', () => mockWidgetSrv) + app.factory('SelectedWidgetSrv', () => ({})) + app.factory('DateTimeServ', () => ({})) + app.factory('WidgetSrv', () => mockWidgetSrv) // mock Materia.Image.iconUrl mockIconUrl = jest.fn().mockReturnValue('widget.jpg') @@ -87,11 +87,11 @@ describe('widgetCatalogController', () => { // mock window.location let mockWindow = {} - let mockLocationSet = jest.fn(l => (location = l)) + let mockLocationSet = jest.fn((l) => (location = l)) let mockLocationGet = jest.fn(() => location) Object.defineProperty(mockWindow, 'location', { get: mockLocationGet, - set: mockLocationSet + set: mockLocationSet, }) app.factory('$window', () => mockWindow) @@ -101,7 +101,7 @@ describe('widgetCatalogController', () => { // build a mock $scope $scope = { $watch: jest.fn(), - $on: jest.fn() + $on: jest.fn(), } mockLocationSearch = { search: '' } @@ -120,25 +120,25 @@ describe('widgetCatalogController', () => { return mockLocationSearch } return { - replace: jest.fn() + replace: jest.fn(), } }) }) }) it('defines expected scope vars', () => { - $controller('widgetCatalogCtrl', { $scope }) + $controller('WidgetCatalogCtrl', { $scope }) expect(Object.keys($scope)).toMatchSnapshot() }) it('loads widgets from the widget service', () => { - $controller('widgetCatalogCtrl', { $scope }) + $controller('WidgetCatalogCtrl', { $scope }) expect(mockWidgetSrv.getWidgetsByType).toHaveBeenCalledTimes(1) expect(mockWidgetSrv.getWidgetsByType).toHaveBeenCalledWith('all') }) it('uses Materia.Image.iconUrl to get each widget icon', () => { - $controller('widgetCatalogCtrl', { $scope }) + $controller('WidgetCatalogCtrl', { $scope }) expect(mockIconUrl).toHaveBeenCalledTimes(4) expect(mockIconUrl).toHaveBeenCalledWith('mockDir1', 275) expect(mockIconUrl).toHaveBeenCalledWith('mockDir2', 275) @@ -148,7 +148,7 @@ describe('widgetCatalogController', () => { it('handles no widgets', () => { widgetsToReturn = [] - $controller('widgetCatalogCtrl', { $scope }) + $controller('WidgetCatalogCtrl', { $scope }) expect($scope.widgets).toHaveLength(0) expect($scope.featuredWidgets).toHaveLength(0) @@ -159,7 +159,7 @@ describe('widgetCatalogController', () => { }) it('initializes with no filters and search on initial load', () => { - $controller('widgetCatalogCtrl', { $scope }) + $controller('WidgetCatalogCtrl', { $scope }) expect(Object.keys($scope)).toMatchSnapshot() expect($scope.search).toBe('') @@ -185,9 +185,9 @@ describe('widgetCatalogController', () => { feature1: true, search: 'widget', invalid_feature: true, - supported_three: true + supported_three: true, } - $controller('widgetCatalogCtrl', { $scope }) + $controller('WidgetCatalogCtrl', { $scope }) expect(Object.keys($scope)).toMatchSnapshot() expect($scope.search).toBe('widget') @@ -209,13 +209,13 @@ describe('widgetCatalogController', () => { }) it('properly generates clean filter names', () => { - $controller('widgetCatalogCtrl', { $scope }) + $controller('WidgetCatalogCtrl', { $scope }) const mapCleanToFilter = $scope.jestTest.getLocalVar('mapCleanToFilter') expect(Object.keys(mapCleanToFilter)).toMatchSnapshot() }) it('toggling on a filter updates scope', () => { - $controller('widgetCatalogCtrl', { $scope }) + $controller('WidgetCatalogCtrl', { $scope }) expect($scope.isFiltered).toBe(false) expect($scope.activeFilters).toHaveLength(0) expect($scope.filters['feature1'].isActive).toBe(false) @@ -233,7 +233,7 @@ describe('widgetCatalogController', () => { }) it('will filter widgets based on a search query', () => { - $controller('widgetCatalogCtrl', { $scope }) + $controller('WidgetCatalogCtrl', { $scope }) const _onSearch = $scope.jestTest.getLocalVar('_onSearch') expect($scope.count).toBe(4) @@ -256,7 +256,7 @@ describe('widgetCatalogController', () => { }) it('can toggle whether the filters are showing', () => { - $controller('widgetCatalogCtrl', { $scope }) + $controller('WidgetCatalogCtrl', { $scope }) $scope.showFilters() expect($scope.isShowingFilters).toBe(true) $scope.clearFilters() @@ -264,7 +264,7 @@ describe('widgetCatalogController', () => { }) it('can clear filters and search', () => { - $controller('widgetCatalogCtrl', { $scope }) + $controller('WidgetCatalogCtrl', { $scope }) const _onSearch = $scope.jestTest.getLocalVar('_onSearch') $scope.search = 'widget1' _onSearch() // enable search @@ -285,14 +285,14 @@ describe('widgetCatalogController', () => { it('handles no widgets having features', () => { widgetsToReturn = [widgetWithoutFeatures] - $controller('widgetCatalogCtrl', { $scope }) + $controller('WidgetCatalogCtrl', { $scope }) // $scope.toggleFilter('feature1') // toggle on expect($scope.count).toEqual(1) }) it('omits widgets with null features when a feature filter is enabled', () => { widgetsToReturn = [widget1, widgetWithoutFeatures] - $controller('widgetCatalogCtrl', { $scope }) + $controller('WidgetCatalogCtrl', { $scope }) expect($scope.count).toEqual(2) $scope.toggleFilter('feature1') // toggle on expect($scope.count).toEqual(1) diff --git a/src/js/controllers/ctrl-create.js b/src/js/controllers/ctrl-widget-creator.js similarity index 92% rename from src/js/controllers/ctrl-create.js rename to src/js/controllers/ctrl-widget-creator.js index b9ed3516..46830e5f 100644 --- a/src/js/controllers/ctrl-create.js +++ b/src/js/controllers/ctrl-widget-creator.js @@ -1,12 +1,12 @@ const app = angular.module('materia') -app.controller('createCtrl', function( +app.controller('WidgetCreatorCtrl', function ( Please, $scope, $q, $sce, $timeout, $interval, - widgetSrv, + WidgetSrv, Alert ) { $scope.alert = Alert @@ -30,7 +30,7 @@ app.controller('createCtrl', function( let widgetType = null let mediaFile = null - const _requestSave = mode => { + const _requestSave = (mode) => { // hide dialogs $scope.popup = '' @@ -68,16 +68,16 @@ app.controller('createCtrl', function( } } - const _cancelPublish = e => { + const _cancelPublish = (e) => { $scope.popup = '' } - const _cancelPreview = e => { + const _cancelPreview = (e) => { $scope.popup = '' } // If Initialization Fails - const onInitFail = msg => { + const onInitFail = (msg) => { stopHeartBeat() if (msg.toLowerCase() !== 'flash player required.') { _alert(msg, 'Failure', true, false) @@ -88,7 +88,7 @@ app.controller('createCtrl', function( const startHeartBeat = () => { const deferred = $q.defer() heartbeat = $interval(() => { - Materia.Coms.Json.send('session_author_verify', [null, false]).then(data => { + Materia.Coms.Json.send('session_author_verify', [null, false]).then((data) => { if (data !== true) { _alert('You have been logged out due to inactivity', 'Invalid Login', true, true) Please.$apply() @@ -107,7 +107,7 @@ app.controller('createCtrl', function( // Gets the qset of a loaded instance const getQset = () => { - return Materia.Coms.Json.send('question_set_get', [inst_id]).then(data => { + return Materia.Coms.Json.send('question_set_get', [inst_id]).then((data) => { if ( (data != null ? data.title : undefined) === 'Permission Denied' || data.title === 'error' @@ -158,7 +158,7 @@ app.controller('createCtrl', function( } } - const prePublishPermsCheck = widgetData => { + const prePublishPermsCheck = (widgetData) => { const deferred = $q.defer() checkUserPublishPerms(widgetData, true).then(() => deferred.resolve(widgetData)) return deferred.promise @@ -166,7 +166,7 @@ app.controller('createCtrl', function( const checkUserPublishPerms = (widgetData, newInstance) => { const deferred = $q.defer() - widgetSrv.canBePublishedByCurrentUser(widget_id).then(canPublish => { + WidgetSrv.canBePublishedByCurrentUser(widget_id).then((canPublish) => { $scope.canPublish = canPublish // if the widget is published and the current user can not publish it, then they can not edit it @@ -180,10 +180,10 @@ app.controller('createCtrl', function( } // build a my-widgets url to a specific widget - const getMyWidgetsUrl = instid => `${BASE_URL}my-widgets#${instid}` + const getMyWidgetsUrl = (instid) => `${BASE_URL}my-widgets#${instid}` // Embeds the creator - const embed = widgetData => { + const embed = (widgetData) => { const deferred = $q.defer() let creatorPath @@ -227,11 +227,11 @@ app.controller('createCtrl', function( return deferred.promise } - const embedHTML = htmlPath => { + const embedHTML = (htmlPath) => { $scope.htmlPath = htmlPath + '?' + widget_info.created_at Please.$apply() - const onPostMessage = e => { + const onPostMessage = (e) => { const origin = `${e.origin}/` if (origin === STATIC_CROSSDOMAIN || origin === BASE_URL) { const msg = JSON.parse(e.data) @@ -298,13 +298,13 @@ app.controller('createCtrl', function( URL_WEB: BASE_URL, URL_GET_ASSET: MEDIA_URL, widget_id, - inst_id + inst_id, } const params = { menu: 'false', allowFullScreen: 'true', - AllowScriptAccess: 'always' + AllowScriptAccess: 'always', } const attributes = { id: EMBED_TARGET, wmode: 'opaque' } const expressSwf = `${STATIC_CROSSDOMAIN}js/vendor/swfobject/expressInstall.swf` @@ -357,7 +357,7 @@ app.controller('createCtrl', function( Please.$apply() } - const onPreviewPopupBlocked = url => { + const onPreviewPopupBlocked = (url) => { $scope.popup = 'blocked' $scope.previewUrl = url Please.$apply() @@ -373,7 +373,7 @@ app.controller('createCtrl', function( } // Show an embedded dialog, as opposed to a popup - const showEmbedDialog = url => ($scope.iframeUrl = url) + const showEmbedDialog = (url) => ($scope.iframeUrl = url) // move the embed dialog off to invisibility const hideEmbedDialog = () => { @@ -385,7 +385,7 @@ app.controller('createCtrl', function( } // Note this is psuedo public as it's exposed to flash - const showMediaImporter = types => { + const showMediaImporter = (types) => { showEmbedDialog(`${BASE_URL}media/import#${types.join(',')}`) $scope.modal = true $timeout(() => { @@ -396,7 +396,7 @@ app.controller('createCtrl', function( // Called by the creator when a direct upload of media is requested - instead of asking user to select one themselves // Displays the media importer (which dispatches 'readyForDirectUpload') and pre-selects the mediaFile to be uploaded - const directUploadMedia = media => { + const directUploadMedia = (media) => { showMediaImporter(['jpg', 'gif', 'png', 'mp3']) mediaFile = media } @@ -412,10 +412,10 @@ app.controller('createCtrl', function( name: instanceName, qset: { version, data: qset }, is_draft: saveMode !== 'publish', - inst_id + inst_id, } - return widgetSrv.saveWidget(w).then(inst => { + return WidgetSrv.saveWidget(w).then((inst) => { // did we get back an error message? if ((inst != null ? inst.msg : undefined) != null) { onSaveCanceled(inst) @@ -451,7 +451,7 @@ app.controller('createCtrl', function( inst.name, inst.widget, inst.qset.data, - inst.qset.version + inst.qset.version, ]) inst_id = inst.id instance = inst @@ -471,7 +471,7 @@ app.controller('createCtrl', function( // When the Creator cancels a save request // Note this is psuedo public as it's exposed to flash - const onSaveCanceled = msg => { + const onSaveCanceled = (msg) => { $scope.saveText = 'Can Not Save!' if ((msg != null ? msg.msg : undefined) != null) { @@ -498,7 +498,7 @@ ${msg.toLowerCase()}`, } } - const setHeight = h => { + const setHeight = (h) => { creator.style.height = `${h}px` } @@ -522,9 +522,9 @@ ${msg.toLowerCase()}`, questions = JSON.parse(questions) //strip id from all imported questions and answers to avoid collisions - questions.forEach(question => { + questions.forEach((question) => { if (question.answers && question.answers.length > 0) { - question.answers.forEach(answer => { + question.answers.forEach((answer) => { answer.id = null }) } @@ -546,7 +546,7 @@ ${msg.toLowerCase()}`, } return sendToCreator('onMediaImportComplete', [anArray]) } - } + }, } // expose to scope @@ -576,9 +576,9 @@ ${msg.toLowerCase()}`, // load an existing widget getQset().then(() => { if (!$scope.invalid) { - $q(resolve => resolve(inst_id)) - .then(widgetSrv.lockWidget) - .then(widgetSrv.getWidget) + $q((resolve) => resolve(inst_id)) + .then(WidgetSrv.lockWidget) + .then(WidgetSrv.getWidget) .then(checkUserPublishPerms) .then(embed) .then(initCreator) @@ -589,8 +589,8 @@ ${msg.toLowerCase()}`, }) } else { // initialize a new creator - $q(resolve => resolve(widget_id)) - .then(widgetSrv.getWidgetInfo) + $q((resolve) => resolve(widget_id)) + .then(WidgetSrv.getWidgetInfo) .then(prePublishPermsCheck) .then(embed) .then(initCreator) diff --git a/src/js/controllers/ctrl-player.js b/src/js/controllers/ctrl-widget-player.js similarity index 93% rename from src/js/controllers/ctrl-player.js rename to src/js/controllers/ctrl-widget-player.js index 22d85a1e..f71b3bf1 100644 --- a/src/js/controllers/ctrl-player.js +++ b/src/js/controllers/ctrl-widget-player.js @@ -1,5 +1,5 @@ const app = angular.module('materia') -app.controller('playerCtrl', function( +app.controller('WidgetPlayerCtrl', function ( Please, $scope, $location, @@ -7,8 +7,8 @@ app.controller('playerCtrl', function( $interval, $window, $timeout, - widgetSrv, - userServ, + WidgetSrv, + UserServ, PLAYER, Alert ) { @@ -36,7 +36,7 @@ app.controller('playerCtrl', function( let scoreScreenPending = false // Keep track of the timer id for the heartbeat so we can clear the timeout let heartbeatInterval = -1 - // Calculates which screen to show (preview, embed, or normal) + // Calculates which screen UserServ to show (preview, embed, or normal) let scoreScreenURL = null // Queue of requests const pendingQueue = [] @@ -54,12 +54,12 @@ app.controller('playerCtrl', function( Please.$apply() } - const _sendAllPendingLogs = callback => { + const _sendAllPendingLogs = (callback) => { if (callback == null) { callback = () => {} } - $q(resolve => resolve()) + $q((resolve) => resolve()) .then(_sendPendingStorageLogs()) .then(_sendPendingPlayLogs) .then(callback) @@ -80,13 +80,13 @@ app.controller('playerCtrl', function( } } - const _addLog = log => { + const _addLog = (log) => { // add to pending logs log['game_time'] = (new Date().getTime() - startTime) / 1000 // log time in seconds pendingLogs.play.push(log) } - const _sendStorage = log => { + const _sendStorage = (log) => { if (!$scope.isPreview) { pendingLogs.storage.push(log) } @@ -107,7 +107,10 @@ app.controller('playerCtrl', function( default: endState = 'pending' // kill the heartbeat - $interval.cancel(heartbeatInterval) + if (heartbeatInterval !== -1) { + $interval.cancel(heartbeatInterval) + heartbeatInterval = -1 + } // required to end a play _addLog({ type: 2, item_id: 0, text: '', value: null }) // send anything remaining @@ -125,7 +128,7 @@ app.controller('playerCtrl', function( const _startHeartBeat = () => { const deferred = $q.defer() $interval(() => { - Materia.Coms.Json.send('session_play_verify', [play_id]).then(result => { + Materia.Coms.Json.send('session_play_verify', [play_id]).then((result) => { if (result !== true && instance.guest_access === false) { _alert( "Your play session is no longer valid. You'll need to reload the page and start over.", @@ -170,7 +173,7 @@ app.controller('playerCtrl', function( } } - const _onLoadFail = msg => _alert(`Failure: ${msg}`, null, true) + const _onLoadFail = (msg) => _alert(`Failure: ${msg}`, null, true) const _embed = () => { embedDonePromise = $q.defer() @@ -219,15 +222,15 @@ app.controller('playerCtrl', function( inst_id: $scope.inst_id, GIID: $scope.inst_id, URL_WEB: BASE_URL, - URL_GET_ASSET: 'media/' + URL_GET_ASSET: 'media/', } const params = { menu: 'false', allowFullScreen: 'true', - AllowScriptAccess: 'always' + AllowScriptAccess: 'always', } const attributes = { - id: PLAYER.EMBED_TARGET + id: PLAYER.EMBED_TARGET, } $scope.type = 'flash' @@ -247,7 +250,7 @@ app.controller('playerCtrl', function( embedTargetEl = document.getElementById(PLAYER.EMBED_TARGET) } - const _onPostMessage = e => { + const _onPostMessage = (e) => { if (e.origin === expectedOrigin) { const msg = JSON.parse(e.data) switch (msg.type) { @@ -279,7 +282,7 @@ app.controller('playerCtrl', function( } } - const _embedHTML = enginePath => { + const _embedHTML = (enginePath) => { $scope.type = 'html' $scope.htmlPath = enginePath + '?' + instance.widget.created_at Please.$apply() @@ -309,7 +312,7 @@ app.controller('playerCtrl', function( deferred.reject('Flash Player required.') } - widgetSrv.getWidget($scope.inst_id).then(inst => { + WidgetSrv.getWidget($scope.inst_id).then((inst) => { if (!inst.hasOwnProperty('id')) { return deferred.reject('Unable to get widget info.') } @@ -319,7 +322,7 @@ app.controller('playerCtrl', function( // Fullscreen flag set as an optional parameter in widget install.yaml; have to dig into instance widget's meta_data object to find it // can't use array.includes() since it's necessary to ensure comparison is case insensitive - let fullscreen = inst.widget.meta_data.features.find(f => f.toLowerCase() === 'fullscreen') + let fullscreen = inst.widget.meta_data.features.find((f) => f.toLowerCase() === 'fullscreen') $scope.allowFullScreen = fullscreen != undefined if (type === 'swf' && swfobject.hasFlashPlayerVersion(String(version)) === false) { @@ -369,7 +372,7 @@ app.controller('playerCtrl', function( const _getQuestionSet = () => { // TODO: if bad qSet : deferred.reject('Unable to load questions.') - return Materia.Coms.Json.send('question_set_get', [$scope.inst_id, play_id]).then(result => { + return Materia.Coms.Json.send('question_set_get', [$scope.inst_id, play_id]).then((result) => { qset = result }) } @@ -387,7 +390,7 @@ app.controller('playerCtrl', function( } return Materia.Coms.Json.send('play_logs_save', pendingQueue[0].request) - .then(result => { + .then((result) => { retryCount = 0 // reset on success if ($scope.alert.fatal) { $scope.alert.fatal = false @@ -473,7 +476,7 @@ app.controller('playerCtrl', function( } // converts current widget/instance structure to the one expected by the player - const _translateForApiVersion = inst => { + const _translateForApiVersion = (inst) => { // switch based on version expected by the widget let output switch (parseInt(inst.widget.api_version)) { @@ -508,7 +511,7 @@ app.controller('playerCtrl', function( editable: inst.widget.is_editable, previewUrl: inst.preview_url, userID: inst.user_id, - scoreModule: inst.widget.score_module + scoreModule: inst.widget.score_module, } break case 2: @@ -520,14 +523,14 @@ app.controller('playerCtrl', function( return output } - const _setHeight = h => { + const _setHeight = (h) => { const min_h = instance.widget.height let el = document.getElementsByClassName('center')[0] let desiredHeight = Math.max(h, min_h) el.style.height = `${desiredHeight}px` } - const _setVerticalScroll = location => { + const _setVerticalScroll = (location) => { const containerElement = document.getElementById('container') const calculatedLocation = window.scrollY + containerElement.getBoundingClientRect().y + location @@ -551,7 +554,7 @@ app.controller('playerCtrl', function( } } - const _beforeUnload = e => { + const _beforeUnload = (e) => { if (instance.widget.is_scorable === '1' && !$scope.isPreview && endState !== 'sent') { return 'Wait! Leaving now will forfeit this attempt. To save your score you must complete the widget.' } else { @@ -609,7 +612,7 @@ app.controller('playerCtrl', function( _translateForApiVersion, _setHeight, _showScoreScreen, - getLocalVar: name => eval(name), + getLocalVar: (name) => eval(name), /* istanbul ignore next */ setLocalVar: (name, value) => { /* istanbul ignore next */ @@ -617,16 +620,16 @@ app.controller('playerCtrl', function( /* istanbul ignore next */ x = value }, - setEmbedTargetEl: el => { + setEmbedTargetEl: (el) => { embedTargetEl = el }, - setQset: obj => { + setQset: (obj) => { qset = obj }, getEmbedDonePromise: () => embedDonePromise, - setEndState: state => { + setEndState: (state) => { endState = state - } + }, } /* develblock:end */ }) diff --git a/src/js/controllers/ctrl-player.test.js b/src/js/controllers/ctrl-widget-player.test.js similarity index 92% rename from src/js/controllers/ctrl-player.test.js rename to src/js/controllers/ctrl-widget-player.test.js index 3c2b6e03..ec20bfc5 100644 --- a/src/js/controllers/ctrl-player.test.js +++ b/src/js/controllers/ctrl-widget-player.test.js @@ -1,6 +1,6 @@ -describe('playerCtrl', () => { - let _widgetSrv - let _userServ +describe('WidgetPlayerCtrl', () => { + let _WidgetSrv + let _UserServ let _scope let sendMock let $q @@ -11,6 +11,7 @@ describe('playerCtrl', () => { let $interval let $location let mockPlease + const { location } = window let buildPostMessage = (type, data) => { let e = new Event('message') @@ -18,12 +19,12 @@ describe('playerCtrl', () => { (e.currentTarget = 'whaaaat'), (e.data = JSON.stringify({ type: type, - data: data + data: data, })) return e } - let mockSendPromiseOnce = result => { + let mockSendPromiseOnce = (result) => { sendMock.mockImplementationOnce((n, arg, cb) => { const deferred = $q.defer() deferred.resolve(result) @@ -36,24 +37,24 @@ describe('playerCtrl', () => { // mock dom elements let centerStyle = { width: -1, - height: -1 + height: -1, } let widgetStyle = { - display: 'none' + display: 'none', } let previewStyle = { - width: -1 + width: -1, } let embedStyle = { width: -1, - height: -1 + height: -1, } let mockHref = { - href: null + href: null, } let mockGetEl = jest @@ -66,8 +67,8 @@ describe('playerCtrl', () => { let mockEmbedTargetEl = { style: embedStyle, contentWindow: { - postMessage: mockPostMessageFromWidget - } + postMessage: mockPostMessageFromWidget, + }, } // mock the getElementsById needed for the widget @@ -79,10 +80,10 @@ describe('playerCtrl', () => { let mockCreateElement = jest.spyOn(document, 'createElement').mockReturnValueOnce(mockHref) // mock getting the instance from the api - _widgetSrv.getWidget.mockImplementationOnce(inst_id => ({ - then: jest.fn(cb => { + _WidgetSrv.getWidget.mockImplementationOnce((inst_id) => ({ + then: jest.fn((cb) => { cb(widgetInstance) - }) + }), })) global.PLAY_ID = 'ff88gg' @@ -94,7 +95,7 @@ describe('playerCtrl', () => { let mockWindowAddEventListener = jest.spyOn(window, 'addEventListener') // start the controller var $scope = { $watch: jest.fn(), inst_id: 'bb8', $apply: jest.fn() } - var controller = $controller('playerCtrl', { $scope }) + var controller = $controller('WidgetPlayerCtrl', { $scope }) let mockPostMessage = $scope.jestTest.getLocalVar('_onPostMessage') @@ -113,31 +114,30 @@ describe('playerCtrl', () => { widgetInstance, mockGetEl, mockGetElByID, - mockPostMessage + mockPostMessage, } } beforeEach(() => { + delete window.location + window.location = { assign: jest.fn() } mockPlease = { $apply: jest.fn() } let app = angular.module('materia') app.factory('Please', () => mockPlease) - jest.spyOn(window.location, 'assign').mockImplementation(() => { - true - }) - require('../materia-namespace') - require('../materia-constants') + require('../common/materia-namespace') + require('../common/materia-constants') - _userServ = { getAvatar: jest.fn(() => 'avatar') } - _widgetSrv = { - getWidget: jest.fn() + _UserServ = { getAvatar: jest.fn(() => 'avatar') } + _WidgetSrv = { + getWidget: jest.fn(), } _alert = {} - app.factory('widgetSrv', () => _widgetSrv) - app.factory('userServ', () => _userServ) + app.factory('WidgetSrv', () => _WidgetSrv) + app.factory('UserServ', () => _UserServ) app.factory('Alert', () => _alert) - require('./ctrl-player') + require('./ctrl-widget-player') inject((_$window_, $rootScope, _$q_, _$controller_, _$timeout_, _$interval_, _$location_) => { _scope = $rootScope.$new() @@ -155,18 +155,14 @@ describe('playerCtrl', () => { }) afterEach(() => { + window.location = location jest.clearAllMocks() - try { - window.location.assign.mockRestore() - document.getElementsByClassName.mockRestore() - document.getElementById.mockRestore() - document.createElement.mockRestore() - } catch (e) {} + jest.restoreAllMocks() }) it('defines expected scope vars', () => { var $scope = { $watch: jest.fn() } - var controller = $controller('playerCtrl', { $scope }) + var controller = $controller('WidgetPlayerCtrl', { $scope }) expect($scope.isPreview).toBe(false) expect($scope.allowFullScreen).toBe(false) @@ -190,12 +186,12 @@ describe('playerCtrl', () => { widgetStyle, centerStyle, widgetInstance, - mockGetEl + mockGetEl, } = setupDomStuff() // check all the widget initialization expect(mockPlease.$apply).toHaveBeenCalledTimes(3) - expect(_widgetSrv.getWidget).toHaveBeenLastCalledWith('bb8') + expect(_WidgetSrv.getWidget).toHaveBeenLastCalledWith('bb8') expect($scope.allowFullScreen).toBe(false) expect(centerStyle.width).toBe('800px') expect(centerStyle.height).toBe('600px') @@ -218,7 +214,7 @@ describe('playerCtrl', () => { widgetStyle, centerStyle, widgetInstance, - mockGetEl + mockGetEl, } = setupDomStuff() // varify the heartbeat request is sent after 30 seconds of initialization @@ -240,7 +236,7 @@ describe('playerCtrl', () => { widgetStyle, centerStyle, widgetInstance, - mockGetEl + mockGetEl, } = setupDomStuff() // mock widget start @@ -270,7 +266,7 @@ describe('playerCtrl', () => { widgetStyle, centerStyle, widgetInstance, - mockGetEl + mockGetEl, } = setupDomStuff() // mock widget start @@ -299,9 +295,9 @@ describe('playerCtrl', () => { { testStorage: true, value: 10, - whatever: 'yep' - } - ] + whatever: 'yep', + }, + ], ]) let expectedLogs = expect.objectContaining([ @@ -311,9 +307,9 @@ describe('playerCtrl', () => { game_time: expect.any(Number), testLog: true, value: 10, - whatever: 'yep' - } - ] + whatever: 'yep', + }, + ], ]) expect(sendMock).toHaveBeenCalledWith('play_storage_data_save', expectedStorage) @@ -333,7 +329,7 @@ describe('playerCtrl', () => { widgetStyle, centerStyle, widgetInstance, - mockGetEl + mockGetEl, } = setupDomStuff() // mock widget start @@ -365,7 +361,7 @@ describe('playerCtrl', () => { widgetStyle, centerStyle, widgetInstance, - mockGetEl + mockGetEl, } = setupDomStuff() // mock widget start @@ -375,8 +371,8 @@ describe('playerCtrl', () => { // let mockEmbedTargetEl = { getBoundingClientRect: jest.fn().mockReturnValueOnce({ - y: 0 - }) + y: 0, + }), } jest.spyOn(document, 'getElementById').mockReturnValueOnce(mockEmbedTargetEl) @@ -405,7 +401,7 @@ describe('playerCtrl', () => { widgetStyle, centerStyle, widgetInstance, - mockGetEl + mockGetEl, } = setupDomStuff() // mock widget start @@ -434,7 +430,7 @@ describe('playerCtrl', () => { widgetStyle, centerStyle, widgetInstance, - mockGetEl + mockGetEl, } = setupDomStuff() // mock widget start @@ -463,7 +459,7 @@ describe('playerCtrl', () => { widgetStyle, centerStyle, widgetInstance, - mockGetEl + mockGetEl, } = setupDomStuff() // test alert @@ -494,7 +490,7 @@ describe('playerCtrl', () => { widgetStyle, centerStyle, widgetInstance, - mockGetEl + mockGetEl, } = setupDomStuff() // test initialize post message @@ -516,7 +512,7 @@ describe('playerCtrl', () => { widgetStyle, centerStyle, widgetInstance, - mockGetEl + mockGetEl, } = setupDomStuff() mockSendPromiseOnce() @@ -545,12 +541,12 @@ describe('playerCtrl', () => { widgetStyle, centerStyle, widgetInstance, - mockGetEl + mockGetEl, } = setupDomStuff() mockSendPromiseOnce({ score_url: 'http:/localhost/score/screen/url', - type: 'success' + type: 'success', }) mockPostMessage(buildPostMessage('start', '')) @@ -574,7 +570,7 @@ describe('playerCtrl', () => { widgetStyle, centerStyle, widgetInstance, - mockGetEl + mockGetEl, } = setupDomStuff() mockSendPromiseOnce() @@ -603,7 +599,7 @@ describe('playerCtrl', () => { widgetStyle, centerStyle, widgetInstance, - mockGetEl + mockGetEl, } = setupDomStuff() $scope.isPreview = true @@ -635,7 +631,7 @@ describe('playerCtrl', () => { widgetStyle, centerStyle, widgetInstance, - mockGetEl + mockGetEl, } = setupDomStuff() $scope.isEmbedded = true @@ -665,7 +661,7 @@ describe('playerCtrl', () => { widgetStyle, centerStyle, widgetInstance, - mockGetEl + mockGetEl, } = setupDomStuff() expect(() => { @@ -673,8 +669,8 @@ describe('playerCtrl', () => { origin: 'this-doesnt-match', data: JSON.stringify({ type: 'start', - data: '' - }) + data: '', + }), }) }).toThrow() }) @@ -691,7 +687,7 @@ describe('playerCtrl', () => { widgetStyle, centerStyle, widgetInstance, - mockGetEl + mockGetEl, } = setupDomStuff() $scope.jestTest._sendAllPendingLogs(() => { @@ -719,7 +715,7 @@ describe('playerCtrl', () => { widgetStyle, centerStyle, widgetInstance, - mockGetEl + mockGetEl, } = setupDomStuff() $scope.jestTest.setQset(null) @@ -742,7 +738,7 @@ describe('playerCtrl', () => { widgetStyle, centerStyle, widgetInstance, - mockGetEl + mockGetEl, } = setupDomStuff() $scope.jestTest.setEmbedTargetEl(null) @@ -765,7 +761,7 @@ describe('playerCtrl', () => { widgetStyle, centerStyle, widgetInstance, - mockGetEl + mockGetEl, } = setupDomStuff() jest.spyOn($location, 'replace') @@ -794,7 +790,7 @@ describe('playerCtrl', () => { widgetStyle, centerStyle, widgetInstance, - mockGetEl + mockGetEl, } = setupDomStuff() jest.spyOn($location, 'replace') @@ -815,7 +811,7 @@ describe('playerCtrl', () => { it('embeds flash correctly', () => { global.swfobject = { hasFlashPlayerVersion: jest.fn(), - embedSWF: jest.fn() + embedSWF: jest.fn(), } let { @@ -829,12 +825,12 @@ describe('playerCtrl', () => { widgetStyle, centerStyle, widgetInstance, - mockGetEl + mockGetEl, } = setupDomStuff(true, getMockApiData('widget_instances_get')[4]) // check all the widget initialization expect(mockPlease.$apply).toHaveBeenCalledTimes(2) - expect(_widgetSrv.getWidget).toHaveBeenLastCalledWith('bb8') + expect(_WidgetSrv.getWidget).toHaveBeenLastCalledWith('bb8') expect($scope.allowFullScreen).toBe(false) expect(centerStyle.width).toBe('800px') expect(centerStyle.height).toBe('593px') @@ -857,7 +853,7 @@ describe('playerCtrl', () => { GIID: 'bb8', URL_GET_ASSET: 'media/', URL_WEB: 'https://test_base_url.com/', - inst_id: 'bb8' + inst_id: 'bb8', }, { AllowScriptAccess: 'always', allowFullScreen: 'true', menu: 'false' }, { id: 'container' } diff --git a/src/js/directives/dir-beardable.js b/src/js/directives/dir-beardable.js index 6475da14..a85a2790 100644 --- a/src/js/directives/dir-beardable.js +++ b/src/js/directives/dir-beardable.js @@ -1,7 +1,7 @@ 'use strict' const app = angular.module('materia') -app.directive('beardable', function() { +app.directive('beardable', function () { return { restrict: 'A', controller($window) { @@ -24,7 +24,7 @@ app.directive('beardable', function() { } } - const konamiListener = event => { + const konamiListener = (event) => { switch (event.which || event.keyCode) { case 38: if (konami !== 'u') { @@ -62,6 +62,6 @@ app.directive('beardable', function() { $window.addEventListener('keydown', konamiListener) updateBeardCss() - } + }, } }) diff --git a/src/js/directives/dir-beardable.test.js b/src/js/directives/dir-beardable.test.js index e0c77301..46263c0d 100644 --- a/src/js/directives/dir-beardable.test.js +++ b/src/js/directives/dir-beardable.test.js @@ -1,4 +1,4 @@ -describe('beardable Directive', function() { +describe('beardable Directive', function () { let $scope let $compile let createElementSpy diff --git a/src/js/directives/dir-datatable.js b/src/js/directives/dir-datatable.js index e30b255a..1bd81ae0 100644 --- a/src/js/directives/dir-datatable.js +++ b/src/js/directives/dir-datatable.js @@ -1,13 +1,13 @@ 'use strict' const app = angular.module('materia') -app.directive('datatable', function($compile, $timeout) { +app.directive('datatable', function ($compile, $timeout) { return { restrict: 'A', link($scope, $element, $attrs) { $timeout(() => { $($element).DataTable() }) - } + }, } }) diff --git a/src/js/directives/dir-datatable.test.js b/src/js/directives/dir-datatable.test.js index dd3b4098..6f082e34 100644 --- a/src/js/directives/dir-datatable.test.js +++ b/src/js/directives/dir-datatable.test.js @@ -1,4 +1,4 @@ -describe('datatable Directive', function() { +describe('datatable Directive', function () { let $scope let $compile let $timeout diff --git a/src/js/directives/dir-date-validation.js b/src/js/directives/dir-date-validation.js index f81d9f43..867a2b10 100644 --- a/src/js/directives/dir-date-validation.js +++ b/src/js/directives/dir-date-validation.js @@ -4,10 +4,10 @@ const app = angular.module('materia') app.directive('dateValidation', () => ({ require: 'ngModel', scope: { - validate: '&' + validate: '&', }, link(scope, element, attrs, modelCtrl) { - modelCtrl.$parsers.push(inputValue => { + modelCtrl.$parsers.push((inputValue) => { // Dates can do 0-9 and '/' let transformed if (attrs.validate === 'date') { @@ -23,5 +23,5 @@ app.directive('dateValidation', () => ({ } return transformed }) - } + }, })) diff --git a/src/js/directives/dir-date-validation.test.js b/src/js/directives/dir-date-validation.test.js index 046594ca..e974b67c 100644 --- a/src/js/directives/dir-date-validation.test.js +++ b/src/js/directives/dir-date-validation.test.js @@ -1,4 +1,4 @@ -describe('dateValidation Directive', function() { +describe('dateValidation Directive', function () { let $scope let $compile diff --git a/src/js/directives/dir-filedropper.js b/src/js/directives/dir-filedropper.js index 2dc46de2..98c33e74 100644 --- a/src/js/directives/dir-filedropper.js +++ b/src/js/directives/dir-filedropper.js @@ -3,7 +3,7 @@ const app = angular.module('materia') app.directive('fileDropper', () => ({ restrict: 'AE', link(scope, element) { - element.bind('drag dragstart dragend dragover dragenter dragleave drop', event => { + element.bind('drag dragstart dragend dragover dragenter dragleave drop', (event) => { event.preventDefault() switch (event.type) { case 'dragover': // intentional case fall-through @@ -19,5 +19,5 @@ app.directive('fileDropper', () => ({ break } }) - } + }, })) diff --git a/src/js/directives/dir-fileonchange.js b/src/js/directives/dir-fileonchange.js index 6d3fa858..71b09859 100644 --- a/src/js/directives/dir-fileonchange.js +++ b/src/js/directives/dir-fileonchange.js @@ -5,5 +5,5 @@ app.directive('fileOnChange', () => ({ const onChangeHandler = scope.$eval(attrs.fileOnChange) element.bind('change', onChangeHandler) element.bind('drop', onChangeHandler) - } + }, })) diff --git a/src/js/directives/dir-fullscreen.js b/src/js/directives/dir-fullscreen.js index 4b754e43..a9ce531a 100644 --- a/src/js/directives/dir-fullscreen.js +++ b/src/js/directives/dir-fullscreen.js @@ -5,10 +5,10 @@ const app = angular.module('materia') app.directive('fullscreenDir', () => ({ restrict: 'A', link($scope, $element, $attrs) { - $scope.$watch('allowFullScreen', newVal => { + $scope.$watch('allowFullScreen', (newVal) => { if (newVal === true) { $attrs.$set('allowfullscreen', '') } }) - } + }, })) diff --git a/src/js/directives/dir-ngenter.js b/src/js/directives/dir-ngenter.js index ba326be9..91102b63 100644 --- a/src/js/directives/dir-ngenter.js +++ b/src/js/directives/dir-ngenter.js @@ -1,6 +1,6 @@ const app = angular.module('materia') app.directive('ngEnter', () => (scope, element, attrs) => { - element.bind('keydown keypress', event => { + element.bind('keydown keypress', (event) => { if (event.which === 13) { scope.$apply(() => scope.$eval(attrs.ngEnter)) } diff --git a/src/js/directives/dir-ngenter.test.js b/src/js/directives/dir-ngenter.test.js index 35fbc114..e034feda 100644 --- a/src/js/directives/dir-ngenter.test.js +++ b/src/js/directives/dir-ngenter.test.js @@ -1,4 +1,4 @@ -describe('ngEnter Directive', function() { +describe('ngEnter Directive', function () { let $scope let $compile diff --git a/src/js/directives/dir-scoredata.js b/src/js/directives/dir-scoredata.js index bd711491..4035a949 100644 --- a/src/js/directives/dir-scoredata.js +++ b/src/js/directives/dir-scoredata.js @@ -1,7 +1,7 @@ 'use strict' const app = angular.module('materia') -app.directive('scoreData', function(selectedWidgetSrv, $window) { +app.directive('scoreData', function (SelectedWidgetSrv, $window) { return { restrict: 'A', link($scope, $element, $attrs) { @@ -13,10 +13,10 @@ app.directive('scoreData', function(selectedWidgetSrv, $window) { const updateDisplay = () => { // load the storageData from cache (if we have it) - selectedWidgetSrv.getStorageData(false).then(data => { + SelectedWidgetSrv.getStorageData(false).then((data) => { if (!data) return $scope.tables = data[semester] - $scope.MAX_ROWS = selectedWidgetSrv.getMaxRows() + $scope.MAX_ROWS = SelectedWidgetSrv.getMaxRows() $scope.tableNames = Object.keys($scope.tables) $scope.selectedTable = $scope.tableNames[0] }) @@ -29,6 +29,6 @@ app.directive('scoreData', function(selectedWidgetSrv, $window) { // try to load it now updateDisplay() - } + }, } }) diff --git a/src/js/directives/dir-scoredata.test.js b/src/js/directives/dir-scoredata.test.js index 9aaa2781..16ea9576 100644 --- a/src/js/directives/dir-scoredata.test.js +++ b/src/js/directives/dir-scoredata.test.js @@ -1,29 +1,29 @@ -describe('scoreData Directive', function() { +describe('scoreData Directive', function () { let $scope let $compile let $q - let $selectedWidgetSrv + let $SelectedWidgetSrv beforeEach(() => { - require('../materia-constants') + require('../common/materia-constants') require('../services/srv-selectedwidget') require('./dir-scoredata.js') - inject(function(_$compile_, _$rootScope_, _selectedWidgetSrv_, _$q_) { - $selectedWidgetSrv = _selectedWidgetSrv_ + inject(function (_$compile_, _$rootScope_, _SelectedWidgetSrv_, _$q_) { + $SelectedWidgetSrv = _SelectedWidgetSrv_ $compile = _$compile_ $scope = _$rootScope_.$new() $q = _$q_ }) }) - it('is initialized on the element', function() { + it('is initialized on the element', function () { let data = { '2050 Summer': { table1: null, table2: null } } let deferred = $q.defer() - jest.spyOn($selectedWidgetSrv, 'getStorageData').mockImplementation(() => deferred.promise) + jest.spyOn($SelectedWidgetSrv, 'getStorageData').mockImplementation(() => deferred.promise) - jest.spyOn($selectedWidgetSrv, 'getMaxRows').mockImplementation(() => 777) + jest.spyOn($SelectedWidgetSrv, 'getMaxRows').mockImplementation(() => 777) let html = '
' let element = angular.element(html) @@ -39,7 +39,7 @@ describe('scoreData Directive', function() { expect($scope.selectedTable).toBe('table1') }) - it('is short circuited when there is no storage', function() { + it('is short circuited when there is no storage', function () { let html = '
' let element = angular.element(html) let compiled = $compile(element)($scope) diff --git a/src/js/directives/dir-scoregraph.js b/src/js/directives/dir-scoregraph.js index 22724388..0c60f7e7 100644 --- a/src/js/directives/dir-scoregraph.js +++ b/src/js/directives/dir-scoregraph.js @@ -1,14 +1,14 @@ 'use strict' const app = angular.module('materia') -app.directive('scoreGraph', function($timeout, selectedWidgetSrv) { +app.directive('scoreGraph', function ($timeout, SelectedWidgetSrv) { return { restrict: 'A', link($scope, $element, $attrs) { const id = $attrs.id.split('_')[1] - const scores = selectedWidgetSrv.getScoreSummaries() - scores.then(function(data) { + const scores = SelectedWidgetSrv.getScoreSummaries() + scores.then(function (data) { const brackets = data.map[id].distribution // Don't try creating a graph if there's nothing to put in it @@ -19,6 +19,6 @@ app.directive('scoreGraph', function($timeout, selectedWidgetSrv) { }) } }) - } + }, } }) diff --git a/src/js/directives/dir-scoregraph.test.js b/src/js/directives/dir-scoregraph.test.js index 2a71ce6a..0765f6d6 100644 --- a/src/js/directives/dir-scoregraph.test.js +++ b/src/js/directives/dir-scoregraph.test.js @@ -1,22 +1,22 @@ -describe('scoreGraph Directive', function() { +describe('scoreGraph Directive', function () { let $rootScope let $compile let $timeout - let mock1 = jest.fn(cb => { + let mock1 = jest.fn((cb) => { cb({ map: { '6': { distribution: true } } }) }) let mock2 = jest.fn(() => ({ then: mock1 })) let mock3 = jest.fn() beforeEach(() => { - angular.module('materia').service('selectedWidgetSrv', function() { + angular.module('materia').service('SelectedWidgetSrv', function () { return { getScoreSummaries: mock2 } }) - require('../materia-namespace') + require('../common/materia-namespace') require('./dir-scoregraph.js') - inject(function(_$compile_, _$rootScope_, _$timeout_) { + inject(function (_$compile_, _$rootScope_, _$timeout_) { $compile = _$compile_ $rootScope = _$rootScope_ $timeout = _$timeout_ @@ -25,7 +25,7 @@ describe('scoreGraph Directive', function() { Namespace('Materia.MyWidgets.Statistics').createGraph = mock3 }) - it('is initialized on the element', function() { + it('is initialized on the element', function () { let html = '
text
' let compiled = $compile('
text
')($rootScope) $rootScope.$digest() diff --git a/src/js/directives/dir-scoretable.js b/src/js/directives/dir-scoretable.js index 9a00224d..27d699a5 100644 --- a/src/js/directives/dir-scoretable.js +++ b/src/js/directives/dir-scoretable.js @@ -1,11 +1,11 @@ 'use strict' const app = angular.module('materia') -app.directive('scoreTable', function(selectedWidgetSrv, $window) { +app.directive('scoreTable', function (SelectedWidgetSrv, $window) { return { restrict: 'A', link($scope, $element, $attrs) { - const widgetId = selectedWidgetSrv.getSelectedId() + const widgetId = SelectedWidgetSrv.getSelectedId() const tableSort = 'desc' const userCount = [] const users = {} @@ -15,7 +15,7 @@ app.directive('scoreTable', function(selectedWidgetSrv, $window) { $scope.users = {} $scope.selectedUser = null - selectedWidgetSrv.getPlayLogsForSemester(term, year).then(data => { + SelectedWidgetSrv.getPlayLogsForSemester(term, year).then((data) => { // process play logs into records for each user angular.forEach(data, (log, index) => { const uid = log.user_id @@ -25,16 +25,14 @@ app.directive('scoreTable', function(selectedWidgetSrv, $window) { users[uid] = { uid, name, - scores: {} + scores: {}, } } // make the score percentage readable let percent = 0 if (log.done === '1') { - percent = parseFloat(log.perc) - .toFixed(2) - .replace('.00', '') + percent = parseFloat(log.perc).toFixed(2).replace('.00', '') } // make the play duration readable @@ -53,23 +51,23 @@ app.directive('scoreTable', function(selectedWidgetSrv, $window) { percent, elapsed: duration, complete: log.done, - id: log.id + id: log.id, } }) masterUserList = $scope.users = users }) - $scope.setSelectedUser = id => { + $scope.setSelectedUser = (id) => { $scope.selectedUser = $scope.users[id] } - $scope.showScorePage = function(scoreId) { + $scope.showScorePage = function (scoreId) { $window.open(`${BASE_URL}scores/${widgetId}/#single-${scoreId}`) return true } - $scope.searchStudentActivity = function(query) { + $scope.searchStudentActivity = function (query) { if (query === '') { $scope.users = masterUserList return @@ -81,9 +79,9 @@ app.directive('scoreTable', function(selectedWidgetSrv, $window) { const terms = sanitized.split(' ') // loop over mast users to check if any search word matches the user name - angular.forEach(masterUserList, user => { + angular.forEach(masterUserList, (user) => { let name = user.name.toLowerCase() - terms.forEach(term => { + terms.forEach((term) => { if (name.includes(term)) { hits[user.uid] = user } @@ -92,6 +90,6 @@ app.directive('scoreTable', function(selectedWidgetSrv, $window) { $scope.users = hits } - } + }, } }) diff --git a/src/js/directives/dir-scoretable.test.js b/src/js/directives/dir-scoretable.test.js index 74c3a1c3..098ee340 100644 --- a/src/js/directives/dir-scoretable.test.js +++ b/src/js/directives/dir-scoretable.test.js @@ -1,9 +1,9 @@ -describe('scoreTable Directive', function() { +describe('scoreTable Directive', function () { let $scope let $compile let $window let $q - let selectedWidgetSrv + let SelectedWidgetSrv let data = [ { id: 'one', @@ -15,7 +15,7 @@ describe('scoreTable Directive', function() { user_id: '2', first: 'Ian', last: 'Turgeon', - username: '~author' + username: '~author', }, { id: 'two', @@ -27,17 +27,17 @@ describe('scoreTable Directive', function() { user_id: '5', first: 'Corey', last: 'Peterson', - username: '~author2' - } + username: '~author2', + }, ] beforeEach(() => { - require('../materia-constants') + require('../common/materia-constants') require('../services/srv-selectedwidget') require('./dir-scoretable') - inject(function(_$compile_, _$rootScope_, _selectedWidgetSrv_, _$q_, _$window_) { - selectedWidgetSrv = _selectedWidgetSrv_ + inject(function (_$compile_, _$rootScope_, _SelectedWidgetSrv_, _$q_, _$window_) { + SelectedWidgetSrv = _SelectedWidgetSrv_ $compile = _$compile_ $scope = _$rootScope_.$new() $q = _$q_ @@ -45,9 +45,9 @@ describe('scoreTable Directive', function() { }) let deferred = $q.defer() - jest.spyOn(selectedWidgetSrv, 'getSelectedId').mockImplementation(() => 6) + jest.spyOn(SelectedWidgetSrv, 'getSelectedId').mockImplementation(() => 6) jest - .spyOn(selectedWidgetSrv, 'getPlayLogsForSemester') + .spyOn(SelectedWidgetSrv, 'getPlayLogsForSemester') .mockImplementation(() => deferred.promise) expect($scope.selectedUser).not.toBeDefined() @@ -63,7 +63,7 @@ describe('scoreTable Directive', function() { $scope.$apply() }) - it('is initialized on the element', function() { + it('is initialized on the element', function () { expect($scope.selectedUser).toBeNull() expect($scope.users).toMatchSnapshot() expect($scope.setSelectedUser).toBeDefined() @@ -71,20 +71,20 @@ describe('scoreTable Directive', function() { expect($scope.searchStudentActivity).toBeDefined() }) - it('setSelectedUser sets selectedUser object as expected', function() { + it('setSelectedUser sets selectedUser object as expected', function () { expect($scope.selectedUser).toBeNull() $scope.setSelectedUser(5) expect($scope.selectedUser).toMatchSnapshot() }) - it('showScorePage opens the expected url', function() { + it('showScorePage opens the expected url', function () { $window.open = jest.fn() global.BASE_URL = 'some_url' $scope.showScorePage('two') expect($window.open).toHaveBeenLastCalledWith('some_urlscores/6/#single-two') }) - it('searchStudentActivity locates users', function() { + it('searchStudentActivity locates users', function () { $scope.searchStudentActivity('Ian') expect($scope.users).toMatchSnapshot() @@ -100,7 +100,7 @@ describe('scoreTable Directive', function() { expect($scope.users).toMatchSnapshot() }) - it('searchStudentActivity resets selecteUser', function() { + it('searchStudentActivity resets selecteUser', function () { $scope.setSelectedUser(5) expect($scope.selectedUser).toMatchSnapshot() $scope.searchStudentActivity('Ian') diff --git a/src/js/filters/filter-escape.test.js b/src/js/filters/filter-escape.test.js index 1af5aaad..ebeee0ed 100644 --- a/src/js/filters/filter-escape.test.js +++ b/src/js/filters/filter-escape.test.js @@ -1,4 +1,4 @@ -describe('escape filter', function() { +describe('escape filter', function () { var filter beforeEach(() => { diff --git a/src/js/filters/filter-highlight.js b/src/js/filters/filter-highlight.js index f02550b2..527cc853 100644 --- a/src/js/filters/filter-highlight.js +++ b/src/js/filters/filter-highlight.js @@ -6,19 +6,19 @@ const entityMap = { '>': '>', '"': '"', "'": ''', - '/': '/' + '/': '/', } -const escapeHtml = string => String(string).replace(/[&<>"'\/]/g, s => entityMap[s]) +const escapeHtml = (string) => String(string).replace(/[&<>"'\/]/g, (s) => entityMap[s]) // Highlights search matches, used on My Widgets sidebar -app.filter('highlight', function($sce) { +app.filter('highlight', function ($sce) { return (text, search) => { // escape special characters from the source text text = escapeHtml(text) if (search) { const searchTerms = search.split(' ') - searchTerms.forEach(term => { + searchTerms.forEach((term) => { // find term in text and wrap it with a span text = text.replace(new RegExp(`${term}`, 'gi'), (match, offset) => { // @TODO: no comments left for this by previous dev diff --git a/src/js/filters/filter-highlight.test.js b/src/js/filters/filter-highlight.test.js index bbb44f39..d14b4a38 100644 --- a/src/js/filters/filter-highlight.test.js +++ b/src/js/filters/filter-highlight.test.js @@ -1,10 +1,10 @@ -describe('hightlight filter', function() { +describe('hightlight filter', function () { var filter var _$sce beforeEach(() => { filter = testGetFilter('highlight') - inject(function($sce) { + inject(function ($sce) { _$sce = $sce }) }) diff --git a/src/js/filters/filter-multiword.js b/src/js/filters/filter-multiword.js index 2384e3af..875b4341 100644 --- a/src/js/filters/filter-multiword.js +++ b/src/js/filters/filter-multiword.js @@ -1,12 +1,25 @@ const app = angular.module('materia') -app.filter('multiword', () => (input, searchText) => { - searchText = searchText || '' - if (searchText === '') return input +// Search items for searchText +// items must be an array of objects containing a key: searchCache +// returns array of matched items in items +// supports multiple words in searchText +// searchText word order has no impact on matches +// searchCache: "a slow sloth walks down a lazy tree path" +// searchText match: "a path" +// searchText match: "path sloth" +// searchText miss: "slowsloth" + +app.filter('multiword', () => (items, searchText = '') => { + if (searchText === '') return items + + // split up the items into words const splitted = searchText.toLowerCase().split(/\s+/) + + // create a regex that'll match the words with anything between them const regexp_and = `(?=.*${splitted.join(')(?=.*')})` const re = new RegExp(regexp_and, 'i') - return input.filter(item => re.test(item.searchCache)) + return items.filter((item) => re.test(item.searchCache)) }) diff --git a/src/js/filters/filter-multiword.test.js b/src/js/filters/filter-multiword.test.js index f3cda87b..0ea08b79 100644 --- a/src/js/filters/filter-multiword.test.js +++ b/src/js/filters/filter-multiword.test.js @@ -1,4 +1,4 @@ -describe('multiword filter', function() { +describe('multiword filter', function () { var filter let widgetList = [{ searchCache: 'text to search' }, { searchCache: 'other stuff to search' }] diff --git a/src/js/materia.creatorcore.js b/src/js/materia.creatorcore.js new file mode 100644 index 00000000..d1f840e1 --- /dev/null +++ b/src/js/materia.creatorcore.js @@ -0,0 +1,4 @@ +require('./common/materia-namespace') +require('./materia/materia.creatorcore') + +// Materia Widget Creator Core - required by all widgets to create and customize widget contetent diff --git a/src/js/materia.enginecore.js b/src/js/materia.enginecore.js new file mode 100644 index 00000000..da7f7303 --- /dev/null +++ b/src/js/materia.enginecore.js @@ -0,0 +1,7 @@ +require('./common/materia-namespace') +require('./materia/materia.enginecore') +require('./materia/materia.score') +require('./materia/materia.storage.manager') +require('./materia/materia.storage.table') + +// Materia Widget Engine Core - core js file required by all widgets to play diff --git a/src/js/materia.js b/src/js/materia.js new file mode 100644 index 00000000..42f5dabf --- /dev/null +++ b/src/js/materia.js @@ -0,0 +1,26 @@ +require('./common/materia-namespace') +require('./materia/materia.coms.json') +require('./materia/materia.flashcheck') +require('./materia/materia.image') +require('./materia/materia.page.default') +require('./materia/materia.set.throbber') +require('./materia/materia.store.slideshow') +require('./materia/materia.user') +require('./materia/materia.util') +require('./materia/materia.validate.textfield') +require('./common/materia-constants') +require('./controllers/ctrl-alert') +require('./controllers/ctrl-user-current') +require('./controllers/ctrl-user-login') +require('./controllers/ctrl-user-notification') +require('./controllers/ctrl-home-page-spotlight') +require('./controllers/ctrl-widget-catalog') +require('./controllers/ctrl-widget-catalog-details') +require('./services/srv-datetime') +require('./services/srv-please') +require('./services/srv-selectedwidget') +require('./services/srv-user') +require('./services/srv-widget') +require('ngmodal/dist/ng-modal.min.js') + +// Materia Server common file used on all pages diff --git a/src/js/materia.scorecore.js b/src/js/materia.scorecore.js new file mode 100644 index 00000000..e9b43e6d --- /dev/null +++ b/src/js/materia.scorecore.js @@ -0,0 +1,4 @@ +require('./common/materia-namespace') +require('./materia/materia.scorecore') + +// Materia Score Core - required by widgets with custom score screens diff --git a/src/js/materia/materia.coms.json.js b/src/js/materia/materia.coms.json.js index 3efa2111..ddd64ac8 100644 --- a/src/js/materia/materia.coms.json.js +++ b/src/js/materia/materia.coms.json.js @@ -5,12 +5,12 @@ Namespace('Materia.Coms').Json = (() => { // need to use the annotated angular method because webpack doesn't protect it for us angular.injector(['ng']).invoke([ '$q', - function($q) { + function ($q) { _$q = $q - } + }, ]) - const _showError = data => { + const _showError = (data) => { if (data.title === 'Invalid Login') { // redirect to login page window.location = BASE_URL + 'login' @@ -40,17 +40,17 @@ Namespace('Materia.Coms').Json = (() => { cache: 'no-cache', headers: { accept: 'application/json;', - 'content-type': 'application/json; charset=utf-8' - } + 'content-type': 'application/json; charset=utf-8', + }, } fetch(url, options) - .then(res => res.json()) - .then(json => { + .then((res) => res.json()) + .then((json) => { _resposeErrorChecker(json, false) deferred.resolve(json) }) - .catch(error => { + .catch((error) => { deferred.reject() _showError('Error Sending request to ' + url) }) @@ -58,7 +58,7 @@ Namespace('Materia.Coms').Json = (() => { return deferred.promise } - const setGateway = newGateway => { + const setGateway = (newGateway) => { _gatewayURL = newGateway } @@ -80,18 +80,18 @@ Namespace('Materia.Coms').Json = (() => { body: `data=${encodeURIComponent(JSON.stringify(args))}`, headers: { accept: 'application/json, text/javascript, */*; q=0.01', - 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8' - } + 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8', + }, } // returns deferred fetch(_gatewayURL + method + '/', options) - .then(res => res.text()) - .then(body => { + .then((res) => res.text()) + .then((body) => { if (body) body = JSON.parse(body) _resposeErrorChecker(body, false) deferred.resolve(body) }) - .catch(error => { + .catch((error) => { deferred.reject(error) }) @@ -99,12 +99,12 @@ Namespace('Materia.Coms').Json = (() => { } // newer XMLHttpRequest json api - const get = url => { + const get = (url) => { return _sendRequest('GET', url) } // newer XMLHttpRequest json api - const post = function(url, dataObject) { + const post = function (url, dataObject) { if (dataObject == null) { dataObject = {} } @@ -112,7 +112,7 @@ Namespace('Materia.Coms').Json = (() => { } // return true if jsonResult is an error object - const isError = jsonResult => jsonResult != null && typeof jsonResult.errorID !== 'undefined' + const isError = (jsonResult) => jsonResult != null && typeof jsonResult.errorID !== 'undefined' // public methods return { @@ -120,6 +120,6 @@ Namespace('Materia.Coms').Json = (() => { isError, post, get, - setGateway + setGateway, } })() diff --git a/src/js/materia/materia.coms.json.test.js b/src/js/materia/materia.coms.json.test.js index 3a0ca0ac..24dd1d53 100644 --- a/src/js/materia/materia.coms.json.test.js +++ b/src/js/materia/materia.coms.json.test.js @@ -2,7 +2,7 @@ describe('Materia.Coms.Json', () => { let coms let $q - let mockFetchOnce = result => { + let mockFetchOnce = (result) => { fetch.mockImplementationOnce((n, arg, cb) => { const deferred = $q.defer() deferred.resolve(result) @@ -12,11 +12,11 @@ describe('Materia.Coms.Json', () => { beforeEach(() => { let app = angular.module('materia') - inject(function(_$q_) { + inject(function (_$q_) { $q = _$q_ }) global.API_LINK = 'my_api_url' - require('../materia-namespace') + require('../common/materia-namespace') require('./materia.coms.json.js') coms = Namespace('Materia.Coms').Json global.fetch = jest.fn() @@ -40,11 +40,11 @@ describe('Materia.Coms.Json', () => { cache: 'no-cache', headers: { accept: 'application/json, text/javascript, */*; q=0.01', - 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8' + 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8', }, //this corresponds to the arguments we're sending above //we'll verify later that they're encoded properly - body: 'data=%5B1%2C%22two%22%5D' + body: 'data=%5B1%2C%22two%22%5D', } expect(global.fetch).toHaveBeenCalledWith('my_api_url/what/is/this/', a) @@ -99,9 +99,9 @@ describe('Materia.Coms.Json', () => { cache: 'no-cache', headers: { accept: 'application/json;', - 'content-type': 'application/json; charset=utf-8' + 'content-type': 'application/json; charset=utf-8', }, - body: undefined + body: undefined, } expect(global.fetch).toHaveBeenCalledWith('test', a) }) @@ -121,9 +121,9 @@ describe('Materia.Coms.Json', () => { cache: 'no-cache', headers: { accept: 'application/json;', - 'content-type': 'application/json; charset=utf-8' + 'content-type': 'application/json; charset=utf-8', }, - body: '{"data":true}' + body: '{"data":true}', } expect(global.fetch).toHaveBeenCalledWith('test', a) }) diff --git a/src/js/materia/materia.creatorcore.js b/src/js/materia/materia.creatorcore.js index c7fa1b23..c0408858 100644 --- a/src/js/materia/materia.creatorcore.js +++ b/src/js/materia/materia.creatorcore.js @@ -5,7 +5,7 @@ Namespace('Materia').CreatorCore = (() => { let _mediaUrl = null let _resizeInterval = null - const _onPostMessage = e => { + const _onPostMessage = (e) => { if (typeof e.data !== 'string') return const msg = JSON.parse(e.data) switch (msg.type) { @@ -67,7 +67,7 @@ Namespace('Materia').CreatorCore = (() => { _tellCreator('initExistingWidget', [widget, title, qset, qsetVersion]) } - const start = creatorClass => { + const start = (creatorClass) => { // setup the postmessage listener window.addEventListener('message', _onPostMessage, false) @@ -85,16 +85,16 @@ Namespace('Materia').CreatorCore = (() => { _sendPostMessage('alert', { msg, title, fatal }) } - const getMediaUrl = mediaId => `${_mediaUrl}/${mediaId}` + const getMediaUrl = (mediaId) => `${_mediaUrl}/${mediaId}` - const showMediaImporter = types => { + const showMediaImporter = (types) => { if (types == null) { types = ['image'] } _sendPostMessage('showMediaImporter', types) } - const directUploadMedia = mediaData => { + const directUploadMedia = (mediaData) => { _sendPostMessage('directUploadMedia', mediaData) } @@ -106,9 +106,9 @@ Namespace('Materia').CreatorCore = (() => { _sendPostMessage('save', [sanitizedTitle, qset, version]) } - const cancelSave = msg => _sendPostMessage('cancelSave', [msg]) + const cancelSave = (msg) => _sendPostMessage('cancelSave', [msg]) - const setHeight = h => { + const setHeight = (h) => { if (!h) { h = document.getElementsByTagName('html')[0].height() } @@ -118,7 +118,7 @@ Namespace('Materia').CreatorCore = (() => { } } - const escapeScriptTags = text => text.replace(//g, '>') + const escapeScriptTags = (text) => text.replace(//g, '>') const disableResizeInterval = () => { clearInterval(_resizeInterval) @@ -135,6 +135,6 @@ Namespace('Materia').CreatorCore = (() => { save, disableResizeInterval, setHeight, // allows the creator to resize its iframe container to fit the height of its contents - escapeScriptTags + escapeScriptTags, } })() diff --git a/src/js/materia/materia.creatorcore.test.js b/src/js/materia/materia.creatorcore.test.js index 9329554b..12aace44 100644 --- a/src/js/materia/materia.creatorcore.test.js +++ b/src/js/materia/materia.creatorcore.test.js @@ -1,7 +1,6 @@ describe('creatorcore', () => { let creatorCore let $q - let mockCreator let _onPostMessage @@ -11,8 +10,8 @@ describe('creatorcore', () => { } //iterates all mocked creator methods to ensure only the target method is called - const expectOnlyCreatorMethodCalledToBe = targetMethod => { - Object.keys(mockCreator).forEach(method => { + const expectOnlyCreatorMethodCalledToBe = (targetMethod) => { + Object.keys(mockCreator).forEach((method) => { if (method == targetMethod) { expect(mockCreator[method]).toHaveBeenCalledTimes(1) } else { @@ -25,32 +24,34 @@ describe('creatorcore', () => { let payload = JSON.stringify({ type: type, source: source, - data: data + data: data, }) _onPostMessage({ - data: payload + data: payload, }) return payload } - const mockCreatorCoreAlert = message => + const mockCreatorCoreAlert = (message) => JSON.stringify({ type: 'alert', source: 'creator-core', data: { msg: message, title: null, - fatal: false - } + fatal: false, + }, }) beforeEach(() => { + jest.spyOn(console, 'warn') + console.warn.mockReturnValue() let app = angular.module('materia') - inject(function(_$q_) { + inject(function (_$q_) { $q = _$q_ }) global.API_LINK = 'my_api_url' - require('../materia-namespace') + require('../common/materia-namespace') require('./materia.creatorcore') creatorCore = Namespace('Materia.CreatorCore') global.fetch = jest.fn() @@ -63,7 +64,7 @@ describe('creatorcore', () => { onMediaImportComplete: jest.fn(), onQuestionImportComplete: jest.fn(), initNewWidget: jest.fn(), - initExistingWidget: jest.fn() + initExistingWidget: jest.fn(), } //prior to each test, run creatorCore.start to prime the _onPostMessage event listener @@ -75,7 +76,7 @@ describe('creatorcore', () => { }) afterEach(() => { - jest.clearAllMocks() + jest.resetAllMocks() }) it('defines expected public methods', () => { @@ -112,7 +113,7 @@ describe('creatorcore', () => { 'qsetObj', 'qsetVersion', 'baseUrl', - 'mediaUrl' + 'mediaUrl', ]) expect(mockCreator.initExistingWidget).toHaveBeenCalledWith( 'widgetObj', @@ -154,12 +155,10 @@ describe('creatorcore', () => { it('reacts properly to post messages with non-string data', () => { mockPostMessageFromWidget('', '', undefined) - console.log(window.addEventListener) expect(window.addEventListener).toHaveLastReturnedWith(undefined) }) it('reacts properly to unknown post messages', () => { - jest.spyOn(console, 'warn') mockPostMessageFromWidget('undefinedMessageType', 'unknown-source', ['payload']) expect(console.warn).toHaveBeenCalledWith( 'Error, unknown message sent to creator core: undefinedMessageType' @@ -173,8 +172,8 @@ describe('creatorcore', () => { _onPostMessage({ data: JSON.stringify({ type: 'initNewWidget', - data: ['widgetObj', 'baseUrl', 'mediaUrl'] - }) + data: ['widgetObj', 'baseUrl', 'mediaUrl'], + }), }) expect(parent.postMessage).toHaveBeenCalledWith( mockCreatorCoreAlert('Error, missing creator initNewWidget called.'), @@ -200,7 +199,7 @@ describe('creatorcore', () => { let ex = JSON.stringify({ type: 'showMediaImporter', source: 'creator-core', - data: ['image'] + data: ['image'], }) expect(parent.postMessage).toHaveBeenLastCalledWith(ex, '*') }) @@ -210,7 +209,7 @@ describe('creatorcore', () => { let ex = JSON.stringify({ type: 'showMediaImporter', source: 'creator-core', - data: ['mp3'] + data: ['mp3'], }) expect(parent.postMessage).toHaveBeenLastCalledWith(ex, '*') }) @@ -220,7 +219,7 @@ describe('creatorcore', () => { let ex = JSON.stringify({ type: 'cancelSave', source: 'creator-core', - data: ['message'] + data: ['message'], }) expect(parent.postMessage).toHaveBeenLastCalledWith(ex, '*') }) @@ -230,7 +229,7 @@ describe('creatorcore', () => { let ex = JSON.stringify({ type: 'save', source: 'creator-core', - data: ['title', { one: 1, two: 2 }, 1] + data: ['title', { one: 1, two: 2 }, 1], }) expect(parent.postMessage).toHaveBeenLastCalledWith(ex, '*') }) @@ -240,7 +239,7 @@ describe('creatorcore', () => { let ex = JSON.stringify({ type: 'save', source: 'creator-core', - data: ['title', { one: 1, two: 2 }, '1'] + data: ['title', { one: 1, two: 2 }, '1'], }) expect(parent.postMessage).toHaveBeenLastCalledWith(ex, '*') }) @@ -250,7 +249,7 @@ describe('creatorcore', () => { let ex = JSON.stringify({ type: 'save', source: 'creator-core', - data: ['title <script></script>', {}, '1'] + data: ['title <script></script>', {}, '1'], }) expect(parent.postMessage).toHaveBeenLastCalledWith(ex, '*') }) @@ -260,7 +259,7 @@ describe('creatorcore', () => { let ex = JSON.stringify({ type: 'setHeight', source: 'creator-core', - data: [200] + data: [200], }) expect(parent.postMessage).toHaveBeenLastCalledWith(ex, '*') }) diff --git a/src/js/materia/materia.enginecore.js b/src/js/materia/materia.enginecore.js index 3a718a3d..5852fe2d 100644 --- a/src/js/materia/materia.enginecore.js +++ b/src/js/materia/materia.enginecore.js @@ -6,7 +6,7 @@ Namespace('Materia').Engine = (() => { let _resizeInterval = null let _widgetClass = null - const _onPostMessage = e => { + const _onPostMessage = (e) => { if (typeof e.data !== 'string') return const msg = JSON.parse(e.data) switch (msg.type) { @@ -31,7 +31,7 @@ Namespace('Materia').Engine = (() => { _instance = instance } - const start = widgetClass => { + const start = (widgetClass) => { // setup the postmessage listener addEventListener('message', _onPostMessage, false) @@ -46,7 +46,7 @@ Namespace('Materia').Engine = (() => { _sendPostMessage('start', null) } - const sendStorage = args => { + const sendStorage = (args) => { _sendPostMessage('sendStorage', args) } @@ -67,9 +67,9 @@ Namespace('Materia').Engine = (() => { _sendPostMessage('alert', { title, msg, fatal }) } - const getMediaUrl = mediaId => `${_mediaUrl}/${mediaId}` + const getMediaUrl = (mediaId) => `${_mediaUrl}/${mediaId}` - const end = showScoreScreenAfter => { + const end = (showScoreScreenAfter) => { if (showScoreScreenAfter == null) { showScoreScreenAfter = true } @@ -80,7 +80,7 @@ Namespace('Materia').Engine = (() => { _sendPostMessage('sendPendingLogs', {}) } - const setHeight = h => { + const setHeight = (h) => { if (!h) { h = parseInt(window.getComputedStyle(document.documentElement).height, 10) } @@ -90,7 +90,7 @@ Namespace('Materia').Engine = (() => { } } - const setVerticalScroll = location => { + const setVerticalScroll = (location) => { _sendPostMessage('setVerticalScroll', [location]) } @@ -98,7 +98,7 @@ Namespace('Materia').Engine = (() => { clearInterval(_resizeInterval) } - const escapeScriptTags = text => text.replace(//g, '>') + const escapeScriptTags = (text) => text.replace(//g, '>') return { start, @@ -112,6 +112,6 @@ Namespace('Materia').Engine = (() => { disableResizeInterval, setHeight, // allows the widget to resize its iframe container to fit the height of its contents setVerticalScroll, // allows the widget to scroll the page to a specific location - escapeScriptTags + escapeScriptTags, } })() diff --git a/src/js/materia/materia.enginecore.test.js b/src/js/materia/materia.enginecore.test.js index 48f95c27..fc8841fc 100644 --- a/src/js/materia/materia.enginecore.test.js +++ b/src/js/materia/materia.enginecore.test.js @@ -2,7 +2,7 @@ describe('enginecore', () => { let Engine let $q - let mockFetchOnce = result => { + let mockFetchOnce = (result) => { fetch.mockImplementationOnce((n, arg, cb) => { const deferred = $q.defer() deferred.resolve(result) @@ -12,11 +12,11 @@ describe('enginecore', () => { beforeEach(() => { let app = angular.module('materia') - inject(function(_$q_) { + inject(function (_$q_) { $q = _$q_ }) global.API_LINK = 'my_api_url' - require('../materia-namespace') + require('../common/materia-namespace') require('./materia.enginecore') Engine = Namespace('Materia').Engine global.fetch = jest.fn() @@ -81,8 +81,8 @@ describe('enginecore', () => { _onPostMessage({ data: JSON.stringify({ type: 'initWidget', - data: ['qset', 'instance', 'baseUrl', 'mediaUrl'] - }) + data: ['qset', 'instance', 'baseUrl', 'mediaUrl'], + }), }) expect(Engine.getImageAssetUrl('fR93X')).toBe('mediaUrl/fR93X') @@ -94,8 +94,8 @@ describe('enginecore', () => { _onPostMessage({ data: JSON.stringify({ type: 'initWidget', - data: ['qset', 'instance', 'baseUrl', 'mediaUrl'] - }) + data: ['qset', 'instance', 'baseUrl', 'mediaUrl'], + }), }) expect(Engine.getMediaUrl('fR93X')).toBe('mediaUrl/fR93X') @@ -105,7 +105,7 @@ describe('enginecore', () => { Engine.start({ start: jest.fn() }) let _onPostMessage = window.addEventListener.mock.calls[0][1] _onPostMessage({ - data: undefined + data: undefined, }) expect(parent.postMessage).toHaveLastReturnedWith(undefined) }) @@ -114,7 +114,7 @@ describe('enginecore', () => { Engine.end() let ex = JSON.stringify({ type: 'end', - data: true + data: true, }) expect(parent.postMessage).toHaveBeenLastCalledWith(ex, '*') }) @@ -123,7 +123,7 @@ describe('enginecore', () => { Engine.end(false) let ex = JSON.stringify({ type: 'end', - data: false + data: false, }) expect(parent.postMessage).toHaveBeenLastCalledWith(ex, '*') }) @@ -132,7 +132,7 @@ describe('enginecore', () => { Engine.sendPendingLogs() let ex = JSON.stringify({ type: 'sendPendingLogs', - data: {} + data: {}, }) expect(parent.postMessage).toHaveBeenLastCalledWith(ex, '*') }) @@ -141,7 +141,7 @@ describe('enginecore', () => { Engine.sendStorage('message') let ex = JSON.stringify({ type: 'sendStorage', - data: 'message' + data: 'message', }) expect(parent.postMessage).toHaveBeenLastCalledWith(ex, '*') }) @@ -150,7 +150,7 @@ describe('enginecore', () => { Engine.setHeight(200) let ex = JSON.stringify({ type: 'setHeight', - data: [200] + data: [200], }) expect(parent.postMessage).toHaveBeenLastCalledWith(ex, '*') }) @@ -159,7 +159,7 @@ describe('enginecore', () => { Engine.setVerticalScroll(0) let ex = JSON.stringify({ type: 'setVerticalScroll', - data: [0] + data: [0], }) expect(parent.postMessage).toHaveBeenLastCalledWith(ex, '*') }) diff --git a/src/js/materia/materia.flashcheck.js b/src/js/materia/materia.flashcheck.js index 35f8d167..f942d850 100644 --- a/src/js/materia/materia.flashcheck.js +++ b/src/js/materia/materia.flashcheck.js @@ -2,7 +2,7 @@ Namespace('Materia').Flashcheck = (() => { let _flashVersionObj = null // Returns the flash version, false if not installed. - const getFlashVersion = callback => { + const getFlashVersion = (callback) => { let return_val _flashVersionObj = swfobject.getFlashPlayerVersion() diff --git a/src/js/materia/materia.image.js b/src/js/materia/materia.image.js index 2d9a4a67..e86267de 100644 --- a/src/js/materia/materia.image.js +++ b/src/js/materia/materia.image.js @@ -16,6 +16,6 @@ Namespace('Materia').Image = (() => { return { iconUrl, screenshotUrl, - screenshotThumbUrl + screenshotThumbUrl, } })() diff --git a/src/js/materia/materia.mywidgets.statistics.js b/src/js/materia/materia.mywidgets.statistics.js index 13e79e10..04c10739 100644 --- a/src/js/materia/materia.mywidgets.statistics.js +++ b/src/js/materia/materia.mywidgets.statistics.js @@ -14,21 +14,21 @@ Namespace('Materia.MyWidgets').Statistics = (() => { shadow: false, rendererOptions: { animation: { - speed: 500 - } - } - } + speed: 500, + }, + }, + }, ], title: { text: 'Score Distribution', - fontFamily: 'Lato, Lucida Grande, Arial, sans' + fontFamily: 'Lato, Lucida Grande, Arial, sans', }, axesDefaults: { tickRenderer: $.jqplot.CanvasAxisTickRenderer, tickOptions: { angle: 0, - fontSize: '8pt' - } + fontSize: '8pt', + }, }, axes: { xaxis: { @@ -43,31 +43,31 @@ Namespace('Materia.MyWidgets').Statistics = (() => { '60-69', '70-79', '80-89', - '90-100' - ] - } + '90-100', + ], + }, }, highlighter: { show: true, showMarker: false, sizeAdjust: 7.5, tooltipAxes: 'y', - formatString: '%s scores' + formatString: '%s scores', }, cursor: { - show: false + show: false, }, grid: { background: '#FFFFFF', - shadow: false + shadow: false, }, - seriesColors: ['#1e91e1'] + seriesColors: ['#1e91e1'], } $.jqplot(elementId, [data], jqOptions) } return { - createGraph + createGraph, } })() diff --git a/src/js/materia/materia.page.default.js b/src/js/materia/materia.page.default.js index 60f656d8..5c53f0af 100644 --- a/src/js/materia/materia.page.default.js +++ b/src/js/materia/materia.page.default.js @@ -1,5 +1,5 @@ const app = angular.module('materia', []) -app.config($sceDelegateProvider => +app.config(($sceDelegateProvider) => $sceDelegateProvider.resourceUrlWhitelist(['self', STATIC_CROSSDOMAIN + '**', BASE_URL + '**']) ) @@ -29,7 +29,7 @@ window.isMobile = { isMobile.Opera() || isMobile.Windows() ) - } + }, } // this code ensures that Opera runs onload/ready js events when navigating foward/back. diff --git a/src/js/materia/materia.score.js b/src/js/materia/materia.score.js index d44f0e55..8e388fb8 100644 --- a/src/js/materia/materia.score.js +++ b/src/js/materia/materia.score.js @@ -43,9 +43,9 @@ Namespace('Materia').Score = (() => { Materia.Engine.addLog(SCORE_PARTICIPATION, -1, 'Participation', value) // Adds a message/feedback to the overall score screen - const addGlobalScoreFeedback = msg => Materia.Engine.addLog(SCORE_FEEDBACK, '0', msg) + const addGlobalScoreFeedback = (msg) => Materia.Engine.addLog(SCORE_FEEDBACK, '0', msg) - const addScoreData = data => Materia.Engine.addLog(DATA, null, JSON.stringify(data), null) + const addScoreData = (data) => Materia.Engine.addLog(DATA, null, JSON.stringify(data), null) return { submitInteractionForScoring, @@ -53,6 +53,6 @@ Namespace('Materia').Score = (() => { submitQuestionForScoring, submitScoreForParticipation, addGlobalScoreFeedback, - addScoreData + addScoreData, } })() diff --git a/src/js/materia/materia.score.test.js b/src/js/materia/materia.score.test.js index a83cd416..63bca1cc 100644 --- a/src/js/materia/materia.score.test.js +++ b/src/js/materia/materia.score.test.js @@ -3,7 +3,7 @@ describe('Materia.Score', () => { let mockAddLog beforeEach(() => { - require('../materia-namespace') + require('../common/materia-namespace') require('./materia.score') Score = Materia.Score Namespace('Materia.Engine').addLog = mockAddLog = jest.fn() diff --git a/src/js/materia/materia.scorecore.js b/src/js/materia/materia.scorecore.js index ec10a344..7c5f9fff 100644 --- a/src/js/materia/materia.scorecore.js +++ b/src/js/materia/materia.scorecore.js @@ -3,7 +3,8 @@ Namespace('Materia').ScoreCore = (() => { let _mediaUrl = null let _widgetClass = null - const _onPostMessage = e => { + const _onPostMessage = (e) => { + if (typeof e.data !== 'string') return const msg = JSON.parse(e.data) switch (msg.type) { case 'initWidget': @@ -43,13 +44,13 @@ Namespace('Materia').ScoreCore = (() => { _sendPostMessage('hideScoresOverview') } - const getMediaUrl = mediaId => `${_mediaUrl}/${mediaId}` + const getMediaUrl = (mediaId) => `${_mediaUrl}/${mediaId}` const requestScoreDistribution = () => { _sendPostMessage('requestScoreDistribution') } - const start = widgetClass => { + const start = (widgetClass) => { // setup the postmessage listener addEventListener('message', _onPostMessage, false) @@ -57,7 +58,7 @@ Namespace('Materia').ScoreCore = (() => { _sendPostMessage('start', null) } - const setHeight = h => { + const setHeight = (h) => { if (!h) { h = parseInt(window.getComputedStyle(document.documentElement).height, 10) } @@ -73,6 +74,6 @@ Namespace('Materia').ScoreCore = (() => { hideScoresOverview, requestScoreDistribution, setHeight, - start + start, } })() diff --git a/src/js/materia/materia.scorecore.test.js b/src/js/materia/materia.scorecore.test.js index ad6dc705..3dfd950c 100644 --- a/src/js/materia/materia.scorecore.test.js +++ b/src/js/materia/materia.scorecore.test.js @@ -7,7 +7,7 @@ describe('Materia.ScoreCore', () => { beforeEach(() => { let app = angular.module('materia') global.API_LINK = 'my_api_url' - require('../materia-namespace') + require('../common/materia-namespace') require('./materia.scorecore') ScoreCore = Namespace('Materia').ScoreCore jest.spyOn(window, 'addEventListener') @@ -17,7 +17,7 @@ describe('Materia.ScoreCore', () => { mockWidget = { start: jest.fn(), update: jest.fn(), - handleScoreDistribution: jest.fn() + handleScoreDistribution: jest.fn(), } //prior to each test, run ScoreCore.start to prime the _onPostMessage event listener ScoreCore.start(mockWidget) @@ -27,7 +27,7 @@ describe('Materia.ScoreCore', () => { _onPostMessage = window.addEventListener.mock.calls[0][1] }) afterEach(() => { - jest.clearAllMocks() + jest.resetAllMocks() }) it('defines expected public methods', () => { @@ -92,8 +92,8 @@ describe('Materia.ScoreCore', () => { _onPostMessage({ data: JSON.stringify({ type: 'initWidget', - data: ['qset', 'scoreTable', 'widgetInstance', 'isPreview', 'mediaUrl'] - }) + data: ['qset', 'scoreTable', 'widgetInstance', 'isPreview', 'mediaUrl'], + }), }) expect(ScoreCore.getMediaUrl('fR93X')).toBe('mediaUrl/fR93X') @@ -114,18 +114,18 @@ describe('Materia.ScoreCore', () => { let initData = [ { data: [{ qset: 'data' }], - version: 0 + version: 0, }, { score: 'table' }, { widget: 'instance' }, - false + false, ] _onPostMessage({ data: JSON.stringify({ type: 'initWidget', source: 'score-core', - data: initData - }) + data: initData, + }), }) expect(mockWidget.start).toHaveBeenCalledWith( { widget: 'instance' }, //instance @@ -142,15 +142,15 @@ describe('Materia.ScoreCore', () => { let updateData = [ { data: [{ qset: 'updated_data' }], - version: 0 + version: 0, }, - { score: 'updated_table' } + { score: 'updated_table' }, ] _onPostMessage({ data: JSON.stringify({ type: 'updateWidget', - data: updateData - }) + data: updateData, + }), }) expect(mockWidget.update).toHaveBeenCalledWith( [{ qset: 'updated_data' }], //qset.data @@ -164,8 +164,8 @@ describe('Materia.ScoreCore', () => { _onPostMessage({ data: JSON.stringify({ type: 'scoreDistribution', - data: [{ score: 'distribution' }] - }) + data: [{ score: 'distribution' }], + }), }) expect(mockWidget.handleScoreDistribution).toHaveBeenCalledWith({ score: 'distribution' }) }) @@ -174,8 +174,8 @@ describe('Materia.ScoreCore', () => { _onPostMessage({ data: JSON.stringify({ type: 'unknownMessageType', - data: [null] - }) + data: [null], + }), }) expect(console.warn).toHaveBeenCalledWith( diff --git a/src/js/materia/materia.scores.scoregraphics.js b/src/js/materia/materia.scores.scoregraphics.js index 50d24073..c988824f 100644 --- a/src/js/materia/materia.scores.scoregraphics.js +++ b/src/js/materia/materia.scores.scoregraphics.js @@ -122,6 +122,6 @@ Namespace('Materia.Scores').Scoregraphics = (() => { return { drawScoreCircle, drawModifierCircle, - drawFinalScoreCircle + drawFinalScoreCircle, } })() diff --git a/src/js/materia/materia.set.throbber.js b/src/js/materia/materia.set.throbber.js index e9739301..0f445b13 100644 --- a/src/js/materia/materia.set.throbber.js +++ b/src/js/materia/materia.set.throbber.js @@ -5,7 +5,7 @@ Namespace('Materia.Set').Throbber = (() => { } } - const stopSpin = element => { + const stopSpin = (element) => { if (typeof $ !== 'undefined' && $ !== null && $(element).spin != null) { $(element).spin(false) } @@ -13,6 +13,6 @@ Namespace('Materia.Set').Throbber = (() => { return { startSpin, - stopSpin + stopSpin, } })() diff --git a/src/js/materia/materia.storage.manager.js b/src/js/materia/materia.storage.manager.js index 6006c824..98dd7134 100644 --- a/src/js/materia/materia.storage.manager.js +++ b/src/js/materia/materia.storage.manager.js @@ -40,7 +40,7 @@ Namespace('Materia.Storage').Manager = (() => { Materia.Engine.sendStorage(result) } - var getTable = tableId => { + var getTable = (tableId) => { tableId = clean(tableId) // Search for the Table // can't use array.find here due to IE11 @@ -55,7 +55,7 @@ Namespace('Materia.Storage').Manager = (() => { return null } - var clean = name => { + var clean = (name) => { name = String(name) let cleanName = name .replace(/^([ ]+)/, '') @@ -74,6 +74,6 @@ Namespace('Materia.Storage').Manager = (() => { addTable, clean, insert, - getTable + getTable, } })() diff --git a/src/js/materia/materia.storage.manager.test.js b/src/js/materia/materia.storage.manager.test.js index ecfececd..e45f4133 100644 --- a/src/js/materia/materia.storage.manager.test.js +++ b/src/js/materia/materia.storage.manager.test.js @@ -4,7 +4,7 @@ describe('Materia.Storage.Manager', () => { let mockSendStorage beforeEach(() => { - require('../materia-namespace') + require('../common/materia-namespace') require('./materia.storage.manager') Storage = Materia.Storage.Manager Namespace('Materia.Storage').Table = mockTable = jest.fn() @@ -53,7 +53,7 @@ describe('Materia.Storage.Manager', () => { let table = { init: jest.fn(), getId: () => 'table_name', - insert: jest.fn().mockReturnValue('res') + insert: jest.fn().mockReturnValue('res'), } mockTable.mockReturnValueOnce(table) Storage.addTable('table_name', 'col1', 'col2') diff --git a/src/js/materia/materia.storage.table.js b/src/js/materia/materia.storage.table.js index 14407492..ff890d65 100644 --- a/src/js/materia/materia.storage.table.js +++ b/src/js/materia/materia.storage.table.js @@ -11,7 +11,7 @@ Namespace('Materia.Storage').Table = () => { _id = Materia.Storage.Manager.clean(id) _columns = [] _rows = [] - columns.forEach(c => { + columns.forEach((c) => { _columns.push(Materia.Storage.Manager.clean(c)) }) } @@ -19,7 +19,7 @@ Namespace('Materia.Storage').Table = () => { // Inserts a new row into this table. // @param values The values to insert into the table. Make sure the number // of arguments passed match the number of columns pertaining to this table. - const insert = values => { + const insert = (values) => { // Make sure arguments match number of columns if (values.length !== _columns.length) { throw new Error( @@ -40,7 +40,7 @@ Namespace('Materia.Storage').Table = () => { // Send this row to the server return { name: _id, - data: result + data: result, } } @@ -54,6 +54,6 @@ Namespace('Materia.Storage').Table = () => { getId, init, insert, - getValues + getValues, } } diff --git a/src/js/materia/materia.storage.table.test.js b/src/js/materia/materia.storage.table.test.js index 696383c9..56de6f31 100644 --- a/src/js/materia/materia.storage.table.test.js +++ b/src/js/materia/materia.storage.table.test.js @@ -4,7 +4,7 @@ describe('Materia.Storage.Table', () => { let mockSendStorage beforeEach(() => { - require('../materia-namespace') + require('../common/materia-namespace') require('./materia.storage.manager') require('./materia.storage.table') Table = Materia.Storage.Table() diff --git a/src/js/materia/materia.store.slideshow.js b/src/js/materia/materia.store.slideshow.js index 0115d04c..6d790369 100644 --- a/src/js/materia/materia.store.slideshow.js +++ b/src/js/materia/materia.store.slideshow.js @@ -4,7 +4,7 @@ Namespace('Materia.Store').SlideShow = (() => { let cycler let intervalID - const formatCycler = spotlights => { + const formatCycler = (spotlights) => { cycler = document.querySelector('.cycler') spotlightCount = spotlights.length @@ -34,7 +34,7 @@ Namespace('Materia.Store').SlideShow = (() => { span.classList.add('span_next') span.dataset.index = i if (i === 0) span.classList.add('spotlight_selected') - span.onclick = e => { + span.onclick = (e) => { if (e.target.classList.contains('spotlight_selected')) { return false } @@ -51,7 +51,7 @@ Namespace('Materia.Store').SlideShow = (() => { }, 12000) } - const goToSlide = slideNo => { + const goToSlide = (slideNo) => { slideNo = parseInt(slideNo, 10) if (slideNo >= spotlightCount) { slideNo = 0 @@ -70,10 +70,10 @@ Namespace('Materia.Store').SlideShow = (() => { } // Cycles thorough the buttons to remove all selected clases, then adds the selected class to the button specified and checks that buttons input. - const spotlightSelected = index => { + const spotlightSelected = (index) => { // clear previously selected let spans = Array.from(document.querySelectorAll('.spotlight_selected')) - spans.forEach(s => { + spans.forEach((s) => { s.classList.remove('spotlight_selected') }) diff --git a/src/js/materia/materia.user.js b/src/js/materia/materia.user.js index 673ca2cc..ce604881 100644 --- a/src/js/materia/materia.user.js +++ b/src/js/materia/materia.user.js @@ -1,12 +1,12 @@ Namespace('Materia').User = (() => { let currentUser = null - const getCurrentUser = callback => { + const getCurrentUser = (callback) => { if (currentUser != null) { callback(currentUser) } else { // if we are unable to retrieve it then we need to pull it from the server: - Materia.Coms.Json.send('user_get', null).then(user => { + Materia.Coms.Json.send('user_get', null).then((user) => { currentUser = user callback(currentUser) }) diff --git a/src/js/materia/materia.util.js b/src/js/materia/materia.util.js index a9e9cfb3..f87d45c0 100644 --- a/src/js/materia/materia.util.js +++ b/src/js/materia/materia.util.js @@ -1,6 +1,6 @@ Namespace('Materia').Util = (() => { // Use for cross side scripting prevention. - const escapeUntrustedContent = text => + const escapeUntrustedContent = (text) => text .replace(//g, '>') diff --git a/src/js/materia/materia.validate.textfield.js b/src/js/materia/materia.validate.textfield.js index 3f3cfaa4..6f535f03 100644 --- a/src/js/materia/materia.validate.textfield.js +++ b/src/js/materia/materia.validate.textfield.js @@ -25,12 +25,12 @@ Namespace('Materia.Validate').Textfield = (() => { return false } - const numericOnly = event => resctrict('numeric', event) + const numericOnly = (event) => resctrict('numeric', event) - const timeOnly = event => resctrict('time', event) + const timeOnly = (event) => resctrict('time', event) return { numericOnly, - timeOnly + timeOnly, } })() diff --git a/src/js/services/srv-admin.js b/src/js/services/srv-admin.js index cc193d0b..b7cde26f 100644 --- a/src/js/services/srv-admin.js +++ b/src/js/services/srv-admin.js @@ -1,13 +1,13 @@ const app = angular.module('materia') -app.service('adminSrv', function() { +app.service('AdminSrv', function () { const getWidgets = () => Materia.Coms.Json.get('/api/admin/widgets') - const saveWidget = widget => + const saveWidget = (widget) => Materia.Coms.Json.post(`/api/admin/widget/${encodeURIComponent(widget.id)}`, widget) - const searchUsers = str => + const searchUsers = (str) => Materia.Coms.Json.get(`/api/admin/user_search/${encodeURIComponent(str)}`) - const lookupUser = userId => + const lookupUser = (userId) => Materia.Coms.Json.get(`/api/admin/user/${encodeURIComponent(userId)}`) - const saveUser = obj => + const saveUser = (obj) => Materia.Coms.Json.post(`/api/admin/user/${encodeURIComponent(obj.id)}`, obj) return { @@ -15,6 +15,6 @@ app.service('adminSrv', function() { saveWidget, searchUsers, lookupUser, - saveUser + saveUser, } }) diff --git a/src/js/services/srv-admin.test.js b/src/js/services/srv-admin.test.js index e4fa69da..51d42c0d 100644 --- a/src/js/services/srv-admin.test.js +++ b/src/js/services/srv-admin.test.js @@ -1,4 +1,4 @@ -describe('adminSrv', () => { +describe('AdminSrv', () => { var $rootScope var _service var postMock @@ -18,11 +18,11 @@ describe('adminSrv', () => { mockPlease = { $apply: jest.fn() } let app = angular.module('materia') app.factory('Please', () => mockPlease) - require('../materia-namespace') + require('../common/materia-namespace') require('./srv-admin') - inject(function(adminSrv, _$q_, _$rootScope_) { - _service = adminSrv + inject(function (AdminSrv, _$q_, _$rootScope_) { + _service = AdminSrv $q = _$q_ $rootScope = _$rootScope_ }) diff --git a/src/js/services/srv-api.js b/src/js/services/srv-api.js index 7a81d991..332e2548 100644 --- a/src/js/services/srv-api.js +++ b/src/js/services/srv-api.js @@ -1,14 +1,14 @@ const app = angular.module('materia') -app.service('apiServ', function($window) { +app.service('APIServ', function ($window) { const gatewayURL = API_LINK - const filterError = data => { + const filterError = (data) => { if (data != null && data.msg != null && data.title != null && data.type != null) { showErorr(data) } } - var showErorr = data => { + var showErorr = (data) => { if (data.title === 'Invalid Login') { $window.location = BASE_URL + 'login' } @@ -17,6 +17,6 @@ app.service('apiServ', function($window) { // public methods return { showErorr, - filterError + filterError, } }) diff --git a/src/js/services/srv-api.test.js b/src/js/services/srv-api.test.js index ebeedf70..f1d73748 100644 --- a/src/js/services/srv-api.test.js +++ b/src/js/services/srv-api.test.js @@ -1,4 +1,4 @@ -describe('apiServ', () => { +describe('APIServ', () => { var _service var mockWindow var mockLocationSet @@ -12,15 +12,15 @@ describe('apiServ', () => { mockLocationGet = jest.fn(() => 'mock') Object.defineProperty(mockWindow, 'location', { get: mockLocationGet, - set: mockLocationSet + set: mockLocationSet, }) let app = angular.module('materia') app.factory('$window', () => mockWindow) - require('../materia-namespace') + require('../common/materia-namespace') require('./srv-api') - inject(function(apiServ) { - _service = apiServ + inject(function (APIServ) { + _service = APIServ }) }) diff --git a/src/js/services/srv-beard.js b/src/js/services/srv-beard.js index c9805bb4..06e5315b 100644 --- a/src/js/services/srv-beard.js +++ b/src/js/services/srv-beard.js @@ -1,5 +1,5 @@ const app = angular.module('materia') -app.service('beardServ', function() { +app.service('BeardServ', function () { const beards = ['dusty_full', 'black_chops', 'grey_gandalf', 'red_soul'] const getRandomBeard = () => beards[Math.floor(Math.random() * beards.length)] diff --git a/src/js/services/srv-beard.test.js b/src/js/services/srv-beard.test.js index bf46c8e0..25678260 100644 --- a/src/js/services/srv-beard.test.js +++ b/src/js/services/srv-beard.test.js @@ -1,11 +1,11 @@ -describe('beardServ', () => { +describe('BeardServ', () => { var _service beforeEach(() => { - require('../materia-namespace') + require('../common/materia-namespace') require('./srv-beard') - inject(function(beardServ) { - _service = beardServ + inject(function (BeardServ) { + _service = BeardServ }) }) diff --git a/src/js/services/srv-datetime.js b/src/js/services/srv-datetime.js index 81552c3e..ffcd3810 100644 --- a/src/js/services/srv-datetime.js +++ b/src/js/services/srv-datetime.js @@ -1,12 +1,12 @@ const app = angular.module('materia') -app.service('dateTimeServ', function() { - const parseObjectToDateString = time => { +app.service('DateTimeServ', function () { + const parseObjectToDateString = (time) => { const timeObj = new Date(time * 1000) const year = String(timeObj.getFullYear()) return timeObj.getMonth() + 1 + '/' + timeObj.getDate() + '/' + year.substr(2) } - const parseTime = time => { + const parseTime = (time) => { const timeObj = new Date(time * 1000) let amPm = 'am' let hour = timeObj.getHours() @@ -67,6 +67,6 @@ app.service('dateTimeServ', function() { return { parseObjectToDateString, parseTime, - fixTime + fixTime, } }) diff --git a/src/js/services/srv-datetime.test.js b/src/js/services/srv-datetime.test.js index 4323c8c8..7a3a802e 100644 --- a/src/js/services/srv-datetime.test.js +++ b/src/js/services/srv-datetime.test.js @@ -1,14 +1,14 @@ -describe('dateTimeServ', () => { +describe('DateTimeServ', () => { var _service var mockWindow var mockLocationSet var mockLocationGet beforeEach(() => { - require('../materia-namespace') + require('../common/materia-namespace') require('./srv-datetime') - inject(function(dateTimeServ) { - _service = dateTimeServ + inject(function (DateTimeServ) { + _service = DateTimeServ }) }) diff --git a/src/js/services/srv-please.js b/src/js/services/srv-please.js index 9d88afb4..cbb9c5cd 100644 --- a/src/js/services/srv-please.js +++ b/src/js/services/srv-please.js @@ -1,8 +1,8 @@ const app = angular.module('materia') -app.service('Please', function($rootScope) { +app.service('Please', function ($rootScope) { return { $apply: () => { if (!$rootScope.$$phase) $rootScope.$apply() - } + }, } }) diff --git a/src/js/services/srv-scores.js b/src/js/services/srv-scores.js index 7bacc705..c68e47d9 100644 --- a/src/js/services/srv-scores.js +++ b/src/js/services/srv-scores.js @@ -1,5 +1,5 @@ const app = angular.module('materia') -app.service('scoreSrv', function() { +app.service('ScoreSrv', function () { return { getWidgetInstanceScores(inst_id, token, callback) { Materia.Coms.Json.send('widget_instance_scores_get', [inst_id, token]).then(callback) @@ -25,6 +25,6 @@ app.service('scoreSrv', function() { getScoreDistribution(inst_id, callback) { Materia.Coms.Json.send('score_raw_distribution_get', [inst_id]).then(callback) - } + }, } }) diff --git a/src/js/services/srv-scores.test.js b/src/js/services/srv-scores.test.js index 287eef73..542e8529 100644 --- a/src/js/services/srv-scores.test.js +++ b/src/js/services/srv-scores.test.js @@ -1,4 +1,4 @@ -describe('scoreSrv', () => { +describe('ScoreSrv', () => { var _service var postMock var sendMock @@ -15,11 +15,11 @@ describe('scoreSrv', () => { } beforeEach(() => { - require('../materia-namespace') + require('../common/materia-namespace') require('./srv-scores') - inject(function(scoreSrv, _$q_, _$rootScope_) { - _service = scoreSrv + inject(function (ScoreSrv, _$q_, _$rootScope_) { + _service = ScoreSrv $q = _$q_ $rootScope = _$rootScope_ }) diff --git a/src/js/services/srv-selectedwidget.js b/src/js/services/srv-selectedwidget.js index d4020dd2..557f2977 100644 --- a/src/js/services/srv-selectedwidget.js +++ b/src/js/services/srv-selectedwidget.js @@ -1,5 +1,5 @@ const app = angular.module('materia') -app.service('selectedWidgetSrv', function($rootScope, $q, OBJECT_TYPES) { +app.service('SelectedWidgetSrv', function ($rootScope, $q, OBJECT_TYPES) { const STORAGE_TABLE_MAX_ROWS_SHOWN = 100 const selectedData = null @@ -13,7 +13,7 @@ app.service('selectedWidgetSrv', function($rootScope, $q, OBJECT_TYPES) { let _storageData = null // get and set _widget - const set = widget => { + const set = (widget) => { _scoreData = null _storageData = null _widget = widget @@ -31,7 +31,7 @@ app.service('selectedWidgetSrv', function($rootScope, $q, OBJECT_TYPES) { deferred.resolve(_scoreData) } else { let loadingId = _widget.id - Materia.Coms.Json.send('score_summary_get', [loadingId, true]).then(data => { + Materia.Coms.Json.send('score_summary_get', [loadingId, true]).then((data) => { if (loadingId !== _widget.id) { return deferred.reject() } @@ -39,19 +39,19 @@ app.service('selectedWidgetSrv', function($rootScope, $q, OBJECT_TYPES) { _scoreData = { list: [], map: {}, - last: undefined + last: undefined, } if (data !== null && data.length > 0) { const map = {} - data.forEach(d => { + data.forEach((d) => { map[d.id] = d }) _scoreData = { list: data, map, - last: data[0] + last: data[0], } } @@ -65,11 +65,11 @@ app.service('selectedWidgetSrv', function($rootScope, $q, OBJECT_TYPES) { const getUserPermissions = () => { return Materia.Coms.Json.send('permissions_get', [ OBJECT_TYPES.WIDGET_INSTANCE, - _widget.id - ]).then(perms => { + _widget.id, + ]).then((perms) => { const permsObject = { user: perms.user_perms, - widget: perms.widget_user_perms + widget: perms.widget_user_perms, } return permsObject @@ -79,7 +79,7 @@ app.service('selectedWidgetSrv', function($rootScope, $q, OBJECT_TYPES) { const getPlayLogsForSemester = (term, year) => { const deferred = $q.defer() - Materia.Coms.Json.send('play_logs_get', [_widget.id, term, year]).then(logs => { + Materia.Coms.Json.send('play_logs_get', [_widget.id, term, year]).then((logs) => { const semesterKey = `${year}${term.toLowerCase()}` const logsForSemester = [] angular.forEach(logs, (log, key) => { @@ -101,7 +101,7 @@ app.service('selectedWidgetSrv', function($rootScope, $q, OBJECT_TYPES) { const getDateRanges = () => { const deferred = $q.defer() if (_dateRanges == null) { - Materia.Coms.Json.send('semester_date_ranges_get', []).then(data => { + Materia.Coms.Json.send('semester_date_ranges_get', []).then((data) => { _dateRanges = data deferred.resolve(data) }) @@ -111,9 +111,9 @@ app.service('selectedWidgetSrv', function($rootScope, $q, OBJECT_TYPES) { return deferred.promise } - const getSemesterFromTimestamp = timestamp => { + const getSemesterFromTimestamp = (timestamp) => { return _dateRanges.find( - r => timestamp >= parseInt(r.start, 10) && timestamp <= parseInt(r.end, 10) + (r) => timestamp >= parseInt(r.start, 10) && timestamp <= parseInt(r.end, 10) ) } @@ -123,7 +123,7 @@ app.service('selectedWidgetSrv', function($rootScope, $q, OBJECT_TYPES) { if (_storageData != null) { deferred.resolve(_storageData) } else if (loadIfNotCached) { - Materia.Coms.Json.send('play_storage_get', [_widget.id]).then(data => { + Materia.Coms.Json.send('play_storage_get', [_widget.id]).then((data) => { _storageData = {} const temp = {} @@ -146,7 +146,7 @@ app.service('selectedWidgetSrv', function($rootScope, $q, OBJECT_TYPES) { _storageData[semesterId][tableName] = { truncated: true, total: semesterData.length, - data: semesterData.slice(0, STORAGE_TABLE_MAX_ROWS_SHOWN) + data: semesterData.slice(0, STORAGE_TABLE_MAX_ROWS_SHOWN), } } else { _storageData[semesterId][tableName] = { truncated: false, data: semesterData } @@ -166,7 +166,7 @@ app.service('selectedWidgetSrv', function($rootScope, $q, OBJECT_TYPES) { return deferred.promise } - const _processDataIntoSemesters = logs => { + const _processDataIntoSemesters = (logs) => { const semesters = {} let timestamp = null @@ -187,7 +187,7 @@ app.service('selectedWidgetSrv', function($rootScope, $q, OBJECT_TYPES) { // storage data doesn't really enforce a schema. // this function determines every field used throughout the // storage data and then applies that schema to each item. - const _normalizeStorageDataColumns = rows => { + const _normalizeStorageDataColumns = (rows) => { // go through all the rows and collect the fields used: const fields = {} for (var r of rows) { @@ -223,6 +223,6 @@ app.service('selectedWidgetSrv', function($rootScope, $q, OBJECT_TYPES) { getSemesterFromTimestamp, getStorageData, getMaxRows, - notifyAccessDenied + notifyAccessDenied, } }) diff --git a/src/js/services/srv-selectedwidget.test.js b/src/js/services/srv-selectedwidget.test.js index b5288f37..8a84697c 100644 --- a/src/js/services/srv-selectedwidget.test.js +++ b/src/js/services/srv-selectedwidget.test.js @@ -1,11 +1,11 @@ -describe('selectedWidgetSrv', () => { +describe('SelectedWidgetSrv', () => { var _service var _compile var $scope var sendMock var $q - let mockSendPromiseOnce = result => { + let mockSendPromiseOnce = (result) => { sendMock.mockImplementationOnce((n, arg, cb) => { const deferred = $q.defer() deferred.resolve(result) @@ -14,13 +14,13 @@ describe('selectedWidgetSrv', () => { } beforeEach(() => { - require('../materia-namespace') - require('../materia-constants') + require('../common/materia-namespace') + require('../common/materia-constants') require('./srv-selectedwidget') - inject(function(_$rootScope_, selectedWidgetSrv, _$q_) { + inject(function (_$rootScope_, SelectedWidgetSrv, _$q_) { $scope = _$rootScope_ - _service = selectedWidgetSrv + _service = SelectedWidgetSrv $q = _$q_ }) @@ -87,7 +87,7 @@ describe('selectedWidgetSrv', () => { expect(promiseSpy).toHaveBeenCalledWith({ last: { id: 5 }, list: [{ id: 5 }, { id: 9 }], - map: { '5': { id: 5 }, '9': { id: 9 } } + map: { '5': { id: 5 }, '9': { id: 9 } }, }) let promiseSpy2 = jest.fn() @@ -98,7 +98,7 @@ describe('selectedWidgetSrv', () => { expect(promiseSpy2).toHaveBeenCalledWith({ last: { id: 5 }, list: [{ id: 5 }, { id: 9 }], - map: { '5': { id: 5 }, '9': { id: 9 } } + map: { '5': { id: 5 }, '9': { id: 9 } }, }) }) @@ -232,14 +232,14 @@ describe('selectedWidgetSrv', () => { year: '2016', semester: 'Summer', start: '1462233601', - end: '1470528000' + end: '1470528000', } let expectedSemseterB = { year: '2028', semester: 'Summer', start: '1840939201', - end: '1849233600' + end: '1849233600', } let semsterA = _service.getSemesterFromTimestamp(1462233601) diff --git a/src/js/services/srv-user.js b/src/js/services/srv-user.js index d2ceebf5..f46817d1 100644 --- a/src/js/services/srv-user.js +++ b/src/js/services/srv-user.js @@ -1,5 +1,5 @@ const app = angular.module('materia') -app.service('userServ', function($q, $rootScope) { +app.service('UserServ', function ($q, $rootScope) { let _me = null let _user = null @@ -29,7 +29,7 @@ app.service('userServ', function($q, $rootScope) { avatar, loggedIn, role, - notify + notify, } } @@ -40,7 +40,7 @@ app.service('userServ', function($q, $rootScope) { avatar: user.getAttribute('data-avatar'), loggedIn: user.getAttribute('data-logged-in'), role: user.getAttribute('data-role'), - notify: user.getAttribute('data-notify') + notify: user.getAttribute('data-notify'), } return buildUser( userData.name, @@ -73,7 +73,7 @@ app.service('userServ', function($q, $rootScope) { return _me } - const getCurrentUserAvatar = size => { + const getCurrentUserAvatar = (size) => { if (size == null) { size = 24 } @@ -92,7 +92,7 @@ app.service('userServ', function($q, $rootScope) { return deferred.promise } - const set = userToSet => { + const set = (userToSet) => { _user = userToSet return $rootScope.$broadcast('user.update') } @@ -101,7 +101,7 @@ app.service('userServ', function($q, $rootScope) { var _getCurrentUserFromAPI = () => { const deferred = $q.defer() - Materia.User.getCurrentUser(user => { + Materia.User.getCurrentUser((user) => { set(user) deferred.resolve(_user) }) @@ -109,14 +109,14 @@ app.service('userServ', function($q, $rootScope) { return deferred.promise } - const checkValidSession = role => { + const checkValidSession = (role) => { const deferred = $q.defer() let now = new Date().getTime() if (validLastValue && now - validLastCheck < threshold) { deferred.resolve(validLastValue) } else { - Materia.Coms.Json.send('session_author_verify', [role]).then(data => { + Materia.Coms.Json.send('session_author_verify', [role]).then((data) => { validLastCheck = now validLastValue = data deferred.resolve(data) @@ -134,6 +134,6 @@ app.service('userServ', function($q, $rootScope) { updateSettings, get, set, - checkValidSession + checkValidSession, } }) diff --git a/src/js/services/srv-user.test.js b/src/js/services/srv-user.test.js index 8f6cde3b..aaa92e94 100644 --- a/src/js/services/srv-user.test.js +++ b/src/js/services/srv-user.test.js @@ -1,11 +1,11 @@ -describe('userServ', () => { +describe('UserServ', () => { var _service var $scope var sendMock var getCurrentUserMock var $q - let mockSendPromiseOnce = result => { + let mockSendPromiseOnce = (result) => { sendMock.mockImplementationOnce((n, arg, cb) => { const deferred = $q.defer() deferred.resolve(result) @@ -14,13 +14,13 @@ describe('userServ', () => { } beforeEach(() => { - require('../materia-namespace') - require('../materia-constants') + require('../common/materia-namespace') + require('../common/materia-constants') require('./srv-user') - inject(function(_$rootScope_, userServ, _$q_) { + inject(function (_$rootScope_, UserServ, _$q_) { $scope = _$rootScope_ - _service = userServ + _service = UserServ $q = _$q_ }) @@ -44,12 +44,12 @@ describe('userServ', () => { loggedIn: false, name: '', notify: false, - role: 'Student' + role: 'Student', }) }) it('getCurrentUser returns a user from the dom', () => { - jest.spyOn(global.document, 'getElementById').mockImplementationOnce(arg => { + jest.spyOn(global.document, 'getElementById').mockImplementationOnce((arg) => { return { getAttribute: jest .fn() @@ -57,7 +57,7 @@ describe('userServ', () => { .mockImplementationOnce(() => 'avatar') .mockImplementationOnce(() => 'true') .mockImplementationOnce(() => 'role') - .mockImplementationOnce(() => 'notify') + .mockImplementationOnce(() => 'notify'), } }) expect(_service.getCurrentUser('dom')).toMatchObject({ @@ -65,13 +65,13 @@ describe('userServ', () => { loggedIn: true, name: 'name', notify: false, - role: 'role' + role: 'role', }) global.document.getElementById.mockRestore() }) it('getCurrentUser returns a user from the dom with no argument', () => { - jest.spyOn(global.document, 'getElementById').mockImplementationOnce(arg => { + jest.spyOn(global.document, 'getElementById').mockImplementationOnce((arg) => { return { getAttribute: jest.fn(() => '') } }) expect(_service.getCurrentUser()).toMatchObject({ @@ -79,13 +79,13 @@ describe('userServ', () => { loggedIn: false, name: '', notify: false, - role: '' + role: '', }) global.document.getElementById.mockRestore() }) it('getCurrentUser caches the current user', () => { - jest.spyOn(global.document, 'getElementById').mockImplementationOnce(arg => { + jest.spyOn(global.document, 'getElementById').mockImplementationOnce((arg) => { return { getAttribute: jest.fn(() => '') } }) expect(_service.getCurrentUser()).toMatchObject({ @@ -93,7 +93,7 @@ describe('userServ', () => { loggedIn: false, name: '', notify: false, - role: '' + role: '', }) expect(global.document.getElementById).toHaveBeenCalledTimes(1) @@ -102,7 +102,7 @@ describe('userServ', () => { loggedIn: false, name: '', notify: false, - role: '' + role: '', }) expect(global.document.getElementById).toHaveBeenCalledTimes(1) @@ -140,7 +140,7 @@ describe('userServ', () => { loggedIn: true, name: 'name', notify: false, - role: 'role' + role: 'role', }) expect(_service.updateSettings('name', 'newname')).toBe('newname') expect(_service.getCurrentUser()).toMatchObject({ @@ -148,7 +148,7 @@ describe('userServ', () => { loggedIn: true, name: 'newname', notify: false, - role: 'role' + role: 'role', }) expect(_service.updateSettings('avatar', 'newavatar')).toBe('newavatar') expect(_service.getCurrentUser()).toMatchObject({ @@ -156,7 +156,7 @@ describe('userServ', () => { loggedIn: true, name: 'newname', notify: false, - role: 'role' + role: 'role', }) expect(_service.updateSettings('loggedIn', 'weirdvalue')).toBe('weirdvalue') expect(_service.getCurrentUser()).toMatchObject({ @@ -164,12 +164,12 @@ describe('userServ', () => { loggedIn: 'weirdvalue', name: 'newname', notify: false, - role: 'role' + role: 'role', }) }) it('get returns a promise', () => { - getCurrentUserMock.mockImplementationOnce(cb => { + getCurrentUserMock.mockImplementationOnce((cb) => { cb({ avatar: '', loggedIn: false, name: '', notify: false, role: '' }) }) // when there's no cache @@ -180,7 +180,7 @@ describe('userServ', () => { it('get resolves after getting the current user', () => { let user = { avatar: '', loggedIn: false, name: '', notify: false, role: '' } - getCurrentUserMock.mockImplementationOnce(cb => { + getCurrentUserMock.mockImplementationOnce((cb) => { cb(user) }) diff --git a/src/js/services/srv-widget.js b/src/js/services/srv-widget.js index de75a677..f8feb189 100644 --- a/src/js/services/srv-widget.js +++ b/src/js/services/srv-widget.js @@ -1,5 +1,5 @@ const app = angular.module('materia') -app.service('widgetSrv', function(selectedWidgetSrv, dateTimeServ, $q, $rootScope, $window) { +app.service('WidgetSrv', function (SelectedWidgetSrv, DateTimeServ, $q, $rootScope, $window) { const deferred = $q.defer() let _widgets = [] let _widgetIds = {} @@ -7,12 +7,12 @@ app.service('widgetSrv', function(selectedWidgetSrv, dateTimeServ, $q, $rootScop const sortWidgets = () => _widgets.sort((a, b) => b.created_at - a.created_at) - const getWidgets = () => { + const getWidgets = (force = false) => { const deferred = $q.defer() - if (_widgets.length === 0 || !gotAll) { + if (_widgets.length === 0 || !gotAll || force) { gotAll = true - _getMultipleFromServer().then(widgets => { + _getMultipleFromServer().then((widgets) => { _widgets = widgets.slice(0) // save a copy sortWidgets() deferred.resolve(_widgets) @@ -35,7 +35,7 @@ app.service('widgetSrv', function(selectedWidgetSrv, dateTimeServ, $q, $rootScop } else { // we dont have any widgets or the requested one, get it/them _getSingleWidgetFromServer(id) - .then(widget => { + .then((widget) => { _widgets.push(widget) _widgetIds[widget.id] = widget sortWidgets() @@ -50,12 +50,12 @@ app.service('widgetSrv', function(selectedWidgetSrv, dateTimeServ, $q, $rootScop } const getWidgetInfo = (id = null) => { - return Materia.Coms.Json.send('widgets_get', [[id]]).then(widgets => widgets[0]) + return Materia.Coms.Json.send('widgets_get', [[id]]).then((widgets) => widgets[0]) } const lockWidget = (id = null) => { const deferred = $q.defer() - Materia.Coms.Json.send('widget_instance_lock', [id]).then(success => { + Materia.Coms.Json.send('widget_instance_lock', [id]).then((success) => { if (success) { deferred.resolve(id) } else { @@ -71,15 +71,15 @@ app.service('widgetSrv', function(selectedWidgetSrv, dateTimeServ, $q, $rootScop return Materia.Coms.Json.send('widgets_get_by_type', [type]) } - const copyWidget = (inst_id, newName) => { - return Materia.Coms.Json.send('widget_instance_copy', [inst_id, newName]) + const copyWidget = (inst_id, newName, retainAccess = false) => { + return Materia.Coms.Json.send('widget_instance_copy', [inst_id, newName, retainAccess]) } - const deleteWidget = inst_id => { + const deleteWidget = (inst_id) => { return Materia.Coms.Json.send('widget_instance_delete', [inst_id]) } - const saveWidget = _params => { + const saveWidget = (_params) => { const deferred = $q.defer() const defaults = { qset: null, @@ -88,7 +88,7 @@ app.service('widgetSrv', function(selectedWidgetSrv, dateTimeServ, $q, $rootScop close_at: null, attempts: null, guest_access: null, - embedded_only: null + embedded_only: null, } let params = Object.assign({}, defaults, _params) @@ -104,13 +104,13 @@ app.service('widgetSrv', function(selectedWidgetSrv, dateTimeServ, $q, $rootScop params.close_at, params.attempts, params.guest_access, - params.embedded_only + params.embedded_only, ] - Materia.Coms.Json.send('widget_instance_update', args).then(widget => { + Materia.Coms.Json.send('widget_instance_update', args).then((widget) => { if (widget != null) { _initSearchCache(widget) // replace our widget in place - let match = _widgets.findIndex(w => w.id === widget.id) + let match = _widgets.findIndex((w) => w.id === widget.id) if (match !== -1) { _widgets[match] = widget _widgetIds[widget.id] = widget @@ -120,7 +120,7 @@ app.service('widgetSrv', function(selectedWidgetSrv, dateTimeServ, $q, $rootScop }) } else { let args = [params.widget_id, params.name, params.qset, params.is_draft] - Materia.Coms.Json.send('widget_instance_new', args).then(widget => { + Materia.Coms.Json.send('widget_instance_new', args).then((widget) => { if (widget != null) { // add to widgets _initSearchCache(widget) @@ -134,7 +134,7 @@ app.service('widgetSrv', function(selectedWidgetSrv, dateTimeServ, $q, $rootScop return deferred.promise } - const removeWidget = inst_id => { + const removeWidget = (inst_id) => { let selectedIndex let index = -1 _widgets = _widgets.filter((widget, i) => { @@ -165,12 +165,12 @@ app.service('widgetSrv', function(selectedWidgetSrv, dateTimeServ, $q, $rootScop $rootScope.$broadcast('widgetList.update') } - const _initSearchCache = widget => { + const _initSearchCache = (widget) => { widget.searchCache = `${widget.id} ${widget.widget.name} ${widget.name}`.toLowerCase() } - const _getSingleWidgetFromServer = id => { - return Materia.Coms.Json.send('widget_instances_get', [[id]]).then(widgets => { + const _getSingleWidgetFromServer = (id) => { + return Materia.Coms.Json.send('widget_instances_get', [[id]]).then((widgets) => { if (!widgets || !widgets.length) { let d = $q.defer() d.reject() @@ -184,22 +184,29 @@ app.service('widgetSrv', function(selectedWidgetSrv, dateTimeServ, $q, $rootScop const _getMultipleFromServer = () => { const deferred = $q.defer() - Materia.Coms.Json.send('widget_instances_get', null).then(widgets => { - if (widgets && widgets.length > 0) { - widgets.forEach(w => { - _widgetIds[w.id] = w + Materia.Coms.Json.send('widget_instances_get', null).then((widgets) => { + if (widgets && widgets.length > 0 && widgets.length >= _widgets.length) { + let index = 0 + + widgets.forEach((w) => { _initSearchCache(w) - _widgets.push(w) + _widgetIds[w.id] = w + _widgets.splice(index, 1, w) + index++ }) } + if (widgets.length < _widgets.length) { + _widgets = widgets + } + deferred.resolve(_widgets) }) return deferred.promise } - const updateHashUrl = widgetId => ($window.location.hash = `/${widgetId}`) + const updateHashUrl = (widgetId) => ($window.location.hash = `/${widgetId}`) const convertAvailibilityDates = (startDateInt, endDateInt) => { let endDate, endTime, open_at, startTime @@ -209,24 +216,24 @@ app.service('widgetSrv', function(selectedWidgetSrv, dateTimeServ, $q, $rootScop open_at = startTime = 0 if (endDateInt > 0) { - endDate = dateTimeServ.parseObjectToDateString(endDateInt) - endTime = dateTimeServ.parseTime(endDateInt) + endDate = DateTimeServ.parseObjectToDateString(endDateInt) + endTime = DateTimeServ.parseTime(endDateInt) } if (startDateInt > 0) { - open_at = dateTimeServ.parseObjectToDateString(startDateInt) - startTime = dateTimeServ.parseTime(startDateInt) + open_at = DateTimeServ.parseObjectToDateString(startDateInt) + startTime = DateTimeServ.parseTime(startDateInt) } return { start: { date: open_at, - time: startTime + time: startTime, }, end: { date: endDate, - time: endTime - } + time: endTime, + }, } } @@ -238,18 +245,18 @@ app.service('widgetSrv', function(selectedWidgetSrv, dateTimeServ, $q, $rootScop selID = selID.substr(1) } getWidget(selID) - .then(widget => { - selectedWidgetSrv.set(widget) + .then((widget) => { + SelectedWidgetSrv.set(widget) }) .catch(() => { - selectedWidgetSrv.notifyAccessDenied() + SelectedWidgetSrv.notifyAccessDenied() }) } } - const canBePublishedByCurrentUser = widget_id => { + const canBePublishedByCurrentUser = (widget_id) => { const deferred = $q.defer() - Materia.Coms.Json.send('widget_publish_perms_verify', [widget_id]).then(response => { + Materia.Coms.Json.send('widget_publish_perms_verify', [widget_id]).then((response) => { deferred.resolve(response) }) @@ -270,6 +277,6 @@ app.service('widgetSrv', function(selectedWidgetSrv, dateTimeServ, $q, $rootScop convertAvailibilityDates, copyWidget, deleteWidget, - canBePublishedByCurrentUser + canBePublishedByCurrentUser, } }) diff --git a/src/js/services/srv-widget.test.js b/src/js/services/srv-widget.test.js index f78d2fce..663b34ea 100644 --- a/src/js/services/srv-widget.test.js +++ b/src/js/services/srv-widget.test.js @@ -1,15 +1,15 @@ -describe('widgetSrv', () => { +describe('WidgetSrv', () => { var _service var $scope var sendMock - var _selectedWidgetSrv + var _SelectedWidgetSrv var _dateTimeServ var mockWindow var mockHashGet var mockHashSet var $q - let mockSendPromiseOnce = result => { + let mockSendPromiseOnce = (result) => { sendMock.mockImplementationOnce((n, arg, cb) => { const deferred = $q.defer() deferred.resolve(result) @@ -19,38 +19,38 @@ describe('widgetSrv', () => { beforeEach(() => { // MOCK some services - _selectedWidgetSrv = { + _SelectedWidgetSrv = { set: jest.fn(), - notifyAccessDenied: jest.fn() + notifyAccessDenied: jest.fn(), } _dateTimeServ = { parseObjectToDateString: jest.fn(() => 'dateString'), - parseTime: jest.fn(() => 'timeString') + parseTime: jest.fn(() => 'timeString'), } let app = angular.module('materia') - app.factory('selectedWidgetSrv', () => _selectedWidgetSrv) - app.factory('dateTimeServ', () => _dateTimeServ) + app.factory('SelectedWidgetSrv', () => _SelectedWidgetSrv) + app.factory('DateTimeServ', () => _dateTimeServ) // MOCK $window mockWindow = { addEventListener: jest.fn(), - location: {} + location: {}, } mockHashGet = jest.fn() mockHashSet = jest.fn() Object.defineProperty(mockWindow.location, 'hash', { get: mockHashGet, - set: mockHashSet + set: mockHashSet, }) app.factory('$window', () => mockWindow) - require('../materia-namespace') - require('../materia-constants') + require('../common/materia-namespace') + require('../common/materia-constants') require('./srv-widget') - inject(function(_$rootScope_, widgetSrv, _$q_) { + inject(function (_$rootScope_, WidgetSrv, _$q_) { $scope = _$rootScope_ - _service = widgetSrv + _service = WidgetSrv $q = _$q_ }) @@ -127,10 +127,7 @@ describe('widgetSrv', () => { let promiseSpy = jest.fn() let promiseCatch = jest.fn() - _service - .getWidget() - .then(promiseSpy) - .catch(promiseCatch) + _service.getWidget().then(promiseSpy).catch(promiseCatch) $scope.$digest() // processes promise expect(promiseSpy).not.toHaveBeenCalled() @@ -205,7 +202,7 @@ describe('widgetSrv', () => { expect( _service .sortWidgets() - .map(i => i.id) + .map((i) => i.id) .join('') ).toBe(finalOrder) }) @@ -225,7 +222,7 @@ describe('widgetSrv', () => { mockSendPromiseOnce('mock_result') let result - _service.getWidgetsByType('type').then(d => { + _service.getWidgetsByType('type').then((d) => { result = d }) $scope.$digest() // processes promise @@ -248,7 +245,7 @@ describe('widgetSrv', () => { attempts: 5, guest_access: 6, embedded_only: 7, - widget_id: 8 + widget_id: 8, } mockSendPromiseOnce() _service.saveWidget(params) @@ -287,7 +284,7 @@ describe('widgetSrv', () => { attempts: 5, guest_access: 6, embedded_only: 7, - inst_id: 8 + inst_id: 8, } mockSendPromiseOnce() _service.saveWidget(params) @@ -298,7 +295,7 @@ describe('widgetSrv', () => { mockSendPromiseOnce(getMockApiData('widget_instances_get')[4]) let result - _service.saveWidget('type').then(d => { + _service.saveWidget('type').then((d) => { result = d }) $scope.$digest() // processes promise @@ -356,7 +353,7 @@ describe('widgetSrv', () => { let res = _service.convertAvailibilityDates(1519232808, 1519405200) expect(res).toMatchObject({ end: { date: 'dateString', time: 'timeString' }, - start: { date: 'dateString', time: 'timeString' } + start: { date: 'dateString', time: 'timeString' }, }) }) @@ -364,7 +361,7 @@ describe('widgetSrv', () => { let res = _service.convertAvailibilityDates(1519232808) expect(res).toMatchObject({ end: { date: 0, time: 0 }, - start: { date: 'dateString', time: 'timeString' } + start: { date: 'dateString', time: 'timeString' }, }) }) @@ -372,7 +369,7 @@ describe('widgetSrv', () => { let res = _service.convertAvailibilityDates(null, 1519232808) expect(res).toMatchObject({ end: { date: 'dateString', time: 'timeString' }, - start: { date: 0, time: 0 } + start: { date: 0, time: 0 }, }) }) @@ -387,8 +384,8 @@ describe('widgetSrv', () => { _service.selectWidgetFromHashUrl() $scope.$digest() // processes promise - expect(_selectedWidgetSrv.set).toHaveBeenCalled() - expect(_selectedWidgetSrv.set.mock.calls[0][0].id).toBe('0UNM0') + expect(_SelectedWidgetSrv.set).toHaveBeenCalled() + expect(_SelectedWidgetSrv.set.mock.calls[0][0].id).toBe('0UNM0') }) it('selectWidgetFromHashUrl warns about not having access', () => { @@ -400,7 +397,7 @@ describe('widgetSrv', () => { mockSendPromiseOnce() _service.selectWidgetFromHashUrl() $scope.$digest() // processes promise - expect(_selectedWidgetSrv.notifyAccessDenied).toHaveBeenCalled() + expect(_SelectedWidgetSrv.notifyAccessDenied).toHaveBeenCalled() }) it('rejects with a message when a widget is already locked', () => { @@ -408,10 +405,7 @@ describe('widgetSrv', () => { let promiseSpy = jest.fn() let promiseCatch = jest.fn() - _service - .lockWidget(1) - .then(promiseSpy) - .catch(promiseCatch) + _service.lockWidget(1).then(promiseSpy).catch(promiseCatch) $scope.$digest() // processes promise expect(Materia.Coms.Json.send).toHaveBeenCalledWith('widget_instance_lock', [1]) @@ -426,10 +420,7 @@ describe('widgetSrv', () => { let promiseSpy = jest.fn() let promiseCatch = jest.fn() - _service - .lockWidget(1) - .then(promiseSpy) - .catch(promiseCatch) + _service.lockWidget(1).then(promiseSpy).catch(promiseCatch) $scope.$digest() // processes promise expect(Materia.Coms.Json.send).toHaveBeenCalledWith('widget_instance_lock', [1]) diff --git a/src/js/student.js b/src/js/student.js new file mode 100644 index 00000000..8a4b1c22 --- /dev/null +++ b/src/js/student.js @@ -0,0 +1,16 @@ +require('./controllers/ctrl-widget-player') +require('./controllers/ctrl-user-profile') +require('./controllers/ctrl-score-page') +require('./controllers/ctrl-user-settings') +require('./directives/dir-beardable') +require('./directives/dir-datatable') +require('./directives/dir-date-validation') +require('./directives/dir-fullscreen') +require('./directives/dir-ngenter') +require('./directives/dir-scoregraph') +require('./directives/dir-scoretable') +require('./materia/materia.scores.scoregraphics') +require('./services/srv-api') +require('./services/srv-scores') + +// Materia Server scripts used on all player or student pages diff --git a/testSetup.js b/testSetup.js index c3499e60..b0bff4ac 100644 --- a/testSetup.js +++ b/testSetup.js @@ -35,6 +35,4 @@ global.getMockApiData = (type) => { return require(`./__test__/mockapi/${type}.json`) } -// global.$ = require('jquery'); - beforeEach(() => { testResetAngular(); resetNamespace(); }); diff --git a/webpack.config.js b/webpack.config.js index d3f42871..2c066cc8 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,185 +1,94 @@ const glob = require('glob'); const path = require('path'); -const ExtractTextPlugin = require("extract-text-webpack-plugin"); -const CleanWebpackPlugin = require('clean-webpack-plugin') +const IgnoreEmitPlugin = require('ignore-emit-webpack-plugin'); +const MiniCssExtractPlugin = require('mini-css-extract-plugin') +const { CleanWebpackPlugin } = require('clean-webpack-plugin') const jsPath = path.join(__dirname, 'src', 'js') const cssPath = path.join(__dirname, 'src', 'css') const outPath = path.join(__dirname, 'dist') +const entry = {} +// Webpack Entry Point Registration Overview // Create object with: -// Key = output name, Value = sass file -// for every scss file in the directory +// Key = output name, Value = source sass file +// for every scss file in the cssPath directory // EX: { 'css/.css' : './src/css/filename.scss', ...} -let cssEntries = {} -glob.sync(path.join(cssPath, '*.scss')).forEach(function(file){ - cssEntries['css/'+path.basename(file, '.scss')+'.css'] = file + +// SASS/CSS webpack entry point registration +glob.sync(path.join(cssPath, '*.scss')).forEach(file => { + entry['css/'+path.basename(file, '.scss')] = file +}) + +// JS webpack entry point registration +// locates all `js/*.js` files +glob.sync(path.join(jsPath, '*.js')).map(file => { + entry['js/'+path.basename(file)] = file }) module.exports = { - stats: { children: false, modules: false }, // reduce noising webpack print output - entry: {...cssEntries, ...{ - // materia.js present on every page on the server except inside widget iframe & error pages - // contains common libs used by other scripts - // contains everything needed by all pages that don't require a login - 'js/materia.js':[ - // polyfills - "core-js/es6/array", - "core-js/fn/array/includes", - "core-js/es6/symbol", - "core-js/es6/promise", - "core-js/fn/object/assign", - "core-js/fn/string/includes", - "core-js/web/dom-collections", - "whatwg-fetch", - // end polyfills - jsPath+'/materia-namespace.js', - jsPath+'/materia/materia.coms.json.js', - jsPath+'/materia/materia.flashcheck.js', - jsPath+'/materia/materia.image.js', - jsPath+'/materia/materia.page.default.js', - jsPath+'/materia/materia.set.throbber.js', - jsPath+'/materia/materia.store.slideshow.js', - jsPath+'/materia/materia.user.js', - jsPath+'/materia/materia.util.js', - jsPath+'/materia/materia.validate.textfield.js', - jsPath+'/materia-constants.js', - jsPath+'/controllers/ctrl-alert.js', - jsPath+'/controllers/ctrl-current-user.js', - jsPath+'/controllers/ctrl-help.js', - jsPath+'/controllers/ctrl-login.js', - jsPath+'/controllers/ctrl-notification.js', - jsPath+'/controllers/ctrl-spotlight.js', - jsPath+'/controllers/ctrl-widget-catalog.js', - jsPath+'/controllers/ctrl-widget-details.js', - jsPath+'/services/srv-datetime.js', - jsPath+'/services/srv-please.js', - jsPath+'/services/srv-selectedwidget.js', - jsPath+'/services/srv-user.js', - jsPath+'/services/srv-widget.js', - 'ngmodal/dist/ng-modal.min.js' - ], - // student.js - all the stuff needed to be a student. play, view scores, profile - 'js/student.js': [ - jsPath+'/controllers/ctrl-player.js', - jsPath+'/controllers/ctrl-profile.js', - jsPath+'/controllers/ctrl-scores.js', - jsPath+'/controllers/ctrl-settings.js', - jsPath+'/directives/dir-beardable.js', - jsPath+'/directives/dir-datatable.js', - jsPath+'/directives/dir-date-validation.js', - jsPath+'/directives/dir-fullscreen.js', - jsPath+'/directives/dir-ngenter.js', - jsPath+'/directives/dir-scoregraph.js', - jsPath+'/directives/dir-scoretable.js', - jsPath+'/materia/materia.scores.scoregraphics.js', - jsPath+'/services/srv-api.js', - jsPath+'/services/srv-scores.js', - ], - // author.js - all scripts for creating content: my widgets, widget authoring, lti picker - 'js/author.js': [ - jsPath+'/controllers/ctrl-collaboration.js', - jsPath+'/controllers/ctrl-create.js', - jsPath+'/controllers/ctrl-export-scores.js', - jsPath+'/controllers/ctrl-lti.js', - jsPath+'/controllers/ctrl-media-import.js', - jsPath+'/controllers/ctrl-my-widgets.js', - jsPath+'/controllers/ctrl-question-import.js', - jsPath+'/controllers/ctrl-selectedwidget.js', - jsPath+'/controllers/ctrl-widget-settings.js', - jsPath+'/directives/dir-beardable.js', - jsPath+'/directives/dir-datatable.js', - jsPath+'/directives/dir-date-validation.js', - jsPath+'/directives/dir-filedropper.js', - jsPath+'/directives/dir-fileonchange.js', - jsPath+'/directives/dir-ngenter.js', - jsPath+'/directives/dir-scoredata.js', - jsPath+'/directives/dir-scoregraph.js', - jsPath+'/directives/dir-scoretable.js', - jsPath+'/filters/filter-escape.js', - jsPath+'/filters/filter-highlight.js', - jsPath+'/filters/filter-multiword.js', - jsPath+'/materia/materia.mywidgets.statistics.js', - jsPath+'/services/srv-api.js', - jsPath+'/services/srv-beard.js', - jsPath+'/services/srv-scores.js', - ], - // only used on admin interface pages - 'js/admin.js':[ - jsPath+'/controllers/ctrl-admin-user.js', - jsPath+'/controllers/ctrl-admin-widget.js', - jsPath+'/services/srv-admin.js', - ], - 'js/materia.creatorcore.js': [ - jsPath+'/materia-namespace.js', - jsPath+'/materia/materia.creatorcore.js', - ], - 'js/materia.enginecore.js': [ - jsPath+'/materia-namespace.js', - jsPath+'/materia/materia.enginecore.js', - jsPath+'/materia/materia.score.js', - jsPath+'/materia/materia.storage.manager.js', - jsPath+'/materia/materia.storage.table.js', - ], - 'js/materia.scorecore.js': [ - jsPath+'/materia-namespace.js', - jsPath+'/materia/materia.scorecore.js', - ] - }}, - module: { - rules: [ - { - test: /\.js$/, - enforce: 'pre', - use: ['webpack-strip-block'] - }, - { - test: /\.js$/, - use: { - loader: 'babel-loader', - options: { - presets: [ - [ - '@babel/preset-env', - { - targets: { - browsers: [ - ">0.25%", - "not ie 10", - "not op_mini all" - ] - }, - } - ] - ], - plugins: [ - require('babel-plugin-angularjs-annotate'),] - } - } - }, - // SASS files - { - test: /\.scss$/, - use: ExtractTextPlugin.extract({ - use: [ - 'css-loader?url=false', // disable the css-loaders' function of locating image urls - 'sass-loader' - ] - }) - } - ] - }, - output: { - path: outPath, - filename: '[name]' - }, - plugins: [ - new CleanWebpackPlugin(), // clear the dist folder before build - new ExtractTextPlugin('[name]'), // pull the css out of webpack - ], - resolve: { - alias: { - // allow the code to require from node_modules - 'node_modules': path.join(__dirname, 'node_modules') - } - } -}; + stats: { + assetsSort: '!size', + entrypoints: false, + builtAt: false, + children: false, + modules: false + }, + entry, + module: { + rules: [ + { + test: /\.js$/, + enforce: 'pre', + use: [ + // Strips out code used for dev and testing. + // Look for `develblock:start` comments. + 'webpack-strip-block' + ] + }, + { + test: /\.js$/, + use: [ + 'babel-loader' // configuration in .babelrc + ] + }, + // SASS files + { + test: /\.scss$/, + use: [ + MiniCssExtractPlugin.loader, + { + loader: 'css-loader', + options: { + url: false, // don't process css urls + } + }, + { + loader: 'postcss-loader', + options: { + ident: 'postcss', + plugins: [require('autoprefixer')] + } + }, + { + loader: 'sass-loader' + } + ] + } + ] + }, + output: { + path: outPath, + filename: '[name]' + }, + plugins: [ + new CleanWebpackPlugin(), // clear the dist folder before build + new MiniCssExtractPlugin({filename: '[name].css'}), + new IgnoreEmitPlugin(/^(?!.*\.).*$/) // omit all files with no '.' in their name, webpack wasn't designed to have css entrypoints :/ + ], + resolve: { + alias: { + // allow the code to require from node_modules + 'node_modules': path.join(__dirname, 'node_modules') + } + } +} diff --git a/yarn.lock b/yarn.lock index a8abfe25..20d96b2c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,7 +9,23 @@ dependencies: "@babel/highlight" "^7.0.0" -"@babel/core@^7.1.0", "@babel/core@^7.4.5": +"@babel/code-frame@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/compat-data@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.10.4.tgz#706a6484ee6f910b719b696a9194f8da7d7ac241" + integrity sha512-t+rjExOrSVvjQQXNp5zAIYDp00KjdvGl/TpDX5REPr0S9IAIPQMTilcfG6q8c0QFmj9lSTVySV2VTsyggvtNIw== + dependencies: + browserslist "^4.12.0" + invariant "^2.2.4" + semver "^5.5.0" + +"@babel/core@^7.1.0": version "7.4.5" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.5.tgz#081f97e8ffca65a9b4b0fdc7e274e703f000c06a" integrity sha512-OvjIh6aqXtlsA8ujtGKfC7LYWksYSX8yQcM8Ay3LuvVeQ63lcOKgoZWVqcpFwkd29aYU9rVx7jxhfhiEDV9MZA== @@ -29,7 +45,39 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.4.0", "@babel/generator@^7.4.4": +"@babel/core@^7.10.4", "@babel/core@^7.7.5": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.4.tgz#780e8b83e496152f8dd7df63892b2e052bf1d51d" + integrity sha512-3A0tS0HWpy4XujGc7QtOIHTeNwUgWaZc/WuS5YQrfhU67jnVmsD6OGPc1AKHH0LJHQICGncy3+YUjIhVlfDdcA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.10.4" + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helpers" "^7.10.4" + "@babel/parser" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.4.tgz#e49eeed9fe114b62fa5b181856a43a5e32f5f243" + integrity sha512-toLIHUIAgcQygFZRAQcsLQV3CBuX6yOIru1kJk/qqqvcRmZrYe6WavZTSG+bB8MxhnL9YPf+pKQfuiP161q7ng== + dependencies: + "@babel/types" "^7.10.4" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.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== @@ -40,46 +88,69 @@ source-map "^0.5.0" trim-right "^1.0.1" -"@babel/helper-annotate-as-pure@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" - integrity sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q== +"@babel/helper-annotate-as-pure@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3" + integrity sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA== dependencies: - "@babel/types" "^7.0.0" + "@babel/types" "^7.10.4" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f" - integrity sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3" + integrity sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg== dependencies: - "@babel/helper-explode-assignable-expression" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/helper-explode-assignable-expression" "^7.10.4" + "@babel/types" "^7.10.4" -"@babel/helper-call-delegate@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz#87c1f8ca19ad552a736a7a27b1c1fcf8b1ff1f43" - integrity sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ== +"@babel/helper-compilation-targets@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz#804ae8e3f04376607cc791b9d47d540276332bd2" + integrity sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ== dependencies: - "@babel/helper-hoist-variables" "^7.4.4" - "@babel/traverse" "^7.4.4" - "@babel/types" "^7.4.4" + "@babel/compat-data" "^7.10.4" + browserslist "^4.12.0" + invariant "^2.2.4" + levenary "^1.1.1" + semver "^5.5.0" -"@babel/helper-define-map@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz#6969d1f570b46bdc900d1eba8e5d59c48ba2c12a" - integrity sha512-IX3Ln8gLhZpSuqHJSnTNBWGDE9kdkTEWl21A/K7PQ00tseBwbqCHTvNLHSBd9M0R5rER4h5Rsvj9vw0R5SieBg== +"@babel/helper-create-class-features-plugin@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.4.tgz#2d4015d0136bd314103a70d84a7183e4b344a355" + integrity sha512-9raUiOsXPxzzLjCXeosApJItoMnX3uyT4QdM2UldffuGApNrF8e938MwNpDCK9CPoyxrEoCgT+hObJc3mZa6lQ== dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/types" "^7.4.4" - lodash "^4.17.11" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-member-expression-to-functions" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" -"@babel/helper-explode-assignable-expression@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6" - integrity sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA== +"@babel/helper-create-regexp-features-plugin@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz#fdd60d88524659a0b6959c0579925e425714f3b8" + integrity sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g== dependencies: - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-regex" "^7.10.4" + regexpu-core "^4.7.0" + +"@babel/helper-define-map@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.4.tgz#f037ad794264f729eda1889f4ee210b870999092" + integrity sha512-nIij0oKErfCnLUCWaCaHW0Bmtl2RO9cN7+u2QT8yqTywgALKlyUVOvHDElh+b5DwVC6YB1FOYFOTWcN/+41EDA== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/types" "^7.10.4" + lodash "^4.17.13" + +"@babel/helper-explode-assignable-expression@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.4.tgz#40a1cd917bff1288f699a94a75b37a1a2dbd8c7c" + integrity sha512-4K71RyRQNPRrR85sr5QY4X3VwG4wtVoXZB9+L3r1Gp38DhELyHCtovqydRi7c1Ovb17eRGiQ/FD5s8JdU0Uy5A== + dependencies: + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" "@babel/helper-function-name@^7.1.0": version "7.1.0" @@ -90,6 +161,15 @@ "@babel/template" "^7.1.0" "@babel/types" "^7.0.0" +"@babel/helper-function-name@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" + integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== + dependencies: + "@babel/helper-get-function-arity" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" + "@babel/helper-get-function-arity@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" @@ -97,86 +177,113 @@ dependencies: "@babel/types" "^7.0.0" -"@babel/helper-hoist-variables@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz#0298b5f25c8c09c53102d52ac4a98f773eb2850a" - integrity sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w== +"@babel/helper-get-function-arity@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" + integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A== dependencies: - "@babel/types" "^7.4.4" + "@babel/types" "^7.10.4" -"@babel/helper-member-expression-to-functions@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f" - integrity sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg== +"@babel/helper-hoist-variables@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e" + integrity sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA== dependencies: - "@babel/types" "^7.0.0" + "@babel/types" "^7.10.4" -"@babel/helper-module-imports@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" - integrity sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A== +"@babel/helper-member-expression-to-functions@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.4.tgz#7cd04b57dfcf82fce9aeae7d4e4452fa31b8c7c4" + integrity sha512-m5j85pK/KZhuSdM/8cHUABQTAslV47OjfIB9Cc7P+PvlAoBzdb79BGNfw8RhT5Mq3p+xGd0ZfAKixbrUZx0C7A== dependencies: - "@babel/types" "^7.0.0" + "@babel/types" "^7.10.4" -"@babel/helper-module-transforms@^7.1.0", "@babel/helper-module-transforms@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz#96115ea42a2f139e619e98ed46df6019b94414b8" - integrity sha512-3Z1yp8TVQf+B4ynN7WoHPKS8EkdTbgAEy0nU0rs/1Kw4pDgmvYH3rz3aI11KgxKCba2cn7N+tqzV1mY2HMN96w== +"@babel/helper-module-imports@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" + integrity sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw== dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-simple-access" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.4.4" - "@babel/template" "^7.4.4" - "@babel/types" "^7.4.4" - lodash "^4.17.11" + "@babel/types" "^7.10.4" -"@babel/helper-optimise-call-expression@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" - integrity sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g== +"@babel/helper-module-transforms@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.10.4.tgz#ca1f01fdb84e48c24d7506bb818c961f1da8805d" + integrity sha512-Er2FQX0oa3nV7eM1o0tNCTx7izmQtwAQsIiaLRWtavAAEcskb0XJ5OjJbVrYXWOTr8om921Scabn4/tzlx7j1Q== dependencies: - "@babel/types" "^7.0.0" + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-simple-access" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" + lodash "^4.17.13" + +"@babel/helper-optimise-call-expression@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" + integrity sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg== + dependencies: + "@babel/types" "^7.10.4" "@babel/helper-plugin-utils@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== -"@babel/helper-regex@^7.0.0", "@babel/helper-regex@^7.4.4": +"@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" + integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== + +"@babel/helper-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.4.tgz#59b373daaf3458e5747dece71bbaf45f9676af6d" + integrity sha512-inWpnHGgtg5NOF0eyHlC0/74/VkdRITY9dtTpB2PrxKKn+AkVMRiZz/Adrx+Ssg+MLDesi2zohBW6MVq6b4pOQ== + dependencies: + lodash "^4.17.13" + +"@babel/helper-regex@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.4.4.tgz#a47e02bc91fb259d2e6727c2a30013e3ac13c4a2" integrity sha512-Y5nuB/kESmR3tKjU8Nkn1wMGEx1tjJX076HBMeL3XLQCu6vA/YRzuTW0bbb+qRnXvQGn+d6Rx953yffl8vEy7Q== dependencies: lodash "^4.17.11" -"@babel/helper-remap-async-to-generator@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f" - integrity sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg== +"@babel/helper-remap-async-to-generator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.4.tgz#fce8bea4e9690bbe923056ded21e54b4e8b68ed5" + integrity sha512-86Lsr6NNw3qTNl+TBcF1oRZMaVzJtbWTyTko+CQL/tvNvcGYEFKbLXDPxtW0HKk3McNOk4KzY55itGWCAGK5tg== dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-wrap-function" "^7.1.0" - "@babel/template" "^7.1.0" - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-wrap-function" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" -"@babel/helper-replace-supers@^7.1.0", "@babel/helper-replace-supers@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz#aee41783ebe4f2d3ab3ae775e1cc6f1a90cefa27" - integrity sha512-04xGEnd+s01nY1l15EuMS1rfKktNF+1CkKmHoErDppjAAZL+IUBZpzT748x262HF7fibaQPhbvWUl5HeSt1EXg== +"@babel/helper-replace-supers@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz#d585cd9388ea06e6031e4cd44b6713cbead9e6cf" + integrity sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A== dependencies: - "@babel/helper-member-expression-to-functions" "^7.0.0" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/traverse" "^7.4.4" - "@babel/types" "^7.4.4" + "@babel/helper-member-expression-to-functions" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" -"@babel/helper-simple-access@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c" - integrity sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w== +"@babel/helper-simple-access@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz#0f5ccda2945277a2a7a2d3a821e15395edcf3461" + integrity sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw== dependencies: - "@babel/template" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-split-export-declaration@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz#2c70576eaa3b5609b24cb99db2888cc3fc4251d1" + integrity sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg== + dependencies: + "@babel/types" "^7.10.4" "@babel/helper-split-export-declaration@^7.4.4": version "7.4.4" @@ -185,15 +292,29 @@ dependencies: "@babel/types" "^7.4.4" -"@babel/helper-wrap-function@^7.1.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa" - integrity sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ== +"@babel/helper-validator-identifier@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" + integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== + +"@babel/helper-wrap-function@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz#8a6f701eab0ff39f765b5a1cfef409990e624b87" + integrity sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug== dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/template" "^7.1.0" - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.2.0" + "@babel/helper-function-name" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helpers@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.4.tgz#2abeb0d721aff7c0a97376b9e1f6f65d7a475044" + integrity sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA== + dependencies: + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" "@babel/helpers@^7.4.4": version "7.4.4" @@ -213,43 +334,114 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.4.4", "@babel/parser@^7.4.5": +"@babel/highlight@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" + integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.4.4", "@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" - integrity sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ== +"@babel/parser@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.4.tgz#9eedf27e1998d87739fb5028a5120557c06a1a64" + integrity sha512-8jHII4hf+YVDsskTF6WuMB3X4Eh+PsUkC2ljq22so5rHvH+T8BzyL94VOdyFLNR8tBSVXOTbNHOKpR4TfRxVtA== + +"@babel/plugin-proposal-async-generator-functions@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.4.tgz#4b65abb3d9bacc6c657aaa413e56696f9f170fc6" + integrity sha512-MJbxGSmejEFVOANAezdO39SObkURO5o/8b6fSH6D1pi9RZQt+ldppKPXfqgUWpSQ9asM6xaSaSJIaeWMDRP0Zg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-remap-async-to-generator" "^7.1.0" - "@babel/plugin-syntax-async-generators" "^7.2.0" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.10.4" + "@babel/plugin-syntax-async-generators" "^7.8.0" -"@babel/plugin-proposal-json-strings@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317" - integrity sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg== +"@babel/plugin-proposal-class-properties@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz#a33bf632da390a59c7a8c570045d1115cd778807" + integrity sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-json-strings" "^7.2.0" + "@babel/helper-create-class-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.4.tgz#1ef173fcf24b3e2df92a678f027673b55e7e3005" - integrity sha512-dMBG6cSPBbHeEBdFXeQ2QLc5gUpg4Vkaz8octD4aoW/ISO+jBOcsuxYL7bsb5WSu8RLP6boxrBIALEHgoHtO9g== +"@babel/plugin-proposal-dynamic-import@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz#ba57a26cb98b37741e9d5bca1b8b0ddf8291f17e" + integrity sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" -"@babel/plugin-proposal-optional-catch-binding@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5" - integrity sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g== +"@babel/plugin-proposal-json-strings@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz#593e59c63528160233bd321b1aebe0820c2341db" + integrity sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.0" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz#02a7e961fc32e6d5b2db0649e01bf80ddee7e04a" + integrity sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz#ce1590ff0a65ad12970a609d78855e9a4c1aef06" + integrity sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.4.tgz#50129ac216b9a6a55b3853fdd923e74bf553a4c0" + integrity sha512-6vh4SqRuLLarjgeOf4EaROJAHjvu9Gl+/346PbDH9yWbJyfnJ/ah3jmYKYtswEyCoWZiidvVHjHshd4WgjB9BA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.10.4" + +"@babel/plugin-proposal-optional-catch-binding@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz#31c938309d24a78a49d68fdabffaa863758554dd" + integrity sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + +"@babel/plugin-proposal-optional-chaining@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.4.tgz#750f1255e930a1f82d8cdde45031f81a0d0adff7" + integrity sha512-ZIhQIEeavTgouyMSdZRap4VPPHqJJ3NEs2cuHs5p0erH+iz6khB0qfgU8g7UuJkG88+fBMy23ZiU+nuHvekJeQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + +"@babel/plugin-proposal-private-methods@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz#b160d972b8fdba5c7d111a145fc8c421fc2a6909" + integrity sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-proposal-unicode-property-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz#4483cda53041ce3413b7fe2f00022665ddfaa75d" + integrity sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.4.4" @@ -260,339 +452,454 @@ "@babel/helper-regex" "^7.4.4" regexpu-core "^4.5.4" -"@babel/plugin-syntax-async-generators@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f" - integrity sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg== +"@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-json-strings@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz#72bd13f6ffe1d25938129d2a186b11fd62951470" - integrity sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg== +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" - integrity sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA== +"@babel/plugin-syntax-class-properties@^7.10.4", "@babel/plugin-syntax-class-properties@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz#6644e6a0baa55a61f9e3231f6c9eeb6ee46c124c" + integrity sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-optional-catch-binding@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c" - integrity sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w== +"@babel/plugin-syntax-dynamic-import@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-transform-arrow-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550" - integrity sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg== +"@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-async-to-generator@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.4.tgz#a3f1d01f2f21cadab20b33a82133116f14fb5894" - integrity sha512-YiqW2Li8TXmzgbXw+STsSqPBPFnGviiaSp6CYOq55X8GQ2SGVLrXB6pNid8HkqkZAzOH6knbai3snhP7v0fNwA== +"@babel/plugin-syntax-json-strings@^7.8.0", "@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-remap-async-to-generator" "^7.1.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-transform-block-scoped-functions@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190" - integrity sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w== +"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-block-scoping@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz#c13279fabf6b916661531841a23c4b7dae29646d" - integrity sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA== +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - lodash "^4.17.11" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-transform-classes@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.4.tgz#0ce4094cdafd709721076d3b9c38ad31ca715eb6" - integrity sha512-/e44eFLImEGIpL9qPxSRat13I5QNRgBLu2hOQJCF7VLy/otSM/sypV1+XaIw5+502RX/+6YaSAPmldk+nhHDPw== +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-define-map" "^7.4.4" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-optimise-call-expression" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.4.4" - "@babel/helper-split-export-declaration" "^7.4.4" - globals "^11.1.0" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-computed-properties@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da" - integrity sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA== +"@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-transform-destructuring@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.4.tgz#9d964717829cc9e4b601fc82a26a71a4d8faf20f" - integrity sha512-/aOx+nW0w8eHiEHm+BTERB2oJn5D127iye/SUQl7NjHy0lf+j7h4MKMMSOwdazGq9OxgiNADncE+SRJkCxjZpQ== +"@babel/plugin-syntax-optional-catch-binding@^7.8.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz#361a148bc951444312c69446d76ed1ea8e4450c3" - integrity sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg== +"@babel/plugin-syntax-optional-chaining@^7.8.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.5.4" + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-transform-duplicate-keys@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz#d952c4930f312a4dbfff18f0b2914e60c35530b3" - integrity sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw== +"@babel/plugin-syntax-top-level-await@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz#4bbeb8917b54fcf768364e0a81f560e33a3ef57d" + integrity sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-exponentiation-operator@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008" - integrity sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A== +"@babel/plugin-transform-arrow-functions@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz#e22960d77e697c74f41c501d44d73dbf8a6a64cd" + integrity sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-for-of@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz#0267fc735e24c808ba173866c6c4d1440fc3c556" - integrity sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ== +"@babel/plugin-transform-async-to-generator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz#41a5017e49eb6f3cda9392a51eef29405b245a37" + integrity sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.10.4" -"@babel/plugin-transform-function-name@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz#e1436116abb0610c2259094848754ac5230922ad" - integrity sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA== +"@babel/plugin-transform-block-scoped-functions@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz#1afa595744f75e43a91af73b0d998ecfe4ebc2e8" + integrity sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA== dependencies: - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1" - integrity sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg== +"@babel/plugin-transform-block-scoping@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.4.tgz#a670d1364bb5019a621b9ea2001482876d734787" + integrity sha512-J3b5CluMg3hPUii2onJDRiaVbPtKFPLEaV5dOPY5OeAbDi1iU/UbbFFTgwb7WnanaDy7bjU35kc26W3eM5Qa0A== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.10.4" + lodash "^4.17.13" -"@babel/plugin-transform-member-expression-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz#fa10aa5c58a2cb6afcf2c9ffa8cb4d8b3d489a2d" - integrity sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA== +"@babel/plugin-transform-classes@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz#405136af2b3e218bc4a1926228bc917ab1a0adc7" + integrity sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-define-map" "^7.10.4" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + globals "^11.1.0" -"@babel/plugin-transform-modules-amd@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz#82a9bce45b95441f617a24011dc89d12da7f4ee6" - integrity sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw== +"@babel/plugin-transform-computed-properties@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz#9ded83a816e82ded28d52d4b4ecbdd810cdfc0eb" + integrity sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw== dependencies: - "@babel/helper-module-transforms" "^7.1.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-modules-commonjs@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.4.tgz#0bef4713d30f1d78c2e59b3d6db40e60192cac1e" - integrity sha512-4sfBOJt58sEo9a2BQXnZq+Q3ZTSAUXyK3E30o36BOGnJ+tvJ6YSxF0PG6kERvbeISgProodWuI9UVG3/FMY6iw== +"@babel/plugin-transform-destructuring@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz#70ddd2b3d1bea83d01509e9bb25ddb3a74fc85e5" + integrity sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA== dependencies: - "@babel/helper-module-transforms" "^7.4.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-simple-access" "^7.1.0" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-modules-systemjs@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.4.tgz#dc83c5665b07d6c2a7b224c00ac63659ea36a405" - integrity sha512-MSiModfILQc3/oqnG7NrP1jHaSPryO6tA2kOMmAQApz5dayPxWiHqmq4sWH2xF5LcQK56LlbKByCd8Aah/OIkQ== +"@babel/plugin-transform-dotall-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz#469c2062105c1eb6a040eaf4fac4b488078395ee" + integrity sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA== dependencies: - "@babel/helper-hoist-variables" "^7.4.4" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-modules-umd@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz#7678ce75169f0877b8eb2235538c074268dd01ae" - integrity sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw== +"@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz#361a148bc951444312c69446d76ed1ea8e4450c3" + integrity sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg== dependencies: - "@babel/helper-module-transforms" "^7.1.0" "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.4.4" + regexpu-core "^4.5.4" -"@babel/plugin-transform-named-capturing-groups-regex@^7.4.5": - version "7.4.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz#9d269fd28a370258199b4294736813a60bbdd106" - integrity sha512-z7+2IsWafTBbjNsOxU/Iv5CvTJlr5w4+HGu1HovKYTtgJ362f7kBcQglkfmlspKKZ3bgrbSGvLfNx++ZJgCWsg== +"@babel/plugin-transform-duplicate-keys@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz#697e50c9fee14380fe843d1f306b295617431e47" + integrity sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA== dependencies: - regexp-tree "^0.1.6" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-new-target@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz#18d120438b0cc9ee95a47f2c72bc9768fbed60a5" - integrity sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA== +"@babel/plugin-transform-exponentiation-operator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz#5ae338c57f8cf4001bdb35607ae66b92d665af2e" + integrity sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-object-super@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz#b35d4c10f56bab5d650047dad0f1d8e8814b6598" - integrity sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg== +"@babel/plugin-transform-for-of@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz#c08892e8819d3a5db29031b115af511dbbfebae9" + integrity sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.1.0" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-parameters@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz#7556cf03f318bd2719fe4c922d2d808be5571e16" - integrity sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw== +"@babel/plugin-transform-function-name@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz#6a467880e0fc9638514ba369111811ddbe2644b7" + integrity sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg== dependencies: - "@babel/helper-call-delegate" "^7.4.4" - "@babel/helper-get-function-arity" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-property-literals@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz#03e33f653f5b25c4eb572c98b9485055b389e905" - integrity sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ== +"@babel/plugin-transform-literals@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz#9f42ba0841100a135f22712d0e391c462f571f3c" + integrity sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-regenerator@^7.4.5": - version "7.4.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz#629dc82512c55cee01341fb27bdfcb210354680f" - integrity sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA== +"@babel/plugin-transform-member-expression-literals@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz#b1ec44fcf195afcb8db2c62cd8e551c881baf8b7" + integrity sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw== dependencies: - regenerator-transform "^0.14.0" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-reserved-words@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz#4792af87c998a49367597d07fedf02636d2e1634" - integrity sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw== +"@babel/plugin-transform-modules-amd@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.4.tgz#cb407c68b862e4c1d13a2fc738c7ec5ed75fc520" + integrity sha512-3Fw+H3WLUrTlzi3zMiZWp3AR4xadAEMv6XRCYnd5jAlLM61Rn+CRJaZMaNvIpcJpQ3vs1kyifYvEVPFfoSkKOA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-shorthand-properties@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0" - integrity sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg== +"@babel/plugin-transform-modules-commonjs@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz#66667c3eeda1ebf7896d41f1f16b17105a2fbca0" + integrity sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-simple-access" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-spread@^7.2.0": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz#3103a9abe22f742b6d406ecd3cd49b774919b406" - integrity sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w== +"@babel/plugin-transform-modules-systemjs@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.4.tgz#8f576afd943ac2f789b35ded0a6312f929c633f9" + integrity sha512-Tb28LlfxrTiOTGtZFsvkjpyjCl9IoaRI52AEU/VIwOwvDQWtbNJsAqTXzh+5R7i74e/OZHH2c2w2fsOqAfnQYQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-hoist-variables" "^7.10.4" + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-sticky-regex@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1" - integrity sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw== +"@babel/plugin-transform-modules-umd@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz#9a8481fe81b824654b3a0b65da3df89f3d21839e" + integrity sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.0.0" + "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-template-literals@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz#9d28fea7bbce637fb7612a0750989d8321d4bcb0" - integrity sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g== +"@babel/plugin-transform-named-capturing-groups-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz#78b4d978810b6f3bcf03f9e318f2fc0ed41aecb6" + integrity sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA== dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-create-regexp-features-plugin" "^7.10.4" -"@babel/plugin-transform-typeof-symbol@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz#117d2bcec2fbf64b4b59d1f9819894682d29f2b2" - integrity sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw== +"@babel/plugin-transform-new-target@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz#9097d753cb7b024cb7381a3b2e52e9513a9c6888" + integrity sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-unicode-regex@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz#ab4634bb4f14d36728bf5978322b35587787970f" - integrity sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA== +"@babel/plugin-transform-object-super@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz#d7146c4d139433e7a6526f888c667e314a093894" + integrity sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.5.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.10.4" + +"@babel/plugin-transform-parameters@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.4.tgz#7b4d137c87ea7adc2a0f3ebf53266871daa6fced" + integrity sha512-RurVtZ/D5nYfEg0iVERXYKEgDFeesHrHfx8RT05Sq57ucj2eOYAP6eu5fynL4Adju4I/mP/I6SO0DqNWAXjfLQ== + dependencies: + "@babel/helper-get-function-arity" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-property-literals@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz#f6fe54b6590352298785b83edd815d214c42e3c0" + integrity sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-regenerator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz#2015e59d839074e76838de2159db421966fd8b63" + integrity sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz#8f2682bcdcef9ed327e1b0861585d7013f8a54dd" + integrity sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-shorthand-properties@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz#9fd25ec5cdd555bb7f473e5e6ee1c971eede4dd6" + integrity sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-spread@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.4.tgz#4e2c85ea0d6abaee1b24dcfbbae426fe8d674cff" + integrity sha512-1e/51G/Ni+7uH5gktbWv+eCED9pP8ZpRhZB3jOaI3mmzfvJTWHkuyYTv0Z5PYtyM+Tr2Ccr9kUdQxn60fI5WuQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-sticky-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz#8f3889ee8657581130a29d9cc91d7c73b7c4a28d" + integrity sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-regex" "^7.10.4" + +"@babel/plugin-transform-template-literals@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.4.tgz#e6375407b30fcb7fcfdbba3bb98ef3e9d36df7bc" + integrity sha512-4NErciJkAYe+xI5cqfS8pV/0ntlY5N5Ske/4ImxAVX7mk9Rxt2bwDTGv1Msc2BRJvWQcmYEC+yoMLdX22aE4VQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-typeof-symbol@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz#9509f1a7eec31c4edbffe137c16cc33ff0bc5bfc" + integrity sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-unicode-escapes@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz#feae523391c7651ddac115dae0a9d06857892007" + integrity sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-unicode-regex@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz#e56d71f9282fac6db09c82742055576d5e6d80a8" + integrity sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/preset-env@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.10.4.tgz#fbf57f9a803afd97f4f32e4f798bb62e4b2bef5f" + integrity sha512-tcmuQ6vupfMZPrLrc38d0sF2OjLT3/bZ0dry5HchNCQbrokoQi4reXqclvkkAT5b+gWc23meVWpve5P/7+w/zw== + dependencies: + "@babel/compat-data" "^7.10.4" + "@babel/helper-compilation-targets" "^7.10.4" + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-proposal-async-generator-functions" "^7.10.4" + "@babel/plugin-proposal-class-properties" "^7.10.4" + "@babel/plugin-proposal-dynamic-import" "^7.10.4" + "@babel/plugin-proposal-json-strings" "^7.10.4" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.4" + "@babel/plugin-proposal-numeric-separator" "^7.10.4" + "@babel/plugin-proposal-object-rest-spread" "^7.10.4" + "@babel/plugin-proposal-optional-catch-binding" "^7.10.4" + "@babel/plugin-proposal-optional-chaining" "^7.10.4" + "@babel/plugin-proposal-private-methods" "^7.10.4" + "@babel/plugin-proposal-unicode-property-regex" "^7.10.4" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-class-properties" "^7.10.4" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.10.4" + "@babel/plugin-transform-arrow-functions" "^7.10.4" + "@babel/plugin-transform-async-to-generator" "^7.10.4" + "@babel/plugin-transform-block-scoped-functions" "^7.10.4" + "@babel/plugin-transform-block-scoping" "^7.10.4" + "@babel/plugin-transform-classes" "^7.10.4" + "@babel/plugin-transform-computed-properties" "^7.10.4" + "@babel/plugin-transform-destructuring" "^7.10.4" + "@babel/plugin-transform-dotall-regex" "^7.10.4" + "@babel/plugin-transform-duplicate-keys" "^7.10.4" + "@babel/plugin-transform-exponentiation-operator" "^7.10.4" + "@babel/plugin-transform-for-of" "^7.10.4" + "@babel/plugin-transform-function-name" "^7.10.4" + "@babel/plugin-transform-literals" "^7.10.4" + "@babel/plugin-transform-member-expression-literals" "^7.10.4" + "@babel/plugin-transform-modules-amd" "^7.10.4" + "@babel/plugin-transform-modules-commonjs" "^7.10.4" + "@babel/plugin-transform-modules-systemjs" "^7.10.4" + "@babel/plugin-transform-modules-umd" "^7.10.4" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.10.4" + "@babel/plugin-transform-new-target" "^7.10.4" + "@babel/plugin-transform-object-super" "^7.10.4" + "@babel/plugin-transform-parameters" "^7.10.4" + "@babel/plugin-transform-property-literals" "^7.10.4" + "@babel/plugin-transform-regenerator" "^7.10.4" + "@babel/plugin-transform-reserved-words" "^7.10.4" + "@babel/plugin-transform-shorthand-properties" "^7.10.4" + "@babel/plugin-transform-spread" "^7.10.4" + "@babel/plugin-transform-sticky-regex" "^7.10.4" + "@babel/plugin-transform-template-literals" "^7.10.4" + "@babel/plugin-transform-typeof-symbol" "^7.10.4" + "@babel/plugin-transform-unicode-escapes" "^7.10.4" + "@babel/plugin-transform-unicode-regex" "^7.10.4" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.10.4" + browserslist "^4.12.0" + core-js-compat "^3.6.2" + invariant "^2.2.2" + levenary "^1.1.1" + semver "^5.5.0" -"@babel/preset-env@^7.4.5": - version "7.4.5" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.4.5.tgz#2fad7f62983d5af563b5f3139242755884998a58" - integrity sha512-f2yNVXM+FsR5V8UwcFeIHzHWgnhXg3NpRmy0ADvALpnhB0SLbCvrCRr4BLOUYbQNLS+Z0Yer46x9dJXpXewI7w== +"@babel/preset-modules@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.3.tgz#13242b53b5ef8c883c3cf7dddd55b36ce80fbc72" + integrity sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== dependencies: - "@babel/helper-module-imports" "^7.0.0" "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-async-generator-functions" "^7.2.0" - "@babel/plugin-proposal-json-strings" "^7.2.0" - "@babel/plugin-proposal-object-rest-spread" "^7.4.4" - "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-syntax-async-generators" "^7.2.0" - "@babel/plugin-syntax-json-strings" "^7.2.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" - "@babel/plugin-transform-arrow-functions" "^7.2.0" - "@babel/plugin-transform-async-to-generator" "^7.4.4" - "@babel/plugin-transform-block-scoped-functions" "^7.2.0" - "@babel/plugin-transform-block-scoping" "^7.4.4" - "@babel/plugin-transform-classes" "^7.4.4" - "@babel/plugin-transform-computed-properties" "^7.2.0" - "@babel/plugin-transform-destructuring" "^7.4.4" "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/plugin-transform-duplicate-keys" "^7.2.0" - "@babel/plugin-transform-exponentiation-operator" "^7.2.0" - "@babel/plugin-transform-for-of" "^7.4.4" - "@babel/plugin-transform-function-name" "^7.4.4" - "@babel/plugin-transform-literals" "^7.2.0" - "@babel/plugin-transform-member-expression-literals" "^7.2.0" - "@babel/plugin-transform-modules-amd" "^7.2.0" - "@babel/plugin-transform-modules-commonjs" "^7.4.4" - "@babel/plugin-transform-modules-systemjs" "^7.4.4" - "@babel/plugin-transform-modules-umd" "^7.2.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.4.5" - "@babel/plugin-transform-new-target" "^7.4.4" - "@babel/plugin-transform-object-super" "^7.2.0" - "@babel/plugin-transform-parameters" "^7.4.4" - "@babel/plugin-transform-property-literals" "^7.2.0" - "@babel/plugin-transform-regenerator" "^7.4.5" - "@babel/plugin-transform-reserved-words" "^7.2.0" - "@babel/plugin-transform-shorthand-properties" "^7.2.0" - "@babel/plugin-transform-spread" "^7.2.0" - "@babel/plugin-transform-sticky-regex" "^7.2.0" - "@babel/plugin-transform-template-literals" "^7.4.4" - "@babel/plugin-transform-typeof-symbol" "^7.2.0" - "@babel/plugin-transform-unicode-regex" "^7.4.4" "@babel/types" "^7.4.4" - browserslist "^4.6.0" - core-js-compat "^3.1.1" - invariant "^2.2.2" - js-levenshtein "^1.1.3" - semver "^5.5.0" + esutils "^2.0.2" -"@babel/runtime@^7.0.0": - version "7.4.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.5.tgz#582bb531f5f9dc67d2fcb682979894f75e253f12" - integrity sha512-TuI4qpWZP6lGOGIuGWtp9sPluqYICmbk8T/1vpSysqJxRPkudh/ofFWyqdcMsDf2s7KvDL4/YHgKyvcS3g9CJQ== +"@babel/runtime-corejs3@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.10.4.tgz#f29fc1990307c4c57b10dbd6ce667b27159d9e0d" + integrity sha512-BFlgP2SoLO9HJX9WBwN67gHWMBhDX/eDz64Jajd6mR/UAUzqrNMm99d4qHnVaKscAElZoFiPv+JpR/Siud5lXw== dependencies: - regenerator-runtime "^0.13.2" + core-js-pure "^3.0.0" + regenerator-runtime "^0.13.4" -"@babel/template@^7.1.0", "@babel/template@^7.4.0", "@babel/template@^7.4.4": +"@babel/runtime@^7.8.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.4.tgz#a6724f1a6b8d2f6ea5236dbfe58c7d7ea9c5eb99" + integrity sha512-UpTN5yUJr9b4EX2CnGNWIvER7Ab83ibv0pcvvHc4UOdrBI5jb8bj+32cCwPX6xu0mt2daFNjYhoi+X7beH0RSw== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.1.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== @@ -601,7 +908,16 @@ "@babel/parser" "^7.4.4" "@babel/types" "^7.4.4" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.4", "@babel/traverse@^7.4.5": +"@babel/template@^7.10.4", "@babel/template@^7.3.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" + integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/parser" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/traverse@^7.1.0", "@babel/traverse@^7.4.4", "@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== @@ -616,7 +932,22 @@ globals "^11.1.0" lodash "^4.17.11" -"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4": +"@babel/traverse@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.4.tgz#e642e5395a3b09cc95c8e74a27432b484b697818" + integrity sha512-aSy7p5THgSYm4YyxNGz6jZpXf+Ok40QF3aA2LyIONkDHpAcJzDUqlCKXv6peqYUs2gmic849C/t2HKw2a2K20Q== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.10.4" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.10.4" + "@babel/parser" "^7.10.4" + "@babel/types" "^7.10.4" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + +"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.3.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== @@ -625,6 +956,20 @@ lodash "^4.17.11" to-fast-properties "^2.0.0" +"@babel/types@^7.10.4", "@babel/types@^7.3.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.4.tgz#369517188352e18219981efd156bfdb199fff1ee" + integrity sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + "@cnakazawa/watch@^1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.3.tgz#099139eaec7ebf07a27c1786a3ff64f39464d2ef" @@ -633,163 +978,211 @@ exec-sh "^0.3.2" minimist "^1.2.0" -"@jest/console@^24.7.1": - version "24.7.1" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.7.1.tgz#32a9e42535a97aedfe037e725bd67e954b459545" - integrity sha512-iNhtIy2M8bXlAOULWVTUxmnelTLFneTNEkHCgPmgd+zNwy9zVddJ6oS5rZ9iwoscNdT5mMwUd0C51v/fSlzItg== - dependencies: - "@jest/source-map" "^24.3.0" - chalk "^2.0.1" - slash "^2.0.0" - -"@jest/core@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.8.0.tgz#fbbdcd42a41d0d39cddbc9f520c8bab0c33eed5b" - integrity sha512-R9rhAJwCBQzaRnrRgAdVfnglUuATXdwTRsYqs6NMdVcAl5euG8LtWDe+fVkN27YfKVBW61IojVsXKaOmSnqd/A== - dependencies: - "@jest/console" "^24.7.1" - "@jest/reporters" "^24.8.0" - "@jest/test-result" "^24.8.0" - "@jest/transform" "^24.8.0" - "@jest/types" "^24.8.0" - ansi-escapes "^3.0.0" - chalk "^2.0.1" - exit "^0.1.2" - graceful-fs "^4.1.15" - jest-changed-files "^24.8.0" - jest-config "^24.8.0" - jest-haste-map "^24.8.0" - jest-message-util "^24.8.0" - jest-regex-util "^24.3.0" - jest-resolve-dependencies "^24.8.0" - jest-runner "^24.8.0" - jest-runtime "^24.8.0" - jest-snapshot "^24.8.0" - jest-util "^24.8.0" - jest-validate "^24.8.0" - jest-watcher "^24.8.0" - micromatch "^3.1.10" - p-each-series "^1.0.0" - pirates "^4.0.1" - realpath-native "^1.1.0" - rimraf "^2.5.4" - strip-ansi "^5.0.0" +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" -"@jest/environment@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.8.0.tgz#0342261383c776bdd652168f68065ef144af0eac" - integrity sha512-vlGt2HLg7qM+vtBrSkjDxk9K0YtRBi7HfRFaDxoRtyi+DyVChzhF20duvpdAnKVBV6W5tym8jm0U9EfXbDk1tw== - dependencies: - "@jest/fake-timers" "^24.8.0" - "@jest/transform" "^24.8.0" - "@jest/types" "^24.8.0" - jest-mock "^24.8.0" - -"@jest/fake-timers@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.8.0.tgz#2e5b80a4f78f284bcb4bd5714b8e10dd36a8d3d1" - integrity sha512-2M4d5MufVXwi6VzZhJ9f5S/wU4ud2ck0kxPof1Iz3zWx6Y+V2eJrES9jEktB6O3o/oEyk+il/uNu9PvASjWXQw== - dependencies: - "@jest/types" "^24.8.0" - jest-message-util "^24.8.0" - jest-mock "^24.8.0" - -"@jest/reporters@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.8.0.tgz#075169cd029bddec54b8f2c0fc489fd0b9e05729" - integrity sha512-eZ9TyUYpyIIXfYCrw0UHUWUvE35vx5I92HGMgS93Pv7du+GHIzl+/vh8Qj9MCWFK/4TqyttVBPakWMOfZRIfxw== - dependencies: - "@jest/environment" "^24.8.0" - "@jest/test-result" "^24.8.0" - "@jest/transform" "^24.8.0" - "@jest/types" "^24.8.0" - chalk "^2.0.1" +"@istanbuljs/schema@^0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" + integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== + +"@jest/console@^26.1.0": + version "26.1.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.1.0.tgz#f67c89e4f4d04dbcf7b052aed5ab9c74f915b954" + integrity sha512-+0lpTHMd/8pJp+Nd4lyip+/Iyf2dZJvcCqrlkeZQoQid+JlThA4M9vxHtheyrQ99jJTMQam+es4BcvZ5W5cC3A== + dependencies: + "@jest/types" "^26.1.0" + chalk "^4.0.0" + jest-message-util "^26.1.0" + jest-util "^26.1.0" + slash "^3.0.0" + +"@jest/core@^26.1.0": + version "26.1.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.1.0.tgz#4580555b522de412a7998b3938c851e4f9da1c18" + integrity sha512-zyizYmDJOOVke4OO/De//aiv8b07OwZzL2cfsvWF3q9YssfpcKfcnZAwDY8f+A76xXSMMYe8i/f/LPocLlByfw== + dependencies: + "@jest/console" "^26.1.0" + "@jest/reporters" "^26.1.0" + "@jest/test-result" "^26.1.0" + "@jest/transform" "^26.1.0" + "@jest/types" "^26.1.0" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.4" + jest-changed-files "^26.1.0" + jest-config "^26.1.0" + jest-haste-map "^26.1.0" + jest-message-util "^26.1.0" + jest-regex-util "^26.0.0" + jest-resolve "^26.1.0" + jest-resolve-dependencies "^26.1.0" + jest-runner "^26.1.0" + jest-runtime "^26.1.0" + jest-snapshot "^26.1.0" + jest-util "^26.1.0" + jest-validate "^26.1.0" + jest-watcher "^26.1.0" + micromatch "^4.0.2" + p-each-series "^2.1.0" + rimraf "^3.0.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^26.1.0": + version "26.1.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.1.0.tgz#378853bcdd1c2443b4555ab908cfbabb851e96da" + integrity sha512-86+DNcGongbX7ai/KE/S3/NcUVZfrwvFzOOWX/W+OOTvTds7j07LtC+MgGydH5c8Ri3uIrvdmVgd1xFD5zt/xA== + dependencies: + "@jest/fake-timers" "^26.1.0" + "@jest/types" "^26.1.0" + jest-mock "^26.1.0" + +"@jest/fake-timers@^26.1.0": + version "26.1.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.1.0.tgz#9a76b7a94c351cdbc0ad53e5a748789f819a65fe" + integrity sha512-Y5F3kBVWxhau3TJ825iuWy++BAuQzK/xEa+wD9vDH3RytW9f2DbMVodfUQC54rZDX3POqdxCgcKdgcOL0rYUpA== + dependencies: + "@jest/types" "^26.1.0" + "@sinonjs/fake-timers" "^6.0.1" + jest-message-util "^26.1.0" + jest-mock "^26.1.0" + jest-util "^26.1.0" + +"@jest/globals@^26.1.0": + version "26.1.0" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.1.0.tgz#6cc5d7cbb79b76b120f2403d7d755693cf063ab1" + integrity sha512-MKiHPNaT+ZoG85oMaYUmGHEqu98y3WO2yeIDJrs2sJqHhYOy3Z6F7F/luzFomRQ8SQ1wEkmahFAz2291Iv8EAw== + dependencies: + "@jest/environment" "^26.1.0" + "@jest/types" "^26.1.0" + expect "^26.1.0" + +"@jest/reporters@^26.1.0": + version "26.1.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.1.0.tgz#08952e90c90282e14ff49e927bdf1873617dae78" + integrity sha512-SVAysur9FOIojJbF4wLP0TybmqwDkdnFxHSPzHMMIYyBtldCW9gG+Q5xWjpMFyErDiwlRuPyMSJSU64A67Pazg== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^26.1.0" + "@jest/test-result" "^26.1.0" + "@jest/transform" "^26.1.0" + "@jest/types" "^26.1.0" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.2" - istanbul-lib-coverage "^2.0.2" - istanbul-lib-instrument "^3.0.1" - istanbul-lib-report "^2.0.4" - istanbul-lib-source-maps "^3.0.1" - istanbul-reports "^2.1.1" - jest-haste-map "^24.8.0" - jest-resolve "^24.8.0" - jest-runtime "^24.8.0" - jest-util "^24.8.0" - jest-worker "^24.6.0" - node-notifier "^5.2.1" - slash "^2.0.0" + graceful-fs "^4.2.4" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^4.0.3" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.0.2" + jest-haste-map "^26.1.0" + jest-resolve "^26.1.0" + jest-util "^26.1.0" + jest-worker "^26.1.0" + slash "^3.0.0" source-map "^0.6.0" - string-length "^2.0.0" + string-length "^4.0.1" + terminal-link "^2.0.0" + v8-to-istanbul "^4.1.3" + optionalDependencies: + node-notifier "^7.0.0" -"@jest/source-map@^24.3.0": - version "24.3.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.3.0.tgz#563be3aa4d224caf65ff77edc95cd1ca4da67f28" - integrity sha512-zALZt1t2ou8le/crCeeiRYzvdnTzaIlpOWaet45lNSqNJUnXbppUUFR4ZUAlzgDmKee4Q5P/tKXypI1RiHwgag== +"@jest/source-map@^26.1.0": + version "26.1.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.1.0.tgz#a6a020d00e7d9478f4b690167c5e8b77e63adb26" + integrity sha512-XYRPYx4eEVX15cMT9mstnO7hkHP3krNtKfxUYd8L7gbtia8JvZZ6bMzSwa6IQJENbudTwKMw5R1BePRD+bkEmA== dependencies: callsites "^3.0.0" - graceful-fs "^4.1.15" + graceful-fs "^4.2.4" source-map "^0.6.0" -"@jest/test-result@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.8.0.tgz#7675d0aaf9d2484caa65e048d9b467d160f8e9d3" - integrity sha512-+YdLlxwizlfqkFDh7Mc7ONPQAhA4YylU1s529vVM1rsf67vGZH/2GGm5uO8QzPeVyaVMobCQ7FTxl38QrKRlng== +"@jest/test-result@^26.1.0": + version "26.1.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.1.0.tgz#a93fa15b21ad3c7ceb21c2b4c35be2e407d8e971" + integrity sha512-Xz44mhXph93EYMA8aYDz+75mFbarTV/d/x0yMdI3tfSRs/vh4CqSxgzVmCps1fPkHDCtn0tU8IH9iCKgGeGpfw== dependencies: - "@jest/console" "^24.7.1" - "@jest/types" "^24.8.0" + "@jest/console" "^26.1.0" + "@jest/types" "^26.1.0" "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.8.0.tgz#2f993bcf6ef5eb4e65e8233a95a3320248cf994b" - integrity sha512-OzL/2yHyPdCHXEzhoBuq37CE99nkme15eHkAzXRVqthreWZamEMA0WoetwstsQBCXABhczpK03JNbc4L01vvLg== +"@jest/test-sequencer@^26.1.0": + version "26.1.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.1.0.tgz#41a6fc8b850c3f33f48288ea9ea517c047e7f14e" + integrity sha512-Z/hcK+rTq56E6sBwMoQhSRDVjqrGtj1y14e2bIgcowARaIE1SgOanwx6gvY4Q9gTKMoZQXbXvptji+q5GYxa6Q== dependencies: - "@jest/test-result" "^24.8.0" - jest-haste-map "^24.8.0" - jest-runner "^24.8.0" - jest-runtime "^24.8.0" + "@jest/test-result" "^26.1.0" + graceful-fs "^4.2.4" + jest-haste-map "^26.1.0" + jest-runner "^26.1.0" + jest-runtime "^26.1.0" -"@jest/transform@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.8.0.tgz#628fb99dce4f9d254c6fd9341e3eea262e06fef5" - integrity sha512-xBMfFUP7TortCs0O+Xtez2W7Zu1PLH9bvJgtraN1CDST6LBM/eTOZ9SfwS/lvV8yOfcDpFmwf9bq5cYbXvqsvA== +"@jest/transform@^26.1.0": + version "26.1.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.1.0.tgz#697f48898c2a2787c9b4cb71d09d7e617464e509" + integrity sha512-ICPm6sUXmZJieq45ix28k0s+d/z2E8CHDsq+WwtWI6kW8m7I8kPqarSEcUN86entHQ570ZBRci5OWaKL0wlAWw== dependencies: "@babel/core" "^7.1.0" - "@jest/types" "^24.8.0" - babel-plugin-istanbul "^5.1.0" - chalk "^2.0.1" + "@jest/types" "^26.1.0" + babel-plugin-istanbul "^6.0.0" + chalk "^4.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.1.15" - jest-haste-map "^24.8.0" - jest-regex-util "^24.3.0" - jest-util "^24.8.0" - micromatch "^3.1.10" - realpath-native "^1.1.0" - slash "^2.0.0" + graceful-fs "^4.2.4" + jest-haste-map "^26.1.0" + jest-regex-util "^26.0.0" + jest-util "^26.1.0" + micromatch "^4.0.2" + pirates "^4.0.1" + slash "^3.0.0" source-map "^0.6.1" - write-file-atomic "2.4.1" + write-file-atomic "^3.0.0" -"@jest/types@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.8.0.tgz#f31e25948c58f0abd8c845ae26fcea1491dea7ad" - integrity sha512-g17UxVr2YfBtaMUxn9u/4+siG1ptg9IGYAYwvpwn61nBg779RXnjE/m7CxYcIzEt0AbHZZAHSEZNhkE2WxURVg== +"@jest/types@^26.1.0": + version "26.1.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.1.0.tgz#f8afaaaeeb23b5cad49dd1f7779689941dcb6057" + integrity sha512-GXigDDsp6ZlNMhXQDeuy/iYCDsRIHJabWtDzvnn36+aqFfG14JmFV0e/iXxY4SP9vbXSiPNOWdehU5MeqrYHBQ== dependencies: "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^12.0.9" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" -"@samverschueren/stream-to-observable@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f" - integrity sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg== +"@sinonjs/commons@^1.7.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.0.tgz#c8d68821a854c555bba172f3b06959a0039b236d" + integrity sha512-wEj54PfsZ5jGSwMX68G8ZXFawcSglQSXqCftWX3ec8MDUzQdHgcKvw97awHbY0efQEL5iKUOAmmVtoYgmrSG4Q== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" + integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== dependencies: - any-observable "^0.3.0" + "@sinonjs/commons" "^1.7.0" + +"@types/anymatch@*": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" + integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA== -"@types/babel__core@^7.1.0": - version "7.1.2" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.2.tgz#608c74f55928033fce18b99b213c16be4b3d114f" - integrity sha512-cfCCrFmiGY/yq0NuKNxIQvZFy9kY/1immpSpTngOnyIbD4+eJOG5mxphhHDv3CHL9GltO4GcKr54kGBg3RNdbg== +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": + version "7.1.9" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.9.tgz#77e59d438522a6fb898fa43dc3455c6e72f3963d" + integrity sha512-sY2RsIJ5rpER1u3/aQ8OFSI7qGIy8o1NEEbgb2UaJcvOtXOMpd39ko723NBpjQFg9SIX7TXtjejZVGeIMLhoOw== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" @@ -819,6 +1212,11 @@ dependencies: "@babel/types" "^7.3.0" +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + "@types/events@*": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" @@ -833,11 +1231,23 @@ "@types/minimatch" "*" "@types/node" "*" +"@types/graceful-fs@^4.1.2": + version "4.1.3" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.3.tgz#039af35fe26bec35003e8d86d2ee9c586354348f" + integrity sha512-AiHRaEB50LQg0pZmm659vNBb9f4SJ0qrAnteuzhSeAUcJKxoYgEnprg/83kppCnc2zvtCKbdZry1a5pVY3lOTQ== + dependencies: + "@types/node" "*" + "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": version "2.0.1" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== +"@types/istanbul-lib-coverage@^2.0.1": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" + integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== + "@types/istanbul-lib-report@*": version "1.1.1" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#e5471e7fa33c61358dd38426189c037a58433b8c" @@ -853,6 +1263,11 @@ "@types/istanbul-lib-coverage" "*" "@types/istanbul-lib-report" "*" +"@types/json-schema@^7.0.4": + version "7.0.5" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd" + integrity sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ== + "@types/minimatch@*": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" @@ -868,75 +1283,281 @@ resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/prettier@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.0.1.tgz#b6e98083f13faa1e5231bfa3bdb1b0feff536b6d" + integrity sha512-boy4xPNEtiw6N3abRhBi/e7hNvy3Tt8E9ZRAQrwAGzoCGZS/1wjo9KY7JHhnfnEsG5wSjDbymCozUM9a3ea7OQ== + +"@types/source-list-map@*": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" + integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== + "@types/stack-utils@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== -"@types/yargs@^12.0.2", "@types/yargs@^12.0.9": - version "12.0.12" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-12.0.12.tgz#45dd1d0638e8c8f153e87d296907659296873916" - integrity sha512-SOhuU4wNBxhhTHxYaiG5NY4HBhDIDnJF60GU+2LqHAdKKer86//e4yg69aENCtQ04n0ovz+tq2YPME5t5yp4pw== +"@types/tapable@*": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.6.tgz#a9ca4b70a18b270ccb2bc0aaafefd1d486b7ea74" + integrity sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA== + +"@types/uglify-js@*": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.9.2.tgz#01992579debba674e1e359cd6bcb1a1d0ab2e02b" + integrity sha512-d6dIfpPbF+8B7WiCi2ELY7m0w1joD8cRW4ms88Emdb2w062NeEpbNCeWwVCgzLRpVG+5e74VFSg4rgJ2xXjEiQ== + dependencies: + source-map "^0.6.1" -abab@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.0.tgz#aba0ab4c5eee2d4c79d3487d85450fb2376ebb0f" - integrity sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w== +"@types/webpack-sources@*": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-1.4.0.tgz#e58f1f05f87d39a5c64cf85705bdbdbb94d4d57e" + integrity sha512-c88dKrpSle9BtTqR6ifdaxu1Lvjsl3C5OsfvuUbUwdXymshv1TkufUAXBajCCUM/f/TmnkZC/Esb03MinzSiXQ== + dependencies: + "@types/node" "*" + "@types/source-list-map" "*" + source-map "^0.7.3" + +"@types/webpack@^4.4.31": + version "4.41.18" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.18.tgz#2945202617866ecdffa582087f1b6de04a7eed55" + integrity sha512-mQm2R8vV2BZE/qIDVYqmBVLfX73a8muwjs74SpjEyJWJxeXBbsI9L65Pcia9XfYLYWzD1c1V8m+L0p30y2N7MA== + dependencies: + "@types/anymatch" "*" + "@types/node" "*" + "@types/tapable" "*" + "@types/uglify-js" "*" + "@types/webpack-sources" "*" + source-map "^0.6.0" + +"@types/yargs-parser@*": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" + integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== + +"@types/yargs@^15.0.0": + version "15.0.5" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.5.tgz#947e9a6561483bdee9adffc983e91a6902af8b79" + integrity sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w== + dependencies: + "@types/yargs-parser" "*" + +"@webassemblyjs/ast@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" + integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== + dependencies: + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + +"@webassemblyjs/floating-point-hex-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" + integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== + +"@webassemblyjs/helper-api-error@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" + integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== + +"@webassemblyjs/helper-buffer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" + integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== + +"@webassemblyjs/helper-code-frame@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" + integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== + dependencies: + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/helper-fsm@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" + integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== + +"@webassemblyjs/helper-module-context@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" + integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== + dependencies: + "@webassemblyjs/ast" "1.9.0" + +"@webassemblyjs/helper-wasm-bytecode@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" + integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== + +"@webassemblyjs/helper-wasm-section@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" + integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + +"@webassemblyjs/ieee754@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" + integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" + integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" + integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== + +"@webassemblyjs/wasm-edit@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" + integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/helper-wasm-section" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-opt" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/wasm-gen@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" + integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wasm-opt@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" + integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + +"@webassemblyjs/wasm-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" + integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wast-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" + integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/floating-point-hex-parser" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-code-frame" "1.9.0" + "@webassemblyjs/helper-fsm" "1.9.0" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-printer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" + integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +abab@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" + integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -acorn-dynamic-import@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4" - integrity sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ= +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== dependencies: - acorn "^4.0.3" + acorn "^7.1.1" + acorn-walk "^7.1.1" -acorn-globals@^4.1.0: - version "4.3.2" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.2.tgz#4e2c2313a597fd589720395f6354b41cd5ec8006" - integrity sha512-BbzvZhVtZP+Bs1J1HcwrQe8ycfO0wStkSGxuul3He3GkHOIZ6eTqOkPuw9IP1X3+IkOo4wiJmwkobzXYz4wewQ== - dependencies: - acorn "^6.0.1" - acorn-walk "^6.0.1" +acorn-walk@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== -acorn-walk@^6.0.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.1.tgz#d363b66f5fac5f018ff9c3a1e7b6f8e310cc3913" - integrity sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw== +acorn@^6.4.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" + integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== -acorn@^4.0.3: - version "4.0.13" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" - integrity sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c= +acorn@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd" + integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA== -acorn@^5.0.0, acorn@^5.5.3: - version "5.7.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" - integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== +aggregate-error@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" + integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" -acorn@^6.0.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f" - integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA== +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== ajv-keywords@^3.1.0: version "3.4.0" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.0.tgz#4b831e7b531415a7cc518cd404e73f6193c6349d" integrity sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw== -ajv@^5.0.0: - version "5.5.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" - integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU= - dependencies: - co "^4.6.0" - fast-deep-equal "^1.0.0" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.3.0" +ajv-keywords@^3.4.1: + version "3.5.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.0.tgz#5c894537098785926d71e696114a53ce768ed773" + integrity sha512-eyoaac3btgU8eJlvh01En8OCKzRqlLe2G5jDsCr3RiE2uLGMEEB1aaGwVVpwR8M95956tGH6R+9edC++OvzaVw== ajv@^6.1.0, ajv@^6.5.5: version "6.10.0" @@ -948,44 +1569,47 @@ ajv@^6.1.0, ajv@^6.5.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -align-text@^0.1.1, align-text@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" - integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc= +ajv@^6.10.2, ajv@^6.12.2: + version "6.12.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" + integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ== dependencies: - kind-of "^3.0.2" - longest "^1.0.1" - repeat-string "^1.5.2" - -alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" - integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= -angular-animate@1.6.9: - version "1.6.9" - resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.6.9.tgz#a0f926c1ba3190bd8929ef966a7fa79760682622" - integrity sha512-3/fqrmT6mJgB2O6oDvXDlNP6AJVqUXLWZq/P87Xo7Wt0JjcSmhJSQ02Yp7gm0Pkd5SXMKHICLpn/iEJPyse9fg== +angular-animate@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/angular-animate/-/angular-animate-1.8.0.tgz#fc6333a5a052129dc5fa0b02cd676304d2b99e9d" + integrity sha512-ROFK3UIn1MSVpqAlay15ZxjPmVbvwaO3Zn/2vhmQdYeqxSbUVuOckcvtDLBpHPGPtOAreu35qfV7NQ7u2EgDcA== + +angular-mocks@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/angular-mocks/-/angular-mocks-1.8.0.tgz#9d161fe2102e47e46ff78a4226e4dfec27c060c4" + integrity sha512-oFKJIqR6zcsW6V9UQMuUYCXIcTy+n7oYExXxZkvU57hwJQdU1nuNZcSMQA9URiEAPyo7v3bqm0eOP3Ezi7Bigg== -angular-mocks@1.6.9: - version "1.6.9" - resolved "https://registry.yarnpkg.com/angular-mocks/-/angular-mocks-1.6.9.tgz#4fed8c8293a5080e0919a7ff0dcf0f704864b7ba" - integrity sha512-5aEwXmfd5DQvb64pOgP2W2D3ozAQSARkB6q+6NQfUJvJs9bD2YcExrUc1P4EbiIuyWag2OQM+pIKUNojVi3SBg== +angular@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/angular/-/angular-1.8.0.tgz#b1ec179887869215cab6dfd0df2e42caa65b1b51" + integrity sha512-VdaMx+Qk0Skla7B5gw77a8hzlcOakwF8mjlW13DpIWIDlfqwAbSSLfd8N/qZnzEmQF4jC4iofInd3gE7vL8ZZg== -angular@1.6.9: - version "1.6.9" - resolved "https://registry.yarnpkg.com/angular/-/angular-1.6.9.tgz#bc812932e18909038412d594a5990f4bb66c0619" - integrity sha512-6igWH2GIsxV+J38wNWCh8oyjaZsrIPIDO35twloIUyjlF2Yit6UyLAWujHP05ma/LFxTsx4NtYibRoMNBXPR1A== +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== -ansi-escapes@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== +ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + dependencies: + type-fest "^0.11.0" ansi-regex@^2.0.0: version "2.1.1" @@ -997,11 +1621,16 @@ ansi-regex@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= -ansi-regex@^4.0.0, ansi-regex@^4.1.0: +ansi-regex@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -1014,10 +1643,13 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -any-observable@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" - integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" anymatch@^2.0.0: version "2.0.0" @@ -1027,7 +1659,15 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -aproba@^1.0.3: +anymatch@^3.0.3, anymatch@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== @@ -1062,11 +1702,6 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= -array-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= - array-find-index@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" @@ -1089,11 +1724,6 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= - asn1.js@^4.0.0: version "4.10.1" resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" @@ -1128,10 +1758,10 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== async-each@^1.0.1: version "1.0.3" @@ -1143,18 +1773,6 @@ async-foreach@^0.1.3: resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" integrity sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI= -async-limiter@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" - integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== - -async@^2.1.2, async@^2.4.1: - version "2.6.2" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381" - integrity sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg== - dependencies: - lodash "^4.17.11" - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -1165,17 +1783,18 @@ atob@^2.1.1: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@^6.3.1: - version "6.7.7" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" - integrity sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ= +autoprefixer@^9.7.6: + version "9.8.4" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.4.tgz#736f1012673a70fa3464671d78d41abd54512863" + integrity sha512-84aYfXlpUe45lvmS+HoAWKCkirI/sw4JK0/bTeeqgHYco3dcsOn0NqdejISjptsYwNji/21dnkDri9PsYKk89A== dependencies: - browserslist "^1.7.6" - caniuse-db "^1.0.30000634" + browserslist "^4.12.0" + caniuse-lite "^1.0.30001087" + colorette "^1.2.0" normalize-range "^0.1.2" num2fraction "^1.2.2" - postcss "^5.2.16" - postcss-value-parser "^3.2.3" + postcss "^7.0.32" + postcss-value-parser "^4.1.0" aws-sign2@~0.7.0: version "0.7.0" @@ -1187,37 +1806,30 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== -babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-jest@^24.6.0, babel-jest@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.8.0.tgz#5c15ff2b28e20b0f45df43fe6b7f2aae93dba589" - integrity sha512-+5/kaZt4I9efoXzPlZASyK/lN9qdRKmmUav9smVc0ruPQD7IsfucQ87gpOE8mn2jbDuS6M/YOW6n3v9ZoIfgnw== - dependencies: - "@jest/transform" "^24.8.0" - "@jest/types" "^24.8.0" - "@types/babel__core" "^7.1.0" - babel-plugin-istanbul "^5.1.0" - babel-preset-jest "^24.6.0" - chalk "^2.4.2" - slash "^2.0.0" +babel-jest@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.1.0.tgz#b20751185fc7569a0f135730584044d1cb934328" + integrity sha512-Nkqgtfe7j6PxLO6TnCQQlkMm8wdTdnIF8xrdpooHCuD5hXRzVEPbPneTJKknH5Dsv3L8ip9unHDAp48YQ54Dkg== + dependencies: + "@jest/transform" "^26.1.0" + "@jest/types" "^26.1.0" + "@types/babel__core" "^7.1.7" + babel-plugin-istanbul "^6.0.0" + babel-preset-jest "^26.1.0" + chalk "^4.0.0" + graceful-fs "^4.2.4" + slash "^3.0.0" -babel-loader@^8.0.6: - version "8.0.6" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.6.tgz#e33bdb6f362b03f4bb141a0c21ab87c501b70dfb" - integrity sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw== +babel-loader@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" + integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== dependencies: - find-cache-dir "^2.0.0" - loader-utils "^1.0.2" - mkdirp "^0.5.1" + find-cache-dir "^2.1.0" + loader-utils "^1.4.0" + mkdirp "^0.5.3" pify "^4.0.1" + schema-utils "^2.6.5" babel-plugin-angularjs-annotate@^0.10.0: version "0.10.0" @@ -1228,51 +1840,58 @@ babel-plugin-angularjs-annotate@^0.10.0: "@babel/types" "^7.2.0" simple-is "~0.2.0" -babel-plugin-istanbul@^5.1.0: - 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== +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== dependencies: - find-up "^3.0.0" - istanbul-lib-instrument "^3.3.0" - test-exclude "^5.2.3" + object.assign "^4.1.0" -babel-plugin-jest-hoist@^24.6.0: - version "24.6.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.6.0.tgz#f7f7f7ad150ee96d7a5e8e2c5da8319579e78019" - integrity sha512-3pKNH6hMt9SbOv0F3WVmy5CWQ4uogS3k0GY5XLyQHJ9EGpAT9XWkFd2ZiXXtkwFHdAHa5j7w7kfxSP5lAIwu7w== +babel-plugin-istanbul@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" + integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^4.0.0" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.1.0.tgz#c6a774da08247a28285620a64dfadbd05dd5233a" + integrity sha512-qhqLVkkSlqmC83bdMhM8WW4Z9tB+JkjqAqlbbohS9sJLT5Ha2vfzuKqg5yenXrAjOPG2YC0WiXdH3a9PvB+YYw== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.0.0" "@types/babel__traverse" "^7.0.6" -babel-polyfill@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" - integrity sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM= - dependencies: - babel-runtime "^6.26.0" - core-js "^2.5.0" - regenerator-runtime "^0.10.5" - -babel-preset-jest@^24.6.0: - version "24.6.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.6.0.tgz#66f06136eefce87797539c0d63f1769cc3915984" - integrity sha512-pdZqLEdmy1ZK5kyRUfvBb2IfTPb2BUvIJczlPspS8fWmBQslNNDBqVfh7BW5leOVJMDZKzjD8XEyABTk6gQ5yw== - dependencies: - "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - babel-plugin-jest-hoist "^24.6.0" - -babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -balanced-match@^0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" - integrity sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg= +babel-preset-current-node-syntax@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.3.tgz#b4b547acddbf963cba555ba9f9cbbb70bfd044da" + integrity sha512-uyexu1sVwcdFnyq9o8UQYsXwXflIh8LvrF5+cKrYam93ned1CStffB3+BEcsxGSgagoA3GEyjDqO4a/58hyPYQ== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +babel-preset-jest@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.1.0.tgz#612f714e5b457394acfd863793c564cbcdb7d1c1" + integrity sha512-na9qCqFksknlEj5iSdw1ehMVR06LCCTkZLGKeEtxDDdhg8xpUF09m29Kvh1pRbZ07h7AQ5ttLYUwpXL4tO6w7w== + dependencies: + babel-plugin-jest-hoist "^26.1.0" + babel-preset-current-node-syntax "^0.1.2" balanced-match@^1.0.0: version "1.0.0" @@ -1314,6 +1933,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.1.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" + integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== + block-stream@*: version "0.0.9" resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" @@ -1321,6 +1945,11 @@ block-stream@*: dependencies: inherits "~2.0.0" +bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: version "4.11.8" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" @@ -1350,22 +1979,22 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" +braces@^3.0.1, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + 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" integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= -browser-process-hrtime@^0.1.2: - version "0.1.3" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz#616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4" - integrity sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw== - -browser-resolve@^1.11.3: - version "1.11.3" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" - integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== - dependencies: - resolve "1.1.7" +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.2.0" @@ -1426,22 +2055,15 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: - version "1.7.7" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" - integrity sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk= +browserslist@^4.12.0, browserslist@^4.8.5: + version "4.12.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.2.tgz#76653d7e4c57caa8a1a28513e2f4e197dc11a711" + integrity sha512-MfZaeYqR8StRZdstAK9hCKDd2StvePCYp5rHzQCPicUjfFliDgmuaBNPHYUTpAywBN8+Wc/d7NYVFkO0aqaBUw== dependencies: - caniuse-db "^1.0.30000639" - electron-to-chromium "^1.2.7" - -browserslist@^4.6.0: - 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" + caniuse-lite "^1.0.30001088" + electron-to-chromium "^1.3.483" + escalade "^3.0.1" + node-releases "^1.1.58" bser@^2.0.0: version "2.0.0" @@ -1474,6 +2096,27 @@ builtin-status-codes@^3.0.0: resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= +cacache@^12.0.2: + version "12.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -1521,50 +2164,25 @@ camelcase-keys@^2.0.0: camelcase "^2.0.0" map-obj "^1.0.0" -camelcase@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" - integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk= - camelcase@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= -camelcase@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" - integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= - -camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= - -camelcase@^5.0.0: +camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -caniuse-api@^1.5.2: - version "1.6.1" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c" - integrity sha1-tTTnxzTE+B7F++isoq0kNUuWLGw= - dependencies: - browserslist "^1.3.6" - caniuse-db "^1.0.30000529" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: - version "1.0.30000971" - resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000971.tgz#5530250a146a8fec0fae3014c94c2aae040c6cbe" - integrity sha512-ubSZfYXO2KMYtCVmDez82mjodeZa+mBYWAnBMAmFBPAn4C2PY4SD0eC/diYQD4Rj1K+WNdp0vr0JDtm0SQ6GNg== +camelcase@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.0.0.tgz#5259f7c30e35e278f1bdc2a4d91230b37cad981e" + integrity sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w== -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== +caniuse-lite@^1.0.30001087, caniuse-lite@^1.0.30001088: + version "1.0.30001093" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001093.tgz#833e80f64b1a0455cbceed2a4a3baf19e4abd312" + integrity sha512-0+ODNoOjtWD5eS9aaIpf4K0gQqZfILNY4WSNuYzeT1sXni+lMrrVjc0odEobJt6wrODofDZUX8XYi/5y7+xl8g== capture-exit@^2.0.0: version "2.0.0" @@ -1578,15 +2196,7 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -center-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" - integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60= - dependencies: - align-text "^0.1.3" - lazy-cache "^1.0.3" - -chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: +chalk@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= @@ -1597,7 +2207,7 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -1606,10 +2216,23 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chokidar@^2.0.2: - version "2.1.6" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.6.tgz#b6cad653a929e244ce8a834244164d241fa954c5" - integrity sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g== +chalk@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== dependencies: anymatch "^2.0.0" async-each "^1.0.1" @@ -1625,11 +2248,33 @@ chokidar@^2.0.2: optionalDependencies: fsevents "^1.2.7" +chokidar@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.0.tgz#b30611423ce376357c765b9b8f904b9fba3c0be8" + integrity sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.4.0" + optionalDependencies: + fsevents "~2.1.2" + chownr@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== +chrome-trace-event@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" + integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== + dependencies: + tslib "^1.9.0" + ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" @@ -1643,13 +2288,6 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" -clap@^1.0.9: - version "1.2.3" - resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51" - integrity sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA== - dependencies: - chalk "^1.1.3" - class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -1660,87 +2298,67 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -clean-webpack-plugin@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/clean-webpack-plugin/-/clean-webpack-plugin-2.0.2.tgz#805a19ff20d46a06125298a25eb31142ecad2166" - integrity sha512-pi1111o4OBd9qvacbgs+NRqClfVPKVIc66B4d8kx6Ho/L+i9entQ/NpK600CsTYTPu3kWvKwwyKarsYMvC2xeA== - dependencies: - del "^4.0.0" +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== -cli-cursor@^2.0.0, cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= +clean-webpack-plugin@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/clean-webpack-plugin/-/clean-webpack-plugin-3.0.0.tgz#a99d8ec34c1c628a4541567aa7b457446460c62b" + integrity sha512-MciirUH5r+cYLGCOL5JX/ZLzOZbVr1ot3Fw+KcvbhUb6PM+yycqd9ZhIlcigQ5gl+XhppNmw3bEFuaaMNyLj3A== dependencies: - restore-cursor "^2.0.0" + "@types/webpack" "^4.4.31" + del "^4.1.1" -cli-truncate@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" - integrity sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ= +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== dependencies: - slice-ansi "0.0.4" - string-width "^1.0.1" + restore-cursor "^3.1.0" -cliui@^2.1.0: +cli-truncate@2.1.0, cli-truncate@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" - integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE= - dependencies: - center-align "^0.1.1" - right-align "^0.1.1" - wordwrap "0.0.2" - -cliui@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" + integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" + slice-ansi "^3.0.0" + string-width "^4.2.0" -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" -clone-deep@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-2.0.2.tgz#00db3a1e173656730d1188c3d6aced6d7ea97713" - integrity sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ== +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== dependencies: - for-own "^1.0.0" - is-plain-object "^2.0.4" - kind-of "^6.0.0" - shallow-clone "^1.0.0" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= -coa@~1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd" - integrity sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0= - dependencies: - q "^1.1.2" - code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= +collect-v8-coverage@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -1749,52 +2367,34 @@ collection-visit@^1.0.0: map-visit "^1.0.0" object-visit "^1.0.0" -color-convert@^1.3.0, color-convert@^1.9.0: +color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -color-name@^1.0.0: +color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-string@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991" - integrity sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE= - dependencies: - color-name "^1.0.0" - -color@^0.11.0: - version "0.11.4" - resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764" - integrity sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q= - dependencies: - clone "^1.0.2" - color-convert "^1.3.0" - color-string "^0.3.0" - -colormin@^1.0.5: - version "1.1.2" - resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133" - integrity sha1-6i90IKcrlogaOKrlnsEkpvcpgTM= - dependencies: - color "^0.11.0" - css-color-names "0.0.4" - has "^1.0.1" - -colors@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" - integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM= +colorette@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.0.tgz#45306add826d196e8c87236ac05d797f25982e63" + integrity sha512-soRSroY+OF/8OdA3PTQXwaDJeMc7TfknKKrxeSCencL2a4+Tx5zhxmmv7hdpCjhKBjehzp8+bwe/T68K0hpIjw== combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" @@ -1803,16 +2403,26 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@^2.14.1, commander@^2.9.0, commander@~2.20.0: - version "2.20.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" - integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" + integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= +compare-versions@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" + integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== + component-emitter@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" @@ -1823,6 +2433,16 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= +concat-stream@^1.5.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + console-browserify@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" @@ -1847,36 +2467,54 @@ convert-source-map@^1.1.0, convert-source-map@^1.4.0: dependencies: safe-buffer "~5.1.1" +convert-source-map@^1.6.0, convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js-compat@^3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.1.2.tgz#c29ab9722517094b98622175e2218c3b7398176d" - integrity sha512-X0Ch5f6itrHxhg5HSJucX6nNLNAGr+jq+biBh6nPGc3YAWz2a8p/ZIZY8cUkDzSRNG54omAuu3hoEF8qZbu/6Q== +core-js-compat@^3.6.2: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c" + integrity sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng== dependencies: - browserslist "^4.6.0" - core-js-pure "3.1.2" - semver "^6.0.0" + browserslist "^4.8.5" + semver "7.0.0" -core-js-pure@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.1.2.tgz#62fc435f35b7374b9b782013cdcb2f97e9f6dffa" - integrity sha512-5ckIdBF26B3ldK9PM177y2ZcATP2oweam9RskHSoqfZCrJ2As6wVg8zJ1zTriFsZf6clj/N1ThDFRGaomMsh9w== +core-js-pure@^3.0.0: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813" + integrity sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA== -core-js@^2.4.0, core-js@^2.5.0: - version "2.6.8" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.8.tgz#dc3a1e633a04267944e0cb850d3880f340248139" - integrity sha512-RWlREFU74TEkdXzyl1bka66O3kYp8jeTXrvJZDzVVMH8AiHUSOFpL1yfhQJ+wHocAm1m+4971W1PPzfLuCv1vg== +core-js@3: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" + integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -cosmiconfig@^5.2.0: +cosmiconfig@^5.0.0: version "5.2.1" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== @@ -1886,6 +2524,17 @@ cosmiconfig@^5.2.0: js-yaml "^3.13.1" parse-json "^4.0.0" +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + create-ecdh@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" @@ -1925,16 +2574,7 @@ cross-spawn@^3.0.0: lru-cache "^4.0.1" which "^1.2.9" -cross-spawn@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^6.0.0: +cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== @@ -1945,6 +2585,15 @@ cross-spawn@^6.0.0: shebang-command "^1.2.0" which "^1.2.9" +cross-spawn@^7.0.0: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" @@ -1962,102 +2611,46 @@ crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" -css-color-names@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" - integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= - -css-loader@^0.28.4: - version "0.28.11" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.11.tgz#c3f9864a700be2711bb5a2462b2389b1a392dab7" - integrity sha512-wovHgjAx8ZIMGSL8pTys7edA1ClmzxHeY6n/d97gg5odgsxEgKjULPR0viqyC+FWMCL9sfqoC/QCUBo62tLvPg== - dependencies: - babel-code-frame "^6.26.0" - css-selector-tokenizer "^0.7.0" - cssnano "^3.10.0" - icss-utils "^2.1.0" - loader-utils "^1.0.2" - lodash.camelcase "^4.3.0" - object-assign "^4.1.1" - postcss "^5.0.6" - postcss-modules-extract-imports "^1.2.0" - postcss-modules-local-by-default "^1.2.0" - postcss-modules-scope "^1.1.0" - postcss-modules-values "^1.3.0" - postcss-value-parser "^3.3.0" - source-list-map "^2.0.0" - -css-selector-tokenizer@^0.7.0: - version "0.7.1" - resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz#a177271a8bca5019172f4f891fc6eed9cbf68d5d" - integrity sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA== - dependencies: - cssesc "^0.1.0" - fastparse "^1.1.1" - regexpu-core "^1.0.0" - -cssesc@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" - integrity sha1-yBSQPkViM3GgR3tAEJqq++6t27Q= - -cssnano@^3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38" - integrity sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg= - dependencies: - autoprefixer "^6.3.1" - decamelize "^1.1.2" - defined "^1.0.0" - has "^1.0.1" - object-assign "^4.0.1" - postcss "^5.0.14" - postcss-calc "^5.2.0" - postcss-colormin "^2.1.8" - postcss-convert-values "^2.3.4" - postcss-discard-comments "^2.0.4" - postcss-discard-duplicates "^2.0.1" - postcss-discard-empty "^2.0.1" - postcss-discard-overridden "^0.1.1" - postcss-discard-unused "^2.2.1" - postcss-filter-plugins "^2.0.0" - postcss-merge-idents "^2.1.5" - postcss-merge-longhand "^2.0.1" - postcss-merge-rules "^2.0.3" - postcss-minify-font-values "^1.0.2" - postcss-minify-gradients "^1.0.1" - postcss-minify-params "^1.0.4" - postcss-minify-selectors "^2.0.4" - postcss-normalize-charset "^1.1.0" - postcss-normalize-url "^3.0.7" - postcss-ordered-values "^2.1.0" - postcss-reduce-idents "^2.2.2" - postcss-reduce-initial "^1.0.0" - postcss-reduce-transforms "^1.0.3" - postcss-svgo "^2.1.1" - postcss-unique-selectors "^2.0.2" - postcss-value-parser "^3.2.3" - postcss-zindex "^2.0.1" - -csso@~2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85" - integrity sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U= +css-loader@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.6.0.tgz#2e4b2c7e6e2d27f8c8f28f61bffcd2e6c91ef645" + integrity sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ== dependencies: - clap "^1.0.9" - source-map "^0.5.3" + camelcase "^5.3.1" + cssesc "^3.0.0" + icss-utils "^4.1.1" + loader-utils "^1.2.3" + normalize-path "^3.0.0" + postcss "^7.0.32" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^3.0.2" + postcss-modules-scope "^2.2.0" + postcss-modules-values "^3.0.0" + postcss-value-parser "^4.1.0" + schema-utils "^2.7.0" + semver "^6.3.0" + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": - version "0.3.6" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.6.tgz#f85206cee04efa841f3c5982a74ba96ab20d65ad" - integrity sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A== +cssom@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" + integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== -cssstyle@^1.0.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.2.2.tgz#427ea4d585b18624f6fdbf9de7a2a1a3ba713077" - integrity sha512-43wY3kl1CVQSvL7wUY1qXkxVGkStjpkDmVjiIKX8R97uhajy8Bybay78uOtqvh7Q5GK75dNPfW0geWjE6qQQow== +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== dependencies: - cssom "0.3.x" + cssom "~0.3.6" currently-unhandled@^0.4.1: version "0.4.1" @@ -2066,12 +2659,10 @@ currently-unhandled@^0.4.1: dependencies: array-find-index "^1.0.1" -d@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" - integrity sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8= - dependencies: - es5-ext "^0.10.9" +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= dashdash@^1.12.0: version "1.14.1" @@ -2080,19 +2671,14 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -data-urls@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" - integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== +data-urls@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" + integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== dependencies: - abab "^2.0.0" - whatwg-mimetype "^2.2.0" - whatwg-url "^7.0.0" - -date-fns@^1.27.2: - version "1.30.1" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" - integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" date-now@^0.1.4: version "0.1.4" @@ -2106,25 +2692,37 @@ debug@^2.2.0, debug@^2.3.3: dependencies: ms "2.0.0" -debug@^3.1.0, debug@^3.2.6: +debug@^3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== dependencies: ms "^2.1.1" -debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: +debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== dependencies: ms "^2.1.1" -decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: +decamelize@^1.1.2, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= +decamelize@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-3.2.0.tgz#84b8e8f4f8c579f938e35e2cc7024907e0090851" + integrity sha512-4TgkVUsmmu7oCSyGBm5FvfMoACuoh9EOidm7V5/J2X2djAwwt57qb3F2KMP2ITqODTCSwb+YRV+0Zqrv18k/hw== + dependencies: + xregexp "^4.2.4" + +decimal.js@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.0.tgz#39466113a9e036111d02f82489b5fd6b0b5ed231" + integrity sha512-vDPw+rDgn3bZe1+F/pyEwb1oMG2XTlRVgAa6B4KccTEpYgF8w6eQllVbQcfIJnZyvzFtFpxnpGtx8dd7DJp/Rw== + decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" @@ -2145,6 +2743,11 @@ deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + define-properties@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -2174,24 +2777,7 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" -defined@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= - -del@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" - integrity sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU= - dependencies: - globby "^6.1.0" - is-path-cwd "^1.0.0" - is-path-in-cwd "^1.0.0" - p-map "^1.1.1" - pify "^3.0.0" - rimraf "^2.2.8" - -del@^4.0.0: +del@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== @@ -2222,20 +2808,25 @@ des.js@^1.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" +detect-file@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" + integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= + detect-libc@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= -detect-newline@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" - integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== -diff-sequences@^24.3.0: - version "24.3.0" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.3.0.tgz#0f20e8a1df1abddaf4d9c226680952e64118b975" - integrity sha512-xLqpez+Zj9GKSnPWS0WZw1igGocZ+uua8+y+5dDNTT934N3QuY1sp2LkHzwiaYQGz60hMq0pjAshdeXm5VUOEw== +diff-sequences@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.0.0.tgz#0760059a5c287637b842bd7085311db7060e88a6" + integrity sha512-JC/eHYEC3aSS0vZGjuoc4vHA0yAQTzhQQldXMeMF+JlxLGJlCO38Gma82NV9gk1jGFz8mDzUMeaKXvjRRdJ2dg== diffie-hellman@^5.0.0: version "5.0.3" @@ -2251,12 +2842,22 @@ domain-browser@^1.1.1: resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== -domexception@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" - integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== +domexception@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" + integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== + dependencies: + webidl-conversions "^5.0.0" + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== dependencies: - webidl-conversions "^4.0.2" + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" ecc-jsbn@~0.1.1: version "0.1.2" @@ -2266,15 +2867,10 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" -electron-to-chromium@^1.2.7, 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" - integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= +electron-to-chromium@^1.3.483: + version "1.3.487" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.487.tgz#8075e6ea33ee2e79a2dfb2a2467033f014017258" + integrity sha512-m4QS3IDShxauFfYFpnEzRCcUI55oKB9acEnHCuY/hSCZMz9Pz2KJj+UBnGHxRxS/mS1aphqOQ5wI6gc3yDZ7ew== elliptic@^6.0.0: version "6.4.1" @@ -2289,11 +2885,33 @@ elliptic@^6.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +end-of-stream@^1.0.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + end-of-stream@^1.1.0: version "1.4.1" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" @@ -2301,17 +2919,23 @@ end-of-stream@^1.1.0: dependencies: once "^1.4.0" -enhanced-resolve@^3.4.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e" - integrity sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24= +enhanced-resolve@^4.1.0, enhanced-resolve@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.2.0.tgz#5d43bda4a0fd447cb0ebbe71bef8deff8805ad0d" + integrity sha512-S7eiFb/erugyd1rLb6mQ3Vuq+EXHv5cpCkNqqIkYkBgN2QdFnyCZzFBleqwGEx4lgNGYij81BWnCrFNK7vxvjQ== dependencies: graceful-fs "^4.1.2" - memory-fs "^0.4.0" - object-assign "^4.0.1" - tapable "^0.2.7" + memory-fs "^0.5.0" + tapable "^1.0.0" + +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" -errno@^0.1.3: +errno@^0.1.3, errno@~0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== @@ -2325,124 +2949,42 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.5.1: - version "1.13.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" - integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== - dependencies: - es-to-primitive "^1.2.0" - function-bind "^1.1.1" - has "^1.0.3" - is-callable "^1.1.4" - is-regex "^1.0.4" - object-keys "^1.0.12" - -es-to-primitive@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" - integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14: - version "0.10.50" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.50.tgz#6d0e23a0abdb27018e5ac4fd09b412bc5517a778" - integrity sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw== - dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.1" - next-tick "^1.0.0" - -es6-iterator@^2.0.1, es6-iterator@~2.0.1, es6-iterator@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-map@^0.1.3: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" - integrity sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA= - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-set "~0.1.5" - es6-symbol "~3.1.1" - event-emitter "~0.3.5" - -es6-set@~0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" - integrity sha1-0rPsXU2ADO2BjbU40ol02wpzzLE= - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-symbol "3.1.1" - event-emitter "~0.3.5" - -es6-symbol@3.1.1, es6-symbol@^3.1.1, es6-symbol@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" - integrity sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc= - dependencies: - d "1" - es5-ext "~0.10.14" - -es6-weak-map@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" - integrity sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8= - dependencies: - d "1" - es5-ext "^0.10.14" - es6-iterator "^2.0.1" - es6-symbol "^3.1.1" +escalade@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.0.1.tgz#52568a77443f6927cd0ab9c73129137533c965ed" + integrity sha512-DR6NO3h9niOT+MZs7bjxlj2a1k+POu5RN8CLTPX2+i78bRi9eLe7+0zXgUHMnGXWybYcL61E9hGhPKqedy8tQA== -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, escape-string-regexp@^1.0.5: +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -escodegen@^1.9.1: - version "1.11.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.1.tgz#c485ff8d6b4cdb89e27f4a856e91f118401ca510" - integrity sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw== +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escodegen@^1.14.1: + version "1.14.3" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" + integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== dependencies: - esprima "^3.1.3" + esprima "^4.0.1" estraverse "^4.2.0" esutils "^2.0.2" optionator "^0.8.1" optionalDependencies: source-map "~0.6.1" -escope@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" - integrity sha1-4Bl16BJ4GhY6ba392AOY3GTIicM= +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== dependencies: - es6-map "^0.1.3" - es6-weak-map "^2.0.1" esrecurse "^4.1.0" estraverse "^4.1.1" -esprima@^2.6.0: - version "2.7.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" - integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE= - -esprima@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" - integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= - -esprima@^4.0.0: +esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== @@ -2464,14 +3006,6 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= -event-emitter@~0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk= - dependencies: - d "1" - es5-ext "~0.10.14" - events@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" @@ -2490,19 +3024,6 @@ exec-sh@^0.3.2: resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.2.tgz#6738de2eb7c8e671d0366aea0b0db8c6f7d7391b" integrity sha512-9sLAvzhI5nc8TpuQUh4ahMdCrWT00wPWz7j47/emR5+2qEfoZP5zzUXvx+vdx+H6ohhnsYC31iX04QLYJK8zTg== -execa@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" - integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" @@ -2516,6 +3037,21 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +execa@^4.0.0, execa@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.2.tgz#ad87fb7b2d9d564f70d2b62d511bee41d5cbb240" + integrity sha512-QI2zLa6CjGWdiQsmSkZoGtDx2N+cQIGb3yNolGTdjSQzydzLgYYf8LRuagp7S7fPimjcrzUDSUFd/MgzELMi4Q== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -2534,17 +3070,24 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expect@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-24.8.0.tgz#471f8ec256b7b6129ca2524b2a62f030df38718d" - integrity sha512-/zYvP8iMDrzaaxHVa724eJBCKqSHmO0FA7EDkBiRHxg6OipmMn1fN+C8T9L9K8yr7UONkOifu6+LLH+z76CnaA== +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= dependencies: - "@jest/types" "^24.8.0" - ansi-styles "^3.2.0" - jest-get-type "^24.8.0" - jest-matcher-utils "^24.8.0" - jest-message-util "^24.8.0" - jest-regex-util "^24.3.0" + homedir-polyfill "^1.0.1" + +expect@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-26.1.0.tgz#8c62e31d0f8d5a8ebb186ee81473d15dd2fbf7c8" + integrity sha512-QbH4LZXDsno9AACrN9eM0zfnby9G+OsdNgZUohjg/P0mLy1O+/bzTAJGT6VSIjVCe8yKM6SzEl/ckEOFBT7Vnw== + dependencies: + "@jest/types" "^26.1.0" + ansi-styles "^4.0.0" + jest-get-type "^26.0.0" + jest-matcher-utils "^26.1.0" + jest-message-util "^26.1.0" + jest-regex-util "^26.0.0" extend-shallow@^2.0.1: version "2.0.1" @@ -2580,16 +3123,6 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" -extract-text-webpack-plugin@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz#5f043eaa02f9750a9258b78c0a6e0dc1408fb2f7" - integrity sha512-bt/LZ4m5Rqt/Crl2HiKuAl/oqg0psx1tsTLkvWbJen1CtD+fftkZhMaQ9HOtY2gWsl2Wq+sABmMVi9z3DhKWQQ== - dependencies: - async "^2.4.1" - loader-utils "^1.1.0" - schema-utils "^0.3.0" - webpack-sources "^1.0.1" - extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" @@ -2600,16 +3133,16 @@ extsprintf@^1.2.0: resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= -fast-deep-equal@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" - integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ= - fast-deep-equal@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + fast-json-stable-stringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" @@ -2620,11 +3153,6 @@ fast-levenshtein@~2.0.4: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= -fastparse@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" - integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== - fb-watchman@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58" @@ -2632,18 +3160,15 @@ fb-watchman@^2.0.0: dependencies: bser "^2.0.0" -figures@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" - integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= - dependencies: - escape-string-regexp "^1.0.5" - object-assign "^4.1.0" +figgy-pudding@^3.5.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= +figures@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== dependencies: escape-string-regexp "^1.0.5" @@ -2657,7 +3182,14 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" -find-cache-dir@^2.0.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" + +find-cache-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== @@ -2666,11 +3198,6 @@ find-cache-dir@^2.0.0: make-dir "^2.0.0" pkg-dir "^3.0.0" -find-parent-dir@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/find-parent-dir/-/find-parent-dir-0.3.0.tgz#33c44b429ab2b2f0646299c5f9f718f376ff8d54" - integrity sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ= - find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -2679,13 +3206,6 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" -find-up@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" @@ -2700,33 +3220,44 @@ find-up@^4.0.0: dependencies: locate-path "^5.0.0" -flatten@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" - integrity sha1-2uRqnXj74lKSJYzB54CkHZXAN4I= +find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" -fn-name@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fn-name/-/fn-name-2.0.1.tgz#5214d7537a4d06a4a301c0cc262feb84188002e7" - integrity sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc= +find-versions@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.2.0.tgz#10297f98030a786829681690545ef659ed1d254e" + integrity sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww== + dependencies: + semver-regex "^2.0.0" + +findup-sync@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" + integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== + dependencies: + detect-file "^1.0.0" + is-glob "^4.0.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" -for-in@^0.1.3: - version "0.1.8" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" - integrity sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE= +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" -for-in@^1.0.1, for-in@^1.0.2: +for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= -for-own@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" - integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= - dependencies: - for-in "^1.0.1" - forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -2748,6 +3279,14 @@ fragment-cache@^0.2.1: dependencies: map-cache "^0.2.2" +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + fs-minipass@^1.2.5: version "1.2.6" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.6.tgz#2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07" @@ -2755,6 +3294,16 @@ fs-minipass@^1.2.5: dependencies: minipass "^2.2.1" +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -2768,6 +3317,11 @@ fsevents@^1.2.7: nan "^2.12.1" node-pre-gyp "^0.12.0" +fsevents@^2.1.2, fsevents@~2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== + fstream@^1.0.0, fstream@^1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" @@ -2783,15 +3337,6 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -g-status@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/g-status/-/g-status-2.0.2.tgz#270fd32119e8fc9496f066fe5fe88e0a6bc78b97" - integrity sha512-kQoE9qH+T1AHKgSSD0Hkv98bobE90ILQcXAF4wvGgsr7uFqNvwmh8j+Lq3l0RVt3E3HjSbv2B9biEGcEtpHLCA== - dependencies: - arrify "^1.0.1" - matcher "^1.0.0" - simple-git "^1.85.0" - gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" @@ -2813,31 +3358,31 @@ gaze@^1.0.0: dependencies: globule "^1.0.0" -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== +gensync@^1.0.0-beta.1: + version "1.0.0-beta.1" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" + integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== get-own-enumerable-property-symbols@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz#b877b49a5c16aefac3655f2ed2ea5b684df8d203" integrity sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg== +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + get-stdin@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= -get-stdin@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6" - integrity sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ== - -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= - get-stream@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" @@ -2845,6 +3390,13 @@ get-stream@^4.0.0: dependencies: pump "^3.0.0" +get-stream@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" + integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== + dependencies: + pump "^3.0.0" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -2865,6 +3417,13 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" +glob-parent@~5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" + integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== + dependencies: + is-glob "^4.0.1" + glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@~7.1.1: version "7.1.4" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" @@ -2877,6 +3436,54 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@~7.1.1: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.1.4: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" @@ -2902,11 +3509,16 @@ globule@^1.0.0: lodash "~4.17.10" minimatch "~3.0.2" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: +graceful-fs@^4.1.11, graceful-fs@^4.1.2: version "4.1.15" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== +graceful-fs@^4.1.15, graceful-fs@^4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== + growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" @@ -2917,23 +3529,12 @@ hammerjs@2.0.8: resolved "https://registry.yarnpkg.com/hammerjs/-/hammerjs-2.0.8.tgz#04ef77862cff2bb79d30f7692095930222bf60f1" integrity sha1-BO93hiz/K7edMPdpIJWTAiK/YPE= -handlebars@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.2.tgz#b6b37c1ced0306b221e094fc7aca3ec23b131b67" - integrity sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw== - dependencies: - neo-async "^2.6.0" - optimist "^0.6.1" - source-map "^0.6.1" - optionalDependencies: - uglify-js "^3.1.4" - har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= -har-validator@~5.1.0: +har-validator@~5.1.0, har-validator@~5.1.3: version "5.1.3" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== @@ -2948,21 +3549,16 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= - -has-flag@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" - integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE= - has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + has-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" @@ -3004,13 +3600,6 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has@^1.0.1, has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - hash-base@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" @@ -3036,22 +3625,29 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" +homedir-polyfill@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" + integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== + dependencies: + parse-passwd "^1.0.0" + hosted-git-info@^2.1.4: version "2.7.1" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== -html-comment-regex@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" - integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== - -html-encoding-sniffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" - integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== +html-encoding-sniffer@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" + integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== dependencies: - whatwg-encoding "^1.0.1" + whatwg-encoding "^1.0.5" + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== http-signature@~1.2.0: version "1.2.0" @@ -3067,21 +3663,26 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= -husky@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/husky/-/husky-2.3.0.tgz#8b78ed24d763042df7fd899991985d65a976dd13" - integrity sha512-A/ZQSEILoq+mQM3yC3RIBSaw1bYXdkKnyyKVSUiJl+iBjVZc5LQEXdGY1ZjrDxC4IzfRPiJ0IqzEQGCN5TQa/A== +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + +husky@^4.2.5: + version "4.2.5" + resolved "https://registry.yarnpkg.com/husky/-/husky-4.2.5.tgz#2b4f7622673a71579f901d9885ed448394b5fa36" + integrity sha512-SYZ95AjKcX7goYVZtVZF2i6XiZcHknw50iXvY7b0MiGoj5RwdgRQNEHdb+gPDPCXKlzwrybjFjkL6FOj8uRhZQ== dependencies: - cosmiconfig "^5.2.0" - execa "^1.0.0" - find-up "^3.0.0" - get-stdin "^7.0.0" - is-ci "^2.0.0" - pkg-dir "^4.1.0" - please-upgrade-node "^3.1.1" - read-pkg "^5.1.1" - run-node "^1.0.0" + chalk "^4.0.0" + ci-info "^2.0.0" + compare-versions "^3.6.0" + cosmiconfig "^6.0.0" + find-versions "^3.2.0" + opencollective-postinstall "^2.0.2" + pkg-dir "^4.2.0" + please-upgrade-node "^3.2.0" slash "^3.0.0" + which-pm-runs "^1.0.0" iconv-lite@0.4.24, iconv-lite@^0.4.4: version "0.4.24" @@ -3090,23 +3691,28 @@ iconv-lite@0.4.24, iconv-lite@^0.4.4: dependencies: safer-buffer ">= 2.1.2 < 3" -icss-replace-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" - integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= - -icss-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-2.1.0.tgz#83f0a0ec378bf3246178b6c2ad9136f135b1c962" - integrity sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI= +icss-utils@^4.0.0, icss-utils@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" + integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== dependencies: - postcss "^6.0.1" + postcss "^7.0.14" ieee754@^1.1.4: version "1.1.13" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= + +ignore-emit-webpack-plugin@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ignore-emit-webpack-plugin/-/ignore-emit-webpack-plugin-2.0.2.tgz#e06630f2a1fd259306055b19817a5f83b69b3b0e" + integrity sha512-mlwNY4ocAFJ+gzvIdbWdF2nPszE5CdZYJBvI38XEJnW2/qV7kA5HenzGE0XdS4nzoSqEIj268y2y4K6WTLFm8Q== + ignore-walk@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" @@ -3114,6 +3720,13 @@ ignore-walk@^3.0.1: dependencies: minimatch "^3.0.4" +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= + dependencies: + import-from "^2.1.0" + import-fresh@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" @@ -3122,6 +3735,21 @@ import-fresh@^2.0.0: caller-path "^2.0.0" resolve-from "^3.0.0" +import-fresh@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= + dependencies: + resolve-from "^3.0.0" + import-local@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" @@ -3130,6 +3758,14 @@ import-local@^2.0.0: pkg-dir "^3.0.0" resolve-cwd "^2.0.0" +import-local@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" + integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -3147,20 +3783,20 @@ indent-string@^2.1.0: dependencies: repeating "^2.0.0" -indent-string@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" - integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== indexes-of@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= -indexof@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" - integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= +infer-owner@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== inflight@^1.0.4: version "1.0.6" @@ -3180,15 +3816,15 @@ inherits@2.0.1: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= -ini@~1.3.0: +ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== -interpret@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" - integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== +interpret@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== invariant@^2.2.2, invariant@^2.2.4: version "2.2.4" @@ -3197,20 +3833,10 @@ invariant@^2.2.2, invariant@^2.2.4: dependencies: loose-envify "^1.0.0" -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= - -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== - -is-absolute-url@^2.0.0: +ip-regex@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" - integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= is-accessor-descriptor@^0.1.6: version "0.1.6" @@ -3238,16 +3864,18 @@ 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.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-callable@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" - integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== - is-ci@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" @@ -3267,12 +3895,7 @@ is-data-descriptor@^1.0.0: resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== dependencies: - kind-of "^6.0.0" - -is-date-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" - integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= + kind-of "^6.0.0" is-descriptor@^0.1.0: version "0.1.6" @@ -3297,6 +3920,11 @@ is-directory@^0.3.1: resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= +is-docker@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.0.0.tgz#2cb0df0e75e2d064fe1864c37cdeacb7b2dcf25b" + integrity sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ== + is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -3333,6 +3961,11 @@ is-fullwidth-code-point@^2.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + is-generator-fn@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" @@ -3345,7 +3978,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, 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== @@ -3359,35 +3992,21 @@ 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.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= -is-observable@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e" - integrity sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA== - dependencies: - symbol-observable "^1.1.0" - -is-path-cwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" - integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0= - is-path-cwd@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.1.0.tgz#2e0c7e463ff5b7a0eb60852d851a6809347a124c" integrity sha512-Sc5j3/YnM8tDeyCsVeKlm/0p95075DyLmDEIkSgQ7mXkrOX+uTCtmQFm0CYzVyJwcCCmO3k8qfJt17SxQwB5Zw== -is-path-in-cwd@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" - integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ== - dependencies: - is-path-inside "^1.0.0" - is-path-in-cwd@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" @@ -3395,13 +4014,6 @@ is-path-in-cwd@^2.0.0: dependencies: is-path-inside "^2.1.0" -is-path-inside@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" - integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= - dependencies: - path-is-inside "^1.0.1" - is-path-inside@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" @@ -3421,17 +4033,10 @@ is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-promise@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" - integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= - -is-regex@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= - dependencies: - has "^1.0.1" +is-potential-custom-element-name@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" + integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= is-regexp@^1.0.0: version "1.0.0" @@ -3443,21 +4048,12 @@ is-stream@^1.1.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= -is-svg@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9" - integrity sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk= - dependencies: - html-comment-regex "^1.1.0" - -is-symbol@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" - integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== - dependencies: - has-symbols "^1.0.0" +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== -is-typedarray@~1.0.0: +is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= @@ -3467,7 +4063,7 @@ is-utf8@^0.2.0: resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= -is-windows@^1.0.2: +is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== @@ -3477,6 +4073,13 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= +is-wsl@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -3504,413 +4107,412 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -istanbul-lib-coverage@^2.0.2, 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-coverage@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" + integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== -istanbul-lib-instrument@^3.0.1, 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-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" + integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== + dependencies: + "@babel/core" "^7.7.5" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.0.0" + semver "^6.3.0" -istanbul-lib-report@^2.0.4: - version "2.0.8" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" - integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== dependencies: - istanbul-lib-coverage "^2.0.5" - make-dir "^2.1.0" - supports-color "^6.1.0" + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" -istanbul-lib-source-maps@^3.0.1: - version "3.0.6" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" - integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== +istanbul-lib-source-maps@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" + integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== dependencies: debug "^4.1.1" - istanbul-lib-coverage "^2.0.5" - make-dir "^2.1.0" - rimraf "^2.6.3" + istanbul-lib-coverage "^3.0.0" source-map "^0.6.1" -istanbul-reports@^2.1.1: - version "2.2.6" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.6.tgz#7b4f2660d82b29303a8fe6091f8ca4bf058da1af" - integrity sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA== - dependencies: - handlebars "^4.1.2" - -jest-changed-files@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.8.0.tgz#7e7eb21cf687587a85e50f3d249d1327e15b157b" - integrity sha512-qgANC1Yrivsq+UrLXsvJefBKVoCsKB0Hv+mBb6NMjjZ90wwxCDmU3hsCXBya30cH+LnPYjwgcU65i6yJ5Nfuug== - dependencies: - "@jest/types" "^24.8.0" - execa "^1.0.0" - throat "^4.0.0" - -jest-cli@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.8.0.tgz#b075ac914492ed114fa338ade7362a301693e989" - integrity sha512-+p6J00jSMPQ116ZLlHJJvdf8wbjNbZdeSX9ptfHX06/MSNaXmKihQzx5vQcw0q2G6JsdVkUIdWbOWtSnaYs3yA== - dependencies: - "@jest/core" "^24.8.0" - "@jest/test-result" "^24.8.0" - "@jest/types" "^24.8.0" - chalk "^2.0.1" +istanbul-reports@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" + integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jest-changed-files@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.1.0.tgz#de66b0f30453bca2aff98e9400f75905da495305" + integrity sha512-HS5MIJp3B8t0NRKGMCZkcDUZo36mVRvrDETl81aqljT1S9tqiHRSpyoOvWg9ZilzZG9TDisDNaN1IXm54fLRZw== + dependencies: + "@jest/types" "^26.1.0" + execa "^4.0.0" + throat "^5.0.0" + +jest-cli@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.1.0.tgz#eb9ec8a18cf3b6aa556d9deaa9e24be12b43ad87" + integrity sha512-Imumvjgi3rU7stq6SJ1JUEMaV5aAgJYXIs0jPqdUnF47N/Tk83EXfmtvNKQ+SnFVI6t6mDOvfM3aA9Sg6kQPSw== + dependencies: + "@jest/core" "^26.1.0" + "@jest/test-result" "^26.1.0" + "@jest/types" "^26.1.0" + chalk "^4.0.0" exit "^0.1.2" - import-local "^2.0.0" + graceful-fs "^4.2.4" + import-local "^3.0.2" is-ci "^2.0.0" - jest-config "^24.8.0" - jest-util "^24.8.0" - jest-validate "^24.8.0" + jest-config "^26.1.0" + jest-util "^26.1.0" + jest-validate "^26.1.0" prompts "^2.0.1" - realpath-native "^1.1.0" - yargs "^12.0.2" + yargs "^15.3.1" -jest-config@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.8.0.tgz#77db3d265a6f726294687cbbccc36f8a76ee0f4f" - integrity sha512-Czl3Nn2uEzVGsOeaewGWoDPD8GStxCpAe0zOYs2x2l0fZAgPbCr3uwUkgNKV3LwE13VXythM946cd5rdGkkBZw== +jest-config@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.1.0.tgz#9074f7539acc185e0113ad6d22ed589c16a37a73" + integrity sha512-ONTGeoMbAwGCdq4WuKkMcdMoyfs5CLzHEkzFOlVvcDXufZSaIWh/OXMLa2fwKXiOaFcqEw8qFr4VOKJQfn4CVw== dependencies: "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^24.8.0" - "@jest/types" "^24.8.0" - babel-jest "^24.8.0" - chalk "^2.0.1" + "@jest/test-sequencer" "^26.1.0" + "@jest/types" "^26.1.0" + babel-jest "^26.1.0" + chalk "^4.0.0" + deepmerge "^4.2.2" glob "^7.1.1" - jest-environment-jsdom "^24.8.0" - jest-environment-node "^24.8.0" - jest-get-type "^24.8.0" - jest-jasmine2 "^24.8.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.8.0" - jest-util "^24.8.0" - jest-validate "^24.8.0" - micromatch "^3.1.10" - pretty-format "^24.8.0" - realpath-native "^1.1.0" - -jest-diff@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.8.0.tgz#146435e7d1e3ffdf293d53ff97e193f1d1546172" - integrity sha512-wxetCEl49zUpJ/bvUmIFjd/o52J+yWcoc5ZyPq4/W1LUKGEhRYDIbP1KcF6t+PvqNrGAFk4/JhtxDq/Nnzs66g== - dependencies: - chalk "^2.0.1" - diff-sequences "^24.3.0" - jest-get-type "^24.8.0" - pretty-format "^24.8.0" - -jest-docblock@^24.3.0: - version "24.3.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.3.0.tgz#b9c32dac70f72e4464520d2ba4aec02ab14db5dd" - integrity sha512-nlANmF9Yq1dufhFlKG9rasfQlrY7wINJbo3q01tu56Jv5eBU5jirylhF2O5ZBnLxzOVBGRDz/9NAwNyBtG4Nyg== - dependencies: - detect-newline "^2.1.0" - -jest-each@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.8.0.tgz#a05fd2bf94ddc0b1da66c6d13ec2457f35e52775" - integrity sha512-NrwK9gaL5+XgrgoCsd9svsoWdVkK4gnvyhcpzd6m487tXHqIdYeykgq3MKI1u4I+5Zf0tofr70at9dWJDeb+BA== - dependencies: - "@jest/types" "^24.8.0" - chalk "^2.0.1" - jest-get-type "^24.8.0" - jest-util "^24.8.0" - pretty-format "^24.8.0" - -jest-environment-jsdom@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.8.0.tgz#300f6949a146cabe1c9357ad9e9ecf9f43f38857" - integrity sha512-qbvgLmR7PpwjoFjM/sbuqHJt/NCkviuq9vus9NBn/76hhSidO+Z6Bn9tU8friecegbJL8gzZQEMZBQlFWDCwAQ== - dependencies: - "@jest/environment" "^24.8.0" - "@jest/fake-timers" "^24.8.0" - "@jest/types" "^24.8.0" - jest-mock "^24.8.0" - jest-util "^24.8.0" - jsdom "^11.5.1" - -jest-environment-node@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.8.0.tgz#d3f726ba8bc53087a60e7a84ca08883a4c892231" - integrity sha512-vIGUEScd1cdDgR6sqn2M08sJTRLQp6Dk/eIkCeO4PFHxZMOgy+uYLPMC4ix3PEfM5Au/x3uQ/5Tl0DpXXZsJ/Q== - dependencies: - "@jest/environment" "^24.8.0" - "@jest/fake-timers" "^24.8.0" - "@jest/types" "^24.8.0" - jest-mock "^24.8.0" - jest-util "^24.8.0" - -jest-get-type@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.8.0.tgz#a7440de30b651f5a70ea3ed7ff073a32dfe646fc" - integrity sha512-RR4fo8jEmMD9zSz2nLbs2j0zvPpk/KCEz3a62jJWbd2ayNo0cb+KFRxPHVhE4ZmgGJEQp0fosmNz84IfqM8cMQ== - -jest-haste-map@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.8.0.tgz#51794182d877b3ddfd6e6d23920e3fe72f305800" - integrity sha512-ZBPRGHdPt1rHajWelXdqygIDpJx8u3xOoLyUBWRW28r3tagrgoepPrzAozW7kW9HrQfhvmiv1tncsxqHJO1onQ== - dependencies: - "@jest/types" "^24.8.0" - anymatch "^2.0.0" + graceful-fs "^4.2.4" + jest-environment-jsdom "^26.1.0" + jest-environment-node "^26.1.0" + jest-get-type "^26.0.0" + jest-jasmine2 "^26.1.0" + jest-regex-util "^26.0.0" + jest-resolve "^26.1.0" + jest-util "^26.1.0" + jest-validate "^26.1.0" + micromatch "^4.0.2" + pretty-format "^26.1.0" + +jest-diff@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.1.0.tgz#00a549bdc936c9691eb4dc25d1fbd78bf456abb2" + integrity sha512-GZpIcom339y0OXznsEKjtkfKxNdg7bVbEofK8Q6MnevTIiR1jNhDWKhRX6X0SDXJlwn3dy59nZ1z55fLkAqPWg== + dependencies: + chalk "^4.0.0" + diff-sequences "^26.0.0" + jest-get-type "^26.0.0" + pretty-format "^26.1.0" + +jest-docblock@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" + integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w== + dependencies: + detect-newline "^3.0.0" + +jest-each@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.1.0.tgz#e35449875009a22d74d1bda183b306db20f286f7" + integrity sha512-lYiSo4Igr81q6QRsVQq9LIkJW0hZcKxkIkHzNeTMPENYYDw/W/Raq28iJ0sLlNFYz2qxxeLnc5K2gQoFYlu2bA== + dependencies: + "@jest/types" "^26.1.0" + chalk "^4.0.0" + jest-get-type "^26.0.0" + jest-util "^26.1.0" + pretty-format "^26.1.0" + +jest-environment-jsdom@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.1.0.tgz#9dc7313ffe1b59761dad1fedb76e2503e5d37c5b" + integrity sha512-dWfiJ+spunVAwzXbdVqPH1LbuJW/kDL+FyqgA5YzquisHqTi0g9hquKif9xKm7c1bKBj6wbmJuDkeMCnxZEpUw== + dependencies: + "@jest/environment" "^26.1.0" + "@jest/fake-timers" "^26.1.0" + "@jest/types" "^26.1.0" + jest-mock "^26.1.0" + jest-util "^26.1.0" + jsdom "^16.2.2" + +jest-environment-node@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.1.0.tgz#8bb387b3eefb132eab7826f9a808e4e05618960b" + integrity sha512-DNm5x1aQH0iRAe9UYAkZenuzuJ69VKzDCAYISFHQ5i9e+2Tbeu2ONGY7YStubCLH8a1wdKBgqScYw85+ySxqxg== + dependencies: + "@jest/environment" "^26.1.0" + "@jest/fake-timers" "^26.1.0" + "@jest/types" "^26.1.0" + jest-mock "^26.1.0" + jest-util "^26.1.0" + +jest-get-type@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.0.0.tgz#381e986a718998dbfafcd5ec05934be538db4039" + integrity sha512-zRc1OAPnnws1EVfykXOj19zo2EMw5Hi6HLbFCSjpuJiXtOWAYIjNsHVSbpQ8bDX7L5BGYGI8m+HmKdjHYFF0kg== + +jest-haste-map@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.1.0.tgz#ef31209be73f09b0d9445e7d213e1b53d0d1476a" + integrity sha512-WeBS54xCIz9twzkEdm6+vJBXgRBQfdbbXD0dk8lJh7gLihopABlJmIQFdWSDDtuDe4PRiObsjZSUjbJ1uhWEpA== + dependencies: + "@jest/types" "^26.1.0" + "@types/graceful-fs" "^4.1.2" + anymatch "^3.0.3" fb-watchman "^2.0.0" - graceful-fs "^4.1.15" - invariant "^2.2.4" - jest-serializer "^24.4.0" - jest-util "^24.8.0" - jest-worker "^24.6.0" - micromatch "^3.1.10" + graceful-fs "^4.2.4" + jest-serializer "^26.1.0" + jest-util "^26.1.0" + jest-worker "^26.1.0" + micromatch "^4.0.2" sane "^4.0.3" walker "^1.0.7" + which "^2.0.2" optionalDependencies: - fsevents "^1.2.7" + fsevents "^2.1.2" -jest-jasmine2@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.8.0.tgz#a9c7e14c83dd77d8b15e820549ce8987cc8cd898" - integrity sha512-cEky88npEE5LKd5jPpTdDCLvKkdyklnaRycBXL6GNmpxe41F0WN44+i7lpQKa/hcbXaQ+rc9RMaM4dsebrYong== +jest-jasmine2@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.1.0.tgz#4dfe349b2b2d3c6b3a27c024fd4cb57ac0ed4b6f" + integrity sha512-1IPtoDKOAG+MeBrKvvuxxGPJb35MTTRSDglNdWWCndCB3TIVzbLThRBkwH9P081vXLgiJHZY8Bz3yzFS803xqQ== dependencies: "@babel/traverse" "^7.1.0" - "@jest/environment" "^24.8.0" - "@jest/test-result" "^24.8.0" - "@jest/types" "^24.8.0" - chalk "^2.0.1" + "@jest/environment" "^26.1.0" + "@jest/source-map" "^26.1.0" + "@jest/test-result" "^26.1.0" + "@jest/types" "^26.1.0" + chalk "^4.0.0" co "^4.6.0" - expect "^24.8.0" + expect "^26.1.0" is-generator-fn "^2.0.0" - jest-each "^24.8.0" - jest-matcher-utils "^24.8.0" - jest-message-util "^24.8.0" - jest-runtime "^24.8.0" - jest-snapshot "^24.8.0" - jest-util "^24.8.0" - pretty-format "^24.8.0" - throat "^4.0.0" - -jest-leak-detector@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.8.0.tgz#c0086384e1f650c2d8348095df769f29b48e6980" - integrity sha512-cG0yRSK8A831LN8lIHxI3AblB40uhv0z+SsQdW3GoMMVcK+sJwrIIyax5tu3eHHNJ8Fu6IMDpnLda2jhn2pD/g== - dependencies: - pretty-format "^24.8.0" - -jest-matcher-utils@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.8.0.tgz#2bce42204c9af12bde46f83dc839efe8be832495" - integrity sha512-lex1yASY51FvUuHgm0GOVj7DCYEouWSlIYmCW7APSqB9v8mXmKSn5+sWVF0MhuASG0bnYY106/49JU1FZNl5hw== - dependencies: - chalk "^2.0.1" - jest-diff "^24.8.0" - jest-get-type "^24.8.0" - pretty-format "^24.8.0" - -jest-message-util@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.8.0.tgz#0d6891e72a4beacc0292b638685df42e28d6218b" - integrity sha512-p2k71rf/b6ns8btdB0uVdljWo9h0ovpnEe05ZKWceQGfXYr4KkzgKo3PBi8wdnd9OtNh46VpNIJynUn/3MKm1g== + jest-each "^26.1.0" + jest-matcher-utils "^26.1.0" + jest-message-util "^26.1.0" + jest-runtime "^26.1.0" + jest-snapshot "^26.1.0" + jest-util "^26.1.0" + pretty-format "^26.1.0" + throat "^5.0.0" + +jest-leak-detector@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.1.0.tgz#039c3a07ebcd8adfa984b6ac015752c35792e0a6" + integrity sha512-dsMnKF+4BVOZwvQDlgn3MG+Ns4JuLv8jNvXH56bgqrrboyCbI1rQg6EI5rs+8IYagVcfVP2yZFKfWNZy0rK0Hw== + dependencies: + jest-get-type "^26.0.0" + pretty-format "^26.1.0" + +jest-matcher-utils@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.1.0.tgz#cf75a41bd413dda784f022de5a65a2a5c73a5c92" + integrity sha512-PW9JtItbYvES/xLn5mYxjMd+Rk+/kIt88EfH3N7w9KeOrHWaHrdYPnVHndGbsFGRJ2d5gKtwggCvkqbFDoouQA== + dependencies: + chalk "^4.0.0" + jest-diff "^26.1.0" + jest-get-type "^26.0.0" + pretty-format "^26.1.0" + +jest-message-util@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.1.0.tgz#52573fbb8f5cea443c4d1747804d7a238a3e233c" + integrity sha512-dY0+UlldiAJwNDJ08SF0HdF32g9PkbF2NRK/+2iMPU40O6q+iSn1lgog/u0UH8ksWoPv0+gNq8cjhYO2MFtT0g== dependencies: "@babel/code-frame" "^7.0.0" - "@jest/test-result" "^24.8.0" - "@jest/types" "^24.8.0" + "@jest/types" "^26.1.0" "@types/stack-utils" "^1.0.1" - chalk "^2.0.1" - micromatch "^3.1.10" - slash "^2.0.0" - stack-utils "^1.0.1" + chalk "^4.0.0" + graceful-fs "^4.2.4" + micromatch "^4.0.2" + slash "^3.0.0" + stack-utils "^2.0.2" -jest-mock@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.8.0.tgz#2f9d14d37699e863f1febf4e4d5a33b7fdbbde56" - integrity sha512-6kWugwjGjJw+ZkK4mDa0Df3sDlUTsV47MSrT0nGQ0RBWJbpODDQ8MHDVtGtUYBne3IwZUhtB7elxHspU79WH3A== +jest-mock@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.1.0.tgz#80d8286da1f05a345fbad1bfd6fa49a899465d3d" + integrity sha512-1Rm8EIJ3ZFA8yCIie92UbxZWj9SuVmUGcyhLHyAhY6WI3NIct38nVcfOPWhJteqSn8V8e3xOMha9Ojfazfpovw== dependencies: - "@jest/types" "^24.8.0" + "@jest/types" "^26.1.0" jest-pnp-resolver@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== -jest-regex-util@^24.3.0: - version "24.3.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.3.0.tgz#d5a65f60be1ae3e310d5214a0307581995227b36" - integrity sha512-tXQR1NEOyGlfylyEjg1ImtScwMq8Oh3iJbGTjN7p0J23EuVX1MA8rwU69K4sLbCmwzgCUbVkm0FkSF9TdzOhtg== +jest-regex-util@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" + integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== -jest-resolve-dependencies@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.8.0.tgz#19eec3241f2045d3f990dba331d0d7526acff8e0" - integrity sha512-hyK1qfIf/krV+fSNyhyJeq3elVMhK9Eijlwy+j5jqmZ9QsxwKBiP6qukQxaHtK8k6zql/KYWwCTQ+fDGTIJauw== +jest-resolve-dependencies@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.1.0.tgz#1ce36472f864a5dadf7dc82fa158e1c77955691b" + integrity sha512-fQVEPHHQ1JjHRDxzlLU/buuQ9om+hqW6Vo928aa4b4yvq4ZHBtRSDsLdKQLuCqn5CkTVpYZ7ARh2fbA8WkRE6g== dependencies: - "@jest/types" "^24.8.0" - jest-regex-util "^24.3.0" - jest-snapshot "^24.8.0" + "@jest/types" "^26.1.0" + jest-regex-util "^26.0.0" + jest-snapshot "^26.1.0" -jest-resolve@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.8.0.tgz#84b8e5408c1f6a11539793e2b5feb1b6e722439f" - integrity sha512-+hjSzi1PoRvnuOICoYd5V/KpIQmkAsfjFO71458hQ2Whi/yf1GDeBOFj8Gxw4LrApHsVJvn5fmjcPdmoUHaVKw== +jest-resolve@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.1.0.tgz#a530eaa302b1f6fa0479079d1561dd69abc00e68" + integrity sha512-KsY1JV9FeVgEmwIISbZZN83RNGJ1CC+XUCikf/ZWJBX/tO4a4NvA21YixokhdR9UnmPKKAC4LafVixJBrwlmfg== dependencies: - "@jest/types" "^24.8.0" - browser-resolve "^1.11.3" - chalk "^2.0.1" + "@jest/types" "^26.1.0" + chalk "^4.0.0" + graceful-fs "^4.2.4" jest-pnp-resolver "^1.2.1" - realpath-native "^1.1.0" + jest-util "^26.1.0" + read-pkg-up "^7.0.1" + resolve "^1.17.0" + slash "^3.0.0" -jest-runner@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.8.0.tgz#4f9ae07b767db27b740d7deffad0cf67ccb4c5bb" - integrity sha512-utFqC5BaA3JmznbissSs95X1ZF+d+4WuOWwpM9+Ak356YtMhHE/GXUondZdcyAAOTBEsRGAgH/0TwLzfI9h7ow== +jest-runner@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.1.0.tgz#457f7fc522afe46ca6db1dccf19f87f500b3288d" + integrity sha512-elvP7y0fVDREnfqit0zAxiXkDRSw6dgCkzPCf1XvIMnSDZ8yogmSKJf192dpOgnUVykmQXwYYJnCx641uLTgcw== dependencies: - "@jest/console" "^24.7.1" - "@jest/environment" "^24.8.0" - "@jest/test-result" "^24.8.0" - "@jest/types" "^24.8.0" - chalk "^2.4.2" + "@jest/console" "^26.1.0" + "@jest/environment" "^26.1.0" + "@jest/test-result" "^26.1.0" + "@jest/types" "^26.1.0" + chalk "^4.0.0" exit "^0.1.2" - graceful-fs "^4.1.15" - jest-config "^24.8.0" - jest-docblock "^24.3.0" - jest-haste-map "^24.8.0" - jest-jasmine2 "^24.8.0" - jest-leak-detector "^24.8.0" - jest-message-util "^24.8.0" - jest-resolve "^24.8.0" - jest-runtime "^24.8.0" - jest-util "^24.8.0" - jest-worker "^24.6.0" + graceful-fs "^4.2.4" + jest-config "^26.1.0" + jest-docblock "^26.0.0" + jest-haste-map "^26.1.0" + jest-jasmine2 "^26.1.0" + jest-leak-detector "^26.1.0" + jest-message-util "^26.1.0" + jest-resolve "^26.1.0" + jest-runtime "^26.1.0" + jest-util "^26.1.0" + jest-worker "^26.1.0" source-map-support "^0.5.6" - throat "^4.0.0" - -jest-runtime@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.8.0.tgz#05f94d5b05c21f6dc54e427cd2e4980923350620" - integrity sha512-Mq0aIXhvO/3bX44ccT+czU1/57IgOMyy80oM0XR/nyD5zgBcesF84BPabZi39pJVA6UXw+fY2Q1N+4BiVUBWOA== - dependencies: - "@jest/console" "^24.7.1" - "@jest/environment" "^24.8.0" - "@jest/source-map" "^24.3.0" - "@jest/transform" "^24.8.0" - "@jest/types" "^24.8.0" - "@types/yargs" "^12.0.2" - chalk "^2.0.1" + throat "^5.0.0" + +jest-runtime@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.1.0.tgz#45a37af42115f123ed5c51f126c05502da2469cb" + integrity sha512-1qiYN+EZLmG1QV2wdEBRf+Ci8i3VSfIYLF02U18PiUDrMbhfpN/EAMMkJtT02jgJUoaEOpHAIXG6zS3QRMzRmA== + dependencies: + "@jest/console" "^26.1.0" + "@jest/environment" "^26.1.0" + "@jest/fake-timers" "^26.1.0" + "@jest/globals" "^26.1.0" + "@jest/source-map" "^26.1.0" + "@jest/test-result" "^26.1.0" + "@jest/transform" "^26.1.0" + "@jest/types" "^26.1.0" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.3" - graceful-fs "^4.1.15" - jest-config "^24.8.0" - jest-haste-map "^24.8.0" - jest-message-util "^24.8.0" - jest-mock "^24.8.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.8.0" - jest-snapshot "^24.8.0" - jest-util "^24.8.0" - jest-validate "^24.8.0" - realpath-native "^1.1.0" - slash "^2.0.0" - strip-bom "^3.0.0" - yargs "^12.0.2" - -jest-serializer@^24.4.0: - version "24.4.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.4.0.tgz#f70c5918c8ea9235ccb1276d232e459080588db3" - integrity sha512-k//0DtglVstc1fv+GY/VHDIjrtNjdYvYjMlbLUed4kxrE92sIUewOi5Hj3vrpB8CXfkJntRPDRjCrCvUhBdL8Q== - -jest-snapshot@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.8.0.tgz#3bec6a59da2ff7bc7d097a853fb67f9d415cb7c6" - integrity sha512-5ehtWoc8oU9/cAPe6fez6QofVJLBKyqkY2+TlKTOf0VllBB/mqUNdARdcjlZrs9F1Cv+/HKoCS/BknT0+tmfPg== - dependencies: - "@babel/types" "^7.0.0" - "@jest/types" "^24.8.0" - chalk "^2.0.1" - expect "^24.8.0" - jest-diff "^24.8.0" - jest-matcher-utils "^24.8.0" - jest-message-util "^24.8.0" - jest-resolve "^24.8.0" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - pretty-format "^24.8.0" - semver "^5.5.0" + graceful-fs "^4.2.4" + jest-config "^26.1.0" + jest-haste-map "^26.1.0" + jest-message-util "^26.1.0" + jest-mock "^26.1.0" + jest-regex-util "^26.0.0" + jest-resolve "^26.1.0" + jest-snapshot "^26.1.0" + jest-util "^26.1.0" + jest-validate "^26.1.0" + slash "^3.0.0" + strip-bom "^4.0.0" + yargs "^15.3.1" -jest-util@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.8.0.tgz#41f0e945da11df44cc76d64ffb915d0716f46cd1" - integrity sha512-DYZeE+XyAnbNt0BG1OQqKy/4GVLPtzwGx5tsnDrFcax36rVE3lTA5fbvgmbVPUZf9w77AJ8otqR4VBbfFJkUZA== +jest-serializer@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.1.0.tgz#72a394531fc9b08e173dc7d297440ac610d95022" + integrity sha512-eqZOQG/0+MHmr25b2Z86g7+Kzd5dG9dhCiUoyUNJPgiqi38DqbDEOlHcNijyfZoj74soGBohKBZuJFS18YTJ5w== dependencies: - "@jest/console" "^24.7.1" - "@jest/fake-timers" "^24.8.0" - "@jest/source-map" "^24.3.0" - "@jest/test-result" "^24.8.0" - "@jest/types" "^24.8.0" - callsites "^3.0.0" - chalk "^2.0.1" - graceful-fs "^4.1.15" - is-ci "^2.0.0" - mkdirp "^0.5.1" - slash "^2.0.0" - source-map "^0.6.0" + graceful-fs "^4.2.4" -jest-validate@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.8.0.tgz#624c41533e6dfe356ffadc6e2423a35c2d3b4849" - integrity sha512-+/N7VOEMW1Vzsrk3UWBDYTExTPwf68tavEPKDnJzrC6UlHtUDU/fuEdXqFoHzv9XnQ+zW6X3qMZhJ3YexfeLDA== +jest-snapshot@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.1.0.tgz#c36ed1e0334bd7bd2fe5ad07e93a364ead7e1349" + integrity sha512-YhSbU7eMTVQO/iRbNs8j0mKRxGp4plo7sJ3GzOQ0IYjvsBiwg0T1o0zGQAYepza7lYHuPTrG5J2yDd0CE2YxSw== dependencies: - "@jest/types" "^24.8.0" - camelcase "^5.0.0" - chalk "^2.0.1" - jest-get-type "^24.8.0" - leven "^2.1.0" - pretty-format "^24.8.0" - -jest-watcher@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.8.0.tgz#58d49915ceddd2de85e238f6213cef1c93715de4" - integrity sha512-SBjwHt5NedQoVu54M5GEx7cl7IGEFFznvd/HNT8ier7cCAx/Qgu9ZMlaTQkvK22G1YOpcWBLQPFSImmxdn3DAw== - dependencies: - "@jest/test-result" "^24.8.0" - "@jest/types" "^24.8.0" - "@types/yargs" "^12.0.9" - ansi-escapes "^3.0.0" - chalk "^2.0.1" - jest-util "^24.8.0" - string-length "^2.0.0" - -jest-worker@^24.6.0: - version "24.6.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.6.0.tgz#7f81ceae34b7cde0c9827a6980c35b7cdc0161b3" - integrity sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ== - dependencies: - merge-stream "^1.0.1" - supports-color "^6.1.0" + "@babel/types" "^7.0.0" + "@jest/types" "^26.1.0" + "@types/prettier" "^2.0.0" + chalk "^4.0.0" + expect "^26.1.0" + graceful-fs "^4.2.4" + jest-diff "^26.1.0" + jest-get-type "^26.0.0" + jest-haste-map "^26.1.0" + jest-matcher-utils "^26.1.0" + jest-message-util "^26.1.0" + jest-resolve "^26.1.0" + natural-compare "^1.4.0" + pretty-format "^26.1.0" + semver "^7.3.2" -jest@^24.6.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-24.8.0.tgz#d5dff1984d0d1002196e9b7f12f75af1b2809081" - integrity sha512-o0HM90RKFRNWmAWvlyV8i5jGZ97pFwkeVoGvPW1EtLTgJc2+jcuqcbbqcSZLE/3f2S5pt0y2ZBETuhpWNl1Reg== +jest-util@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.1.0.tgz#80e85d4ba820decacf41a691c2042d5276e5d8d8" + integrity sha512-rNMOwFQevljfNGvbzNQAxdmXQ+NawW/J72dmddsK0E8vgxXCMtwQ/EH0BiWEIxh0hhMcTsxwAxINt7Lh46Uzbg== dependencies: - import-local "^2.0.0" - jest-cli "^24.8.0" - -js-base64@^2.1.8, js-base64@^2.1.9: + "@jest/types" "^26.1.0" + chalk "^4.0.0" + graceful-fs "^4.2.4" + is-ci "^2.0.0" + micromatch "^4.0.2" + +jest-validate@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.1.0.tgz#942c85ad3d60f78250c488a7f85d8f11a29788e7" + integrity sha512-WPApOOnXsiwhZtmkDsxnpye+XLb/tUISP+H6cHjfUIXvlG+eKwP+isnivsxlHCPaO9Q5wvbhloIBkdF3qUn+Nw== + dependencies: + "@jest/types" "^26.1.0" + camelcase "^6.0.0" + chalk "^4.0.0" + jest-get-type "^26.0.0" + leven "^3.1.0" + pretty-format "^26.1.0" + +jest-watcher@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.1.0.tgz#99812a0cd931f0cb3d153180426135ab83e4d8f2" + integrity sha512-ffEOhJl2EvAIki613oPsSG11usqnGUzIiK7MMX6hE4422aXOcVEG3ySCTDFLn1+LZNXGPE8tuJxhp8OBJ1pgzQ== + dependencies: + "@jest/test-result" "^26.1.0" + "@jest/types" "^26.1.0" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + jest-util "^26.1.0" + string-length "^4.0.1" + +jest-worker@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.1.0.tgz#65d5641af74e08ccd561c240e7db61284f82f33d" + integrity sha512-Z9P5pZ6UC+kakMbNJn+tA2RdVdNX5WH1x+5UCBZ9MxIK24pjYtFt96fK+UwBTrjLYm232g1xz0L3eTh51OW+yQ== + dependencies: + merge-stream "^2.0.0" + supports-color "^7.0.0" + +jest@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-26.1.0.tgz#2f3aa7bcffb9bfd025473f83bbbf46a3af026263" + integrity sha512-LIti8jppw5BcQvmNJe4w2g1N/3V68HUfAv9zDVm7v+VAtQulGhH0LnmmiVkbNE4M4I43Bj2fXPiBGKt26k9tHw== + dependencies: + "@jest/core" "^26.1.0" + import-local "^3.0.2" + jest-cli "^26.1.0" + +js-base64@^2.1.8: version "2.5.1" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121" integrity sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw== -js-levenshtein@^1.1.3: - version "1.1.6" - resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" - integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g== - js-snakecase@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/js-snakecase/-/js-snakecase-1.2.0.tgz#61cf6f3d2e931757a49ce05197e9acd1448192b8" @@ -3921,11 +4523,6 @@ js-snakecase@^1.2.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= - js-yaml@^3.13.1: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" @@ -3934,49 +4531,41 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@~3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" - integrity sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A= - dependencies: - argparse "^1.0.7" - esprima "^2.6.0" - jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= -jsdom@^11.5.1: - version "11.12.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" - integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== - dependencies: - abab "^2.0.0" - acorn "^5.5.3" - acorn-globals "^4.1.0" - array-equal "^1.0.0" - cssom ">= 0.3.2 < 0.4.0" - cssstyle "^1.0.0" - data-urls "^1.0.0" - domexception "^1.0.1" - escodegen "^1.9.1" - html-encoding-sniffer "^1.0.2" - left-pad "^1.3.0" - nwsapi "^2.0.7" - parse5 "4.0.0" - pn "^1.1.0" - request "^2.87.0" - request-promise-native "^1.0.5" - sax "^1.2.4" - symbol-tree "^3.2.2" - tough-cookie "^2.3.4" - w3c-hr-time "^1.0.1" - webidl-conversions "^4.0.2" - whatwg-encoding "^1.0.3" - whatwg-mimetype "^2.1.0" - whatwg-url "^6.4.1" - ws "^5.2.0" +jsdom@^16.2.2: + version "16.2.2" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.2.2.tgz#76f2f7541646beb46a938f5dc476b88705bedf2b" + integrity sha512-pDFQbcYtKBHxRaP55zGXCJWgFHkDAYbKcsXEK/3Icu9nKYZkutUXfLBwbD+09XDutkYSHcgfQLZ0qvpAAm9mvg== + dependencies: + abab "^2.0.3" + acorn "^7.1.1" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.2.0" + data-urls "^2.0.0" + decimal.js "^10.2.0" + domexception "^2.0.1" + escodegen "^1.14.1" + html-encoding-sniffer "^2.0.1" + is-potential-custom-element-name "^1.0.0" + nwsapi "^2.2.0" + parse5 "5.1.1" + request "^2.88.2" + request-promise-native "^1.0.8" + saxes "^5.0.0" + symbol-tree "^3.2.4" + tough-cookie "^3.0.1" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.0.0" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" + ws "^7.2.3" xml-name-validator "^3.0.0" jsesc@^2.5.1: @@ -3989,21 +4578,11 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= -json-loader@^0.5.4: - version "0.5.7" - resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" - integrity sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w== - -json-parse-better-errors@^1.0.1: +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== -json-schema-traverse@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" - integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A= - json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -4019,11 +4598,6 @@ json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= -json5@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - json5@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" @@ -4038,6 +4612,13 @@ json5@^2.1.0: dependencies: minimist "^1.2.0" +json5@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" + integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== + dependencies: + minimist "^1.2.5" + jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -4077,34 +4658,22 @@ kleur@^3.0.2: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== -lazy-cache@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" - integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= +klona@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/klona/-/klona-1.1.1.tgz#8b1e93808ef602a0cc4fb438ba72eb00594e9802" + integrity sha512-o/QDZouW8bt6cejtMQhw3qyqi4aTlrB7sbqzQ8+PdI/qJ3WMbmSOA//4ClIevCQp0DPUU9l1pxGRcGMkkxb8TA== -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= - dependencies: - invert-kv "^1.0.0" +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== +levenary@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" + integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== dependencies: - invert-kv "^2.0.0" - -left-pad@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" - integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== - -leven@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" - integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= + leven "^3.1.0" levn@~0.3.0: version "0.3.0" @@ -4114,80 +4683,45 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -lint-staged@^8.1.7: - version "8.1.7" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-8.1.7.tgz#a8988bc83bdffa97d04adb09dbc0b1f3a58fa6fc" - integrity sha512-egT0goFhIFoOGk6rasPngTFh2qDqxZddM0PwI58oi66RxCDcn5uDwxmiasWIF0qGnchHSYVJ8HPRD5LrFo7TKA== - dependencies: - chalk "^2.3.1" - commander "^2.14.1" - cosmiconfig "^5.2.0" - debug "^3.1.0" +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + +lint-staged@^10.2.11: + version "10.2.11" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.2.11.tgz#713c80877f2dc8b609b05bc59020234e766c9720" + integrity sha512-LRRrSogzbixYaZItE2APaS4l2eJMjjf5MbclRZpLJtcQJShcvUzKXsNeZgsLIZ0H0+fg2tL4B59fU9wHIHtFIA== + dependencies: + chalk "^4.0.0" + cli-truncate "2.1.0" + commander "^5.1.0" + cosmiconfig "^6.0.0" + debug "^4.1.1" dedent "^0.7.0" - del "^3.0.0" - execa "^1.0.0" - find-parent-dir "^0.3.0" - g-status "^2.0.2" - is-glob "^4.0.0" - is-windows "^1.0.2" - listr "^0.14.2" - listr-update-renderer "^0.5.0" - lodash "^4.17.11" - log-symbols "^2.2.0" - micromatch "^3.1.8" - npm-which "^3.0.1" - p-map "^1.1.1" - path-is-inside "^1.0.2" - pify "^3.0.0" - please-upgrade-node "^3.0.2" - staged-git-files "1.1.2" - string-argv "^0.0.2" - stringify-object "^3.2.2" - yup "^0.27.0" - -listr-silent-renderer@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" - integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4= - -listr-update-renderer@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz#4ea8368548a7b8aecb7e06d8c95cb45ae2ede6a2" - integrity sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA== - dependencies: - chalk "^1.1.3" - cli-truncate "^0.2.1" - elegant-spinner "^1.0.1" - figures "^1.7.0" - indent-string "^3.0.0" - log-symbols "^1.0.2" - log-update "^2.3.0" - strip-ansi "^3.0.1" - -listr-verbose-renderer@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz#f1132167535ea4c1261102b9f28dac7cba1e03db" - integrity sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw== - dependencies: - chalk "^2.4.1" - cli-cursor "^2.1.0" - date-fns "^1.27.2" - figures "^2.0.0" - -listr@^0.14.2: - version "0.14.3" - resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586" - integrity sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA== - dependencies: - "@samverschueren/stream-to-observable" "^0.3.0" - is-observable "^1.1.0" - is-promise "^2.1.0" - is-stream "^1.1.0" - listr-silent-renderer "^1.1.1" - listr-update-renderer "^0.5.0" - listr-verbose-renderer "^0.5.0" - p-map "^2.0.0" - rxjs "^6.3.3" + enquirer "^2.3.5" + execa "^4.0.1" + listr2 "^2.1.0" + log-symbols "^4.0.0" + micromatch "^4.0.2" + normalize-path "^3.0.0" + please-upgrade-node "^3.2.0" + string-argv "0.3.1" + stringify-object "^3.3.0" + +listr2@^2.1.0: + version "2.1.9" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-2.1.9.tgz#ec4ba417831197f71f63d716ff8869b292be096b" + integrity sha512-29IJuXMIDV6GYAW3SGfRl56EInP2Hr7gk4GNUPjUFkSq6jpKHqr5OpH3z8r6yj0XvHBIkhFSE14ytFoBLBfCLA== + dependencies: + chalk "^4.0.0" + cli-truncate "^2.1.0" + figures "^3.2.0" + indent-string "^4.0.0" + log-update "^4.0.0" + p-map "^4.0.0" + rxjs "^6.5.5" + through "^2.3.8" load-json-file@^1.0.0: version "1.1.0" @@ -4200,32 +4734,12 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" -load-json-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" - integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - strip-bom "^3.0.0" - -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - -loader-runner@^2.3.0: +loader-runner@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== -loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0: +loader-utils@^1.1.0: version "1.2.3" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== @@ -4234,13 +4748,23 @@ loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0: emojis-list "^2.0.0" json5 "^1.0.1" -locate-path@^2.0.0: +loader-utils@^1.2.3, loader-utils@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + +loader-utils@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" + integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" locate-path@^3.0.0: version "3.0.0" @@ -4257,63 +4781,37 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= - -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= - lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= -lodash.tail@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664" - integrity sha1-0jM6NtnncXyK0vfKyv7HwytERmQ= - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= - lodash@^4.0.0, lodash@^4.17.11, lodash@~4.17.10: version "4.17.14" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.14.tgz#9ce487ae66c96254fe20b599f21b6816028078ba" integrity sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw== -log-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" - integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg= - dependencies: - chalk "^1.0.0" +lodash@^4.17.13, lodash@^4.17.15: + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== -log-symbols@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" - integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== +log-symbols@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" + integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== dependencies: - chalk "^2.0.1" + chalk "^4.0.0" -log-update@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" - integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg= +log-update@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" + integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== dependencies: - ansi-escapes "^3.0.0" - cli-cursor "^2.0.0" - wrap-ansi "^3.0.1" - -longest@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" - integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= + ansi-escapes "^4.3.0" + cli-cursor "^3.1.0" + slice-ansi "^4.0.0" + wrap-ansi "^6.2.0" loose-envify@^1.0.0: version "1.4.0" @@ -4338,7 +4836,14 @@ lru-cache@^4.0.1: pseudomap "^1.0.2" yallist "^2.1.2" -make-dir@^2.0.0, make-dir@^2.1.0: +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +make-dir@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== @@ -4346,6 +4851,13 @@ make-dir@^2.0.0, make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" +make-dir@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + makeerror@1.0.x: version "1.0.11" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" @@ -4353,13 +4865,6 @@ makeerror@1.0.x: dependencies: tmpl "1.0.x" -map-age-cleaner@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== - dependencies: - p-defer "^1.0.0" - map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -4377,18 +4882,6 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -matcher@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/matcher/-/matcher-1.1.1.tgz#51d8301e138f840982b338b116bb0c09af62c1c2" - integrity sha512-+BmqxWIubKTRKNWx/ahnCkk3mG8m7OturVlqq6HiojGJTd5hVYbgZm6WzcYPCoB+KBT4Vd6R7WSRG2OADNaCjg== - dependencies: - escape-string-regexp "^1.0.4" - -math-expression-evaluator@^1.2.14: - version "1.2.17" - resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" - integrity sha1-3oGf282E3M2PrlnGrreWFbnSZqw= - md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -4398,23 +4891,7 @@ md5.js@^1.3.4: inherits "^2.0.1" safe-buffer "^5.1.2" -mem@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" - integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= - dependencies: - mimic-fn "^1.0.0" - -mem@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== - dependencies: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" - -memory-fs@^0.4.0, memory-fs@~0.4.1: +memory-fs@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= @@ -4422,6 +4899,14 @@ memory-fs@^0.4.0, memory-fs@~0.4.1: errno "^0.1.3" readable-stream "^2.0.1" +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + meow@^3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" @@ -4438,14 +4923,12 @@ meow@^3.7.0: redent "^1.0.0" trim-newlines "^1.0.0" -merge-stream@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" - integrity sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE= - dependencies: - readable-stream "^2.0.1" +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: +micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -4464,6 +4947,14 @@ micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: snapdragon "^0.8.1" to-regex "^3.0.2" +micromatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + dependencies: + braces "^3.0.1" + picomatch "^2.0.5" + miller-rabin@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" @@ -4484,16 +4975,21 @@ mime-types@^2.1.12, mime-types@~2.1.19: dependencies: mime-db "1.40.0" -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - -mimic-fn@^2.0.0: +mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +mini-css-extract-plugin@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz#47f2cf07aa165ab35733b1fc97d4c46c0564339e" + integrity sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A== + dependencies: + loader-utils "^1.1.0" + normalize-url "1.9.1" + schema-utils "^1.0.0" + webpack-sources "^1.1.0" + minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -4521,10 +5017,10 @@ minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= +minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== minipass@^2.2.1, minipass@^2.3.4: version "2.3.5" @@ -4541,29 +5037,56 @@ minizlib@^1.1.1: dependencies: minipass "^2.2.1" +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + mixin-deep@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" - integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== dependencies: for-in "^1.0.2" is-extendable "^1.0.1" -mixin-object@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" - integrity sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4= - dependencies: - for-in "^0.1.3" - is-extendable "^0.1.1" - -"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: +"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= dependencies: minimist "0.0.8" +mkdirp@^0.5.3: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -4610,16 +5133,11 @@ needle@^2.2.1: iconv-lite "^0.4.4" sax "^1.2.4" -neo-async@^2.5.0, neo-async@^2.6.0: +neo-async@^2.5.0, neo-async@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== -next-tick@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" - integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= - ngmodal@ucfcdl/ngModal#v1.2.2: version "1.2.2" resolved "https://codeload.github.com/ucfcdl/ngModal/tar.gz/6abad982bdb8f258ffcdc20316a907c2292399d2" @@ -4652,10 +5170,10 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= -node-libs-browser@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.0.tgz#c72f60d9d46de08a940dedbb25f3ffa2f9bbaa77" - integrity sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA== +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== dependencies: assert "^1.1.1" browserify-zlib "^0.2.0" @@ -4667,7 +5185,7 @@ node-libs-browser@^2.0.0: events "^3.0.0" https-browserify "^1.0.0" os-browserify "^0.3.0" - path-browserify "0.0.0" + path-browserify "0.0.1" process "^0.11.10" punycode "^1.2.4" querystring-es3 "^0.2.0" @@ -4679,23 +5197,24 @@ node-libs-browser@^2.0.0: tty-browserify "0.0.0" url "^0.11.0" util "^0.11.0" - vm-browserify "0.0.4" + vm-browserify "^1.0.1" node-modules-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= -node-notifier@^5.2.1: - version "5.4.0" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.0.tgz#7b455fdce9f7de0c63538297354f3db468426e6a" - integrity sha512-SUDEb+o71XR5lXSTyivXd9J7fCloE3SyP4lSgt3lU2oSANiox+SxlNRGPjDKrwU1YN3ix2KN/VGGCg0t01rttQ== +node-notifier@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-7.0.1.tgz#a355e33e6bebacef9bf8562689aed0f4230ca6f9" + integrity sha512-VkzhierE7DBmQEElhTGJIoiZa1oqRijOtgOlsXg32KrJRXsPy0NXFBqWGW/wTswnJlDCs5viRYaqWguqzsKcmg== dependencies: growly "^1.3.0" - is-wsl "^1.1.0" - semver "^5.5.0" + is-wsl "^2.1.1" + semver "^7.2.1" shellwords "^0.1.1" - which "^1.3.0" + uuid "^7.0.3" + which "^2.0.2" node-pre-gyp@^0.12.0: version "0.12.0" @@ -4713,17 +5232,15 @@ node-pre-gyp@^0.12.0: semver "^5.3.0" tar "^4" -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-releases@^1.1.58: + version "1.1.58" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.58.tgz#8ee20eef30fa60e52755fcc0942def5a734fe935" + integrity sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg== -node-sass@^4.12.0: - version "4.12.0" - resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.12.0.tgz#0914f531932380114a30cc5fa4fa63233a25f017" - integrity sha512-A1Iv4oN+Iel6EPv77/HddXErL2a+gZ4uBeZUy+a8O35CFYTXhgA8MgLCWBtwpGZdCvTvQ9d+bQxX/QC36GDPpQ== +node-sass@^4.14.1: + version "4.14.1" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.14.1.tgz#99c87ec2efb7047ed638fb4c9db7f3a42e2217b5" + integrity sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g== dependencies: async-foreach "^0.1.3" chalk "^1.1.1" @@ -4732,14 +5249,14 @@ node-sass@^4.12.0: get-stdin "^4.0.1" glob "^7.0.3" in-publish "^2.0.0" - lodash "^4.17.11" + lodash "^4.17.15" meow "^3.7.0" mkdirp "^0.5.1" nan "^2.13.2" node-gyp "^3.8.0" npmlog "^4.0.0" request "^2.88.0" - sass-graph "^2.2.4" + sass-graph "2.2.5" stdout-stream "^1.4.0" "true-case-path" "^1.0.2" @@ -4775,7 +5292,7 @@ normalize-path@^2.1.1: dependencies: remove-trailing-separator "^1.0.1" -normalize-path@^3.0.0: +normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== @@ -4785,7 +5302,7 @@ normalize-range@^0.1.2: resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= -normalize-url@^1.4.0: +normalize-url@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= @@ -4808,13 +5325,6 @@ npm-packlist@^1.1.6: ignore-walk "^3.0.1" npm-bundled "^1.0.1" -npm-path@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/npm-path/-/npm-path-2.0.4.tgz#c641347a5ff9d6a09e4d9bce5580c4f505278e64" - integrity sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw== - dependencies: - which "^1.2.10" - npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -4822,14 +5332,12 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npm-which@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/npm-which/-/npm-which-3.0.1.tgz#9225f26ec3a285c209cae67c3b11a6b4ab7140aa" - integrity sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo= +npm-run-path@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: - commander "^2.9.0" - npm-path "^2.0.2" - which "^1.2.10" + path-key "^3.0.0" "npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2: version "4.1.2" @@ -4851,10 +5359,10 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= -nwsapi@^2.0.7: - version "2.1.4" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.1.4.tgz#e006a878db23636f8e8a67d33ca0e4edf61a842f" - integrity sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw== +nwsapi@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== oauth-sign@~0.9.0: version "0.9.0" @@ -4875,7 +5383,7 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-keys@^1.0.12: +object-keys@^1.0.11, object-keys@^1.0.12: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== @@ -4887,13 +5395,15 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.getownpropertydescriptors@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" - integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= +object.assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== dependencies: define-properties "^1.1.2" - es-abstract "^1.5.1" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" object.pick@^1.3.0: version "1.3.0" @@ -4909,20 +5419,17 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= +onetime@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" + integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== dependencies: - mimic-fn "^1.0.0" + mimic-fn "^2.1.0" -optimist@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" +opencollective-postinstall@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" + integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== optionator@^0.8.1: version "0.8.2" @@ -4941,35 +5448,10 @@ os-browserify@^0.3.0: resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= - dependencies: - lcid "^1.0.0" - -os-locale@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" - integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== - dependencies: - execa "^0.7.0" - lcid "^1.0.0" - mem "^1.1.0" - -os-locale@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= os-tmpdir@^1.0.0: version "1.0.2" @@ -4984,35 +5466,16 @@ osenv@0, osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= - -p-each-series@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" - integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E= - dependencies: - p-reduce "^1.0.0" +p-each-series@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" + integrity sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ== p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= -p-is-promise@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" - integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - p-limit@^2.0.0, p-limit@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" @@ -5020,13 +5483,6 @@ p-limit@^2.0.0, p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= - dependencies: - p-limit "^1.1.0" - p-locate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" @@ -5041,25 +5497,17 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" -p-map@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" - integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== - p-map@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== -p-reduce@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" - integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" p-try@^2.0.0: version "2.2.0" @@ -5071,6 +5519,22 @@ pako@~1.0.5: resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw== +parallel-transform@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== + dependencies: + cyclist "^1.0.1" + inherits "^2.0.3" + readable-stream "^2.1.5" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + parse-asn1@^5.0.0: version "5.1.4" resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.4.tgz#37f6628f823fbdeb2273b4d540434a22f3ef1fcc" @@ -5098,20 +5562,35 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" -parse5@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" - integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== +parse-json@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" + integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + lines-and-columns "^1.1.6" + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= + +parse5@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" + integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= -path-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" - integrity sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo= +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== path-dirname@^1.0.0: version "1.0.2" @@ -5130,12 +5609,17 @@ path-exists@^3.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-is-inside@^1.0.1, path-is-inside@^1.0.2: +path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= @@ -5145,6 +5629,11 @@ path-key@^2.0.0, path-key@^2.0.1: resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + path-parse@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" @@ -5159,19 +5648,10 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" -path-type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" - integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= - dependencies: - pify "^2.0.0" - -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== pbkdf2@^3.0.3: version "3.0.17" @@ -5189,16 +5669,16 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= +picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - pify@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" @@ -5230,308 +5710,98 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" -pkg-dir@^4.1.0: +pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: find-up "^4.0.0" -please-upgrade-node@^3.0.2, please-upgrade-node@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.1.1.tgz#ed320051dfcc5024fae696712c8288993595e8ac" - integrity sha512-KY1uHnQ2NlQHqIJQpnh/i54rKkuxCEBx+voJIS/Mvb+L2iYd2NMotwduhKTMjfC1uKoX3VXOxLjIYG66dfJTVQ== +please-upgrade-node@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" + integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== dependencies: semver-compare "^1.0.0" -pn@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" - integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== - posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= -postcss-calc@^5.2.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e" - integrity sha1-d7rnypKK2FcW4v2kLyYb98HWW14= - dependencies: - postcss "^5.0.2" - postcss-message-helpers "^2.0.0" - reduce-css-calc "^1.2.6" - -postcss-colormin@^2.1.8: - version "2.2.2" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b" - integrity sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks= - dependencies: - colormin "^1.0.5" - postcss "^5.0.13" - postcss-value-parser "^3.2.3" - -postcss-convert-values@^2.3.4: - version "2.6.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d" - integrity sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0= - dependencies: - postcss "^5.0.11" - postcss-value-parser "^3.1.2" - -postcss-discard-comments@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d" - integrity sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0= - dependencies: - postcss "^5.0.14" - -postcss-discard-duplicates@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932" - integrity sha1-uavye4isGIFYpesSq8riAmO5GTI= - dependencies: - postcss "^5.0.4" - -postcss-discard-empty@^2.0.1: +postcss-load-config@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5" - integrity sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU= - dependencies: - postcss "^5.0.14" - -postcss-discard-overridden@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58" - integrity sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg= - dependencies: - postcss "^5.0.16" - -postcss-discard-unused@^2.2.1: - version "2.2.3" - resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433" - integrity sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM= - dependencies: - postcss "^5.0.14" - uniqs "^2.0.0" - -postcss-filter-plugins@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz#82245fdf82337041645e477114d8e593aa18b8ec" - integrity sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ== - dependencies: - postcss "^5.0.4" - -postcss-merge-idents@^2.1.5: - version "2.1.7" - resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270" - integrity sha1-TFUwMTwI4dWzu/PSu8dH4njuonA= - dependencies: - has "^1.0.1" - postcss "^5.0.10" - postcss-value-parser "^3.1.1" - -postcss-merge-longhand@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658" - integrity sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg= + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.0.tgz#c84d692b7bb7b41ddced94ee62e8ab31b417b003" + integrity sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q== dependencies: - postcss "^5.0.4" + cosmiconfig "^5.0.0" + import-cwd "^2.0.0" -postcss-merge-rules@^2.0.3: - version "2.1.2" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721" - integrity sha1-0d9d+qexrMO+VT8OnhDofGG19yE= +postcss-loader@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" + integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== dependencies: - browserslist "^1.5.2" - caniuse-api "^1.5.2" - postcss "^5.0.4" - postcss-selector-parser "^2.2.2" - vendors "^1.0.0" + loader-utils "^1.1.0" + postcss "^7.0.0" + postcss-load-config "^2.0.0" + schema-utils "^1.0.0" -postcss-message-helpers@^2.0.0: +postcss-modules-extract-imports@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e" - integrity sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4= - -postcss-minify-font-values@^1.0.2: - version "1.0.5" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69" - integrity sha1-S1jttWZB66fIR0qzUmyv17vey2k= - dependencies: - object-assign "^4.0.1" - postcss "^5.0.4" - postcss-value-parser "^3.0.2" - -postcss-minify-gradients@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1" - integrity sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE= - dependencies: - postcss "^5.0.12" - postcss-value-parser "^3.3.0" - -postcss-minify-params@^1.0.4: - version "1.2.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3" - integrity sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM= - dependencies: - alphanum-sort "^1.0.1" - postcss "^5.0.2" - postcss-value-parser "^3.0.2" - uniqs "^2.0.0" - -postcss-minify-selectors@^2.0.4: - version "2.1.1" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf" - integrity sha1-ssapjAByz5G5MtGkllCBFDEXNb8= - dependencies: - alphanum-sort "^1.0.2" - has "^1.0.1" - postcss "^5.0.14" - postcss-selector-parser "^2.0.0" - -postcss-modules-extract-imports@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz#dc87e34148ec7eab5f791f7cd5849833375b741a" - integrity sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw== - dependencies: - postcss "^6.0.1" - -postcss-modules-local-by-default@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" - integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk= - dependencies: - css-selector-tokenizer "^0.7.0" - postcss "^6.0.1" - -postcss-modules-scope@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" - integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A= - dependencies: - css-selector-tokenizer "^0.7.0" - postcss "^6.0.1" - -postcss-modules-values@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" - integrity sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA= - dependencies: - icss-replace-symbols "^1.1.0" - postcss "^6.0.1" - -postcss-normalize-charset@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1" - integrity sha1-757nEhLX/nWceO0WL2HtYrXLk/E= - dependencies: - postcss "^5.0.5" - -postcss-normalize-url@^3.0.7: - version "3.0.8" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222" - integrity sha1-EI90s/L82viRov+j6kWSJ5/HgiI= - dependencies: - is-absolute-url "^2.0.0" - normalize-url "^1.4.0" - postcss "^5.0.14" - postcss-value-parser "^3.2.3" - -postcss-ordered-values@^2.1.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d" - integrity sha1-7sbCpntsQSqNsgQud/6NpD+VwR0= + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" + integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== dependencies: - postcss "^5.0.4" - postcss-value-parser "^3.0.1" + postcss "^7.0.5" -postcss-reduce-idents@^2.2.2: - version "2.4.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3" - integrity sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM= +postcss-modules-local-by-default@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz#e8a6561be914aaf3c052876377524ca90dbb7915" + integrity sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ== dependencies: - postcss "^5.0.4" - postcss-value-parser "^3.0.2" + icss-utils "^4.1.1" + postcss "^7.0.16" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.0" -postcss-reduce-initial@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea" - integrity sha1-aPgGlfBF0IJjqHmtJA343WT2ROo= +postcss-modules-scope@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" + integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== dependencies: - postcss "^5.0.4" + postcss "^7.0.6" + postcss-selector-parser "^6.0.0" -postcss-reduce-transforms@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1" - integrity sha1-/3b02CEkN7McKYpC0uFEQCV3GuE= +postcss-modules-values@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" + integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== dependencies: - has "^1.0.1" - postcss "^5.0.8" - postcss-value-parser "^3.0.1" + icss-utils "^4.0.0" + postcss "^7.0.6" -postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2: - version "2.2.3" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90" - integrity sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A= +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" + integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== dependencies: - flatten "^1.0.2" + cssesc "^3.0.0" indexes-of "^1.0.1" uniq "^1.0.1" -postcss-svgo@^2.1.1: - version "2.1.6" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d" - integrity sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0= - dependencies: - is-svg "^2.0.0" - postcss "^5.0.14" - postcss-value-parser "^3.2.3" - svgo "^0.7.0" - -postcss-unique-selectors@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d" - integrity sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0= - dependencies: - alphanum-sort "^1.0.1" - postcss "^5.0.4" - uniqs "^2.0.0" - -postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" - integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== - -postcss-zindex@^2.0.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22" - integrity sha1-0hCd3AVbka9n/EyzsCWUZjnSryI= - dependencies: - has "^1.0.1" - postcss "^5.0.4" - uniqs "^2.0.0" - -postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.16: - version "5.2.18" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" - integrity sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg== - dependencies: - chalk "^1.1.3" - js-base64 "^2.1.9" - source-map "^0.5.6" - supports-color "^3.2.3" +postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" + integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== -postcss@^6.0.1: - version "6.0.23" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" - integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== +postcss@^7.0.0, postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.32" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.32.tgz#4310d6ee347053da3433db2be492883d62cec59d" + integrity sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw== dependencies: - chalk "^2.4.1" + chalk "^2.4.2" source-map "^0.6.1" - supports-color "^5.4.0" + supports-color "^6.1.0" prelude-ls@~1.1.2: version "1.1.2" @@ -5543,25 +5813,20 @@ prepend-http@^1.0.0: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= -prettier@^1.11.1: - version "1.17.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.17.1.tgz#ed64b4e93e370cb8a25b9ef7fef3e4fd1c0995db" - integrity sha512-TzGRNvuUSmPgwivDqkZ9tM/qTGW9hqDKWOE9YHiyQdixlKbv7kvEqsmDPrcHJTKwthU774TQwZXVtaQ/mMsvjg== +prettier@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.5.tgz#d6d56282455243f2f92cc1716692c08aa31522d4" + integrity sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg== -pretty-format@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.8.0.tgz#8dae7044f58db7cb8be245383b565a963e3c27f2" - integrity sha512-P952T7dkrDEplsR+TuY7q3VXDae5Sr7zmQb12JU/NDQa/3CH7/QW0yvqLcGN6jL+zQFKaoJcPc+yJxMTGmosqw== +pretty-format@^26.1.0: + version "26.1.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.1.0.tgz#272b9cd1f1a924ab5d443dc224899d7a65cb96ec" + integrity sha512-GmeO1PEYdM+non4BKCj+XsPJjFOJIPnsLewqhDVoqY1xo0yNmDas7tC2XwpMrRAHR3MaE2hPo37deX5OisJ2Wg== dependencies: - "@jest/types" "^24.8.0" - ansi-regex "^4.0.0" - ansi-styles "^3.2.0" - react-is "^16.8.4" - -private@^0.1.6: - version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== + "@jest/types" "^26.1.0" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^16.12.0" process-nextick-args@~2.0.0: version "2.0.0" @@ -5573,6 +5838,11 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + prompts@^2.0.1: version "2.1.0" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.1.0.tgz#bf90bc71f6065d255ea2bdc0fe6520485c1b45db" @@ -5581,11 +5851,6 @@ prompts@^2.0.1: kleur "^3.0.2" sisteransi "^1.0.0" -property-expr@^1.5.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-1.5.1.tgz#22e8706894a0c8e28d58735804f6ba3a3673314f" - integrity sha512-CGuc0VUTGthpJXL36ydB6jnbyOf/rAHFvmVrJlH+Rg0DqqLFQGAP6hIaxD/G0OAmBJPhXDHuEJigrp0e0wFV6g== - prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" @@ -5613,6 +5878,14 @@ public-encrypt@^4.0.0: randombytes "^2.0.1" safe-buffer "^5.1.2" +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -5621,6 +5894,15 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" @@ -5636,11 +5918,6 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -q@^1.1.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= - qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" @@ -5664,7 +5941,7 @@ querystring@0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== @@ -5689,10 +5966,10 @@ rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-is@^16.8.4: - version "16.8.6" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" - integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA== +react-is@^16.12.0: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== read-pkg-up@^1.0.1: version "1.0.1" @@ -5702,21 +5979,14 @@ read-pkg-up@^1.0.1: find-up "^1.0.0" read-pkg "^1.0.0" -read-pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" - integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= - dependencies: - find-up "^2.0.0" - read-pkg "^2.0.0" - -read-pkg-up@^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== +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== dependencies: - find-up "^3.0.0" - read-pkg "^3.0.0" + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" read-pkg@^1.0.0: version "1.1.0" @@ -5727,33 +5997,28 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" -read-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" - integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= - dependencies: - load-json-file "^2.0.0" - normalize-package-data "^2.3.2" - path-type "^2.0.0" - -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - -read-pkg@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.1.1.tgz#5cf234dde7a405c90c88a519ab73c467e9cb83f5" - integrity sha512-dFcTLQi6BZ+aFUaICg7er+/usEoqFdQxiEBsEMNGoipenihtxxtdrQuBXvyANCEI8VuUIVYFgeHGx9sLLvim4w== +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== dependencies: "@types/normalize-package-data" "^2.4.0" normalize-package-data "^2.5.0" - parse-json "^4.0.0" - type-fest "^0.4.1" + parse-json "^5.0.0" + type-fest "^0.6.0" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.3.3, readable-stream@^2.3.6: version "2.3.6" @@ -5777,12 +6042,12 @@ readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" -realpath-native@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" - integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== +readdirp@~3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" + integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== dependencies: - util.promisify "^1.0.0" + picomatch "^2.2.1" redent@^1.0.0: version "1.0.0" @@ -5792,22 +6057,6 @@ redent@^1.0.0: indent-string "^2.1.0" strip-indent "^1.0.1" -reduce-css-calc@^1.2.6: - version "1.3.0" - resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" - integrity sha1-dHyRTgSWFKTJz7umKYca0dKSdxY= - dependencies: - balanced-match "^0.4.2" - math-expression-evaluator "^1.2.14" - reduce-function-call "^1.0.1" - -reduce-function-call@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99" - integrity sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk= - dependencies: - balanced-match "^0.4.2" - regenerate-unicode-properties@^8.0.2: version "8.1.0" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e" @@ -5815,32 +6064,29 @@ regenerate-unicode-properties@^8.0.2: dependencies: regenerate "^1.4.0" -regenerate@^1.2.1, regenerate@^1.4.0: +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== -regenerator-runtime@^0.10.5: - version "0.10.5" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" - integrity sha1-M2w+/BIgrc7dosn6tntaeVWjNlg= - -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== - -regenerator-runtime@^0.13.2: - version "0.13.2" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447" - integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA== +regenerator-runtime@^0.13.4: + version "0.13.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" + integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== -regenerator-transform@^0.14.0: - version "0.14.0" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.0.tgz#2ca9aaf7a2c239dd32e4761218425b8c7a86ecaf" - integrity sha512-rtOelq4Cawlbmq9xuMR5gdFmv7ku/sFoB7sRiywx7aq53bc52b4j6zvH7Te1Vt/X2YveDKnCGUbioieU7FEL3w== +regenerator-transform@^0.14.2: + version "0.14.5" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" + integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== dependencies: - private "^0.1.6" + "@babel/runtime" "^7.8.4" regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" @@ -5850,20 +6096,6 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp-tree@^0.1.6: - version "0.1.10" - resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.10.tgz#d837816a039c7af8a8d64d7a7c3cf6a1d93450bc" - integrity sha512-K1qVSbcedffwuIslMwpe6vGlj+ZXRnGkvjAtFHfDZZZuEdA/h0dxljAPu9vhUo6Rrx2U2AwJ+nSQ6hK+lrP5MQ== - -regexpu-core@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" - integrity sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs= - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - regexpu-core@^4.5.4: version "4.5.4" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136bc98a6aebaae" @@ -5876,22 +6108,27 @@ regexpu-core@^4.5.4: unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.1.0" -regjsgen@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" - integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= +regexpu-core@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" + integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" regjsgen@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd" integrity sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA== -regjsparser@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" - integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= - dependencies: - jsesc "~0.5.0" +regjsgen@^0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" + integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== regjsparser@^0.6.0: version "0.6.0" @@ -5900,6 +6137,13 @@ regjsparser@^0.6.0: dependencies: jsesc "~0.5.0" +regjsparser@^0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" + integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== + dependencies: + jsesc "~0.5.0" + remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" @@ -5910,7 +6154,7 @@ repeat-element@^1.1.2: resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== -repeat-string@^1.5.2, repeat-string@^1.6.1: +repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= @@ -5922,19 +6166,19 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" -request-promise-core@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.2.tgz#339f6aababcafdb31c799ff158700336301d3346" - integrity sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag== +request-promise-core@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" + integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== dependencies: - lodash "^4.17.11" + lodash "^4.17.15" -request-promise-native@^1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.7.tgz#a49868a624bdea5069f1251d0a836e0d89aa2c59" - integrity sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w== +request-promise-native@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" + integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== dependencies: - request-promise-core "1.1.2" + request-promise-core "1.1.3" stealthy-require "^1.1.1" tough-cookie "^2.3.3" @@ -5964,16 +6208,37 @@ request@^2.87.0, request@^2.88.0: tunnel-agent "^0.6.0" uuid "^3.3.2" +request@^2.88.2: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -require-main-filename@^1.0.1: - version "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" @@ -5986,21 +6251,41 @@ resolve-cwd@^2.0.0: dependencies: resolve-from "^3.0.0" +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-dir@^1.0.0, resolve-dir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" + resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" integrity sha1-six699nWiBvItuZTM17rywoYh0g= +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= - resolve@^1.10.0, resolve@^1.3.2: version "1.11.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.0.tgz#4014870ba296176b86343d50b60f3b50609ce232" @@ -6008,12 +6293,19 @@ resolve@^1.10.0, resolve@^1.3.2: dependencies: path-parse "^1.0.6" -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= +resolve@^1.17.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== dependencies: - onetime "^2.0.0" + onetime "^5.1.0" signal-exit "^3.0.2" ret@~0.1.10: @@ -6021,20 +6313,27 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== -right-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" - integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8= - dependencies: - align-text "^0.1.1" - -rimraf@2, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: +rimraf@2, rimraf@^2.6.1, rimraf@^2.6.3: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== dependencies: glob "^7.1.3" +rimraf@^2.5.4: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -6048,15 +6347,17 @@ rsvp@^4.8.4: resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.4.tgz#b50e6b34583f3dd89329a2f23a8a2be072845911" integrity sha512-6FomvYPfs+Jy9TfXmBpBuMWNH94SgCsZmJKcanySzgNNP6LjWxBvyLTa9KaMfDDM5oxRfrKDB0r/qeRsLwnBfA== -run-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/run-node/-/run-node-1.0.0.tgz#46b50b946a2aa2d4947ae1d886e9856fd9cabe5e" - integrity sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A== +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + dependencies: + aproba "^1.1.1" -rxjs@^6.3.3: - version "6.5.2" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7" - integrity sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg== +rxjs@^6.5.5: + version "6.6.0" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.0.tgz#af2901eedf02e3a83ffa7f886240ff9018bbec84" + integrity sha512-3HMA8z/Oz61DUHe+SdOiQyzIf4tOx5oQHmMir7IZEu6TMqCLHT4LRcmNaUS0NwOz8VLvmmBduMsoaUvMaIiqzg== dependencies: tslib "^1.9.0" @@ -6092,47 +6393,57 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -sass-graph@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49" - integrity sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k= +sass-graph@2.2.5: + version "2.2.5" + resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.5.tgz#a981c87446b8319d96dce0671e487879bd24c2e8" + integrity sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag== dependencies: glob "^7.0.0" lodash "^4.0.0" scss-tokenizer "^0.2.3" - yargs "^7.0.0" + yargs "^13.3.2" -sass-loader@^6.0.6: - version "6.0.7" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-6.0.7.tgz#dd2fdb3e7eeff4a53f35ba6ac408715488353d00" - integrity sha512-JoiyD00Yo1o61OJsoP2s2kb19L1/Y2p3QFcCdWdF6oomBGKVYuZyqHWemRBfQ2uGYsk+CH3eCguXNfpjzlcpaA== +sass-loader@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-9.0.1.tgz#8ae96ebb0e9debc3748064d32e43596719814c40" + integrity sha512-wXFo2VAAzAUsUApOXr5PkGXDa1ad20RYhdJTubopY04i+Suk8b8g3Vtobu3kfMk48S0n5rQyAQeGBdg8WzL8gA== dependencies: - clone-deep "^2.0.1" - loader-utils "^1.0.1" - lodash.tail "^4.1.1" - neo-async "^2.5.0" - pify "^3.0.0" + klona "^1.1.1" + loader-utils "^2.0.0" + neo-async "^2.6.1" + schema-utils "^2.7.0" + semver "^7.3.2" -sax@^1.2.4, sax@~1.2.1: +sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -schema-utils@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.3.0.tgz#f5877222ce3e931edae039f17eb3716e7137f8cf" - integrity sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8= +saxes@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== dependencies: - ajv "^5.0.0" + xmlchars "^2.2.0" -schema-utils@^0.4.5: - version "0.4.7" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187" - integrity sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ== +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== dependencies: ajv "^6.1.0" + ajv-errors "^1.0.0" ajv-keywords "^3.1.0" +schema-utils@^2.6.5, schema-utils@^2.6.6, schema-utils@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" + integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== + dependencies: + "@types/json-schema" "^7.0.4" + ajv "^6.12.2" + ajv-keywords "^3.4.1" + scss-tokenizer@^0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" @@ -6146,21 +6457,48 @@ semver-compare@^1.0.0: resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= +semver-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" + integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== + "semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: version "5.7.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + semver@^6.0.0: version "6.1.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.1.0.tgz#e95dc415d45ecf03f2f9f83b264a6b11f49c0cca" integrity sha512-kCqEOOHoBcFs/2Ccuk4Xarm/KiWRSLEX9CAZF8xkJ6ZPlIoTZ8V5f7J16vYLJqDbR7KrxTJpR2lqjIEm2Qx9cQ== +semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.2.1, semver@^7.3.2: + version "7.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== + semver@~5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= +serialize-javascript@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-3.1.0.tgz#8bf3a9170712664ef2561b44b691eafe399214ea" + integrity sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg== + dependencies: + randombytes "^2.1.0" + set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -6199,15 +6537,6 @@ sha.js@^2.4.0, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" -shallow-clone@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-1.0.0.tgz#4480cd06e882ef68b2ad88a3ea54832e2c48b571" - integrity sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA== - dependencies: - is-extendable "^0.1.1" - kind-of "^5.0.0" - mixin-object "^2.0.1" - shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -6215,11 +6544,23 @@ shebang-command@^1.2.0: dependencies: shebang-regex "^1.0.0" +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + shellwords@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" @@ -6230,13 +6571,6 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= -simple-git@^1.85.0: - version "1.113.0" - resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-1.113.0.tgz#668989728a1e9cf4ec6c72b69ea2eecc93489bea" - integrity sha512-i9WVsrK2u0G/cASI9nh7voxOk9mhanWY9eGtWBDSYql6m49Yk5/Fan6uZsDr/xmzv8n+eQ8ahKCoEr8cvU3h+g== - dependencies: - debug "^4.0.1" - simple-is@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/simple-is/-/simple-is-0.2.0.tgz#2abb75aade39deb5cc815ce10e6191164850baf0" @@ -6247,20 +6581,28 @@ sisteransi@^1.0.0: resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.0.tgz#77d9622ff909080f1c19e5f4a1df0c1b0a27b88c" integrity sha512-N+z4pHB4AmUv0SjveWRd6q1Nj5w62m5jodv+GD8lvmbY/83T/rpbJGZOnK5T149OldDj4Db07BSv9xY4K6NTPQ== -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slice-ansi@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" - integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= +slice-ansi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" + integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" snapdragon-node@^2.0.1: version "2.1.1" @@ -6323,6 +6665,14 @@ source-map-support@^0.5.6: buffer-from "^1.0.0" source-map "^0.6.0" +source-map-support@~0.5.12: + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" @@ -6335,7 +6685,7 @@ source-map@^0.4.2: dependencies: amdefine ">=0.0.4" -source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1: +source-map@^0.5.0, source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -6345,6 +6695,11 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +source-map@^0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + spdx-correct@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" @@ -6398,15 +6753,19 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -stack-utils@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" - integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== +ssri@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" + integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== + dependencies: + figgy-pudding "^3.5.1" -staged-git-files@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/staged-git-files/-/staged-git-files-1.1.2.tgz#4326d33886dc9ecfa29a6193bf511ba90a46454b" - integrity sha512-0Eyrk6uXW6tg9PYkhi/V/J4zHp33aNyi2hOCmhFLqLTIhbgqWn5jlSzI+IU0VqrZq6+DbHcabQl/WP6P3BG0QA== +stack-utils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.2.tgz#5cf48b4557becb4638d0bc4f21d23f5d19586593" + integrity sha512-0H7QK2ECz3fyZMzQ8rH0j2ykpfbnd20BFtfg/SqVC2+sCTtcw0aDTGB7dk+de4U4uUeuz6nOtJcrkFFLG1B0Rg== + dependencies: + escape-string-regexp "^2.0.0" static-extend@^0.1.1: version "0.1.2" @@ -6436,6 +6795,14 @@ stream-browserify@^2.0.1: inherits "~2.0.1" readable-stream "^2.0.2" +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + stream-http@^2.7.2: version "2.8.3" resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" @@ -6447,25 +6814,30 @@ stream-http@^2.7.2: to-arraybuffer "^1.0.0" xtend "^4.0.0" +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + strict-uri-encode@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= -string-argv@^0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.0.2.tgz#dac30408690c21f3c3630a3ff3a05877bdcbd736" - integrity sha1-2sMECGkMIfPDYwo/86BYd73L1zY= +string-argv@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" + integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== -string-length@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" - integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= +string-length@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.1.tgz#4a973bf31ef77c4edbceadd6af2611996985f8a1" + integrity sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw== dependencies: - astral-regex "^1.0.0" - strip-ansi "^4.0.0" + char-regex "^1.0.2" + strip-ansi "^6.0.0" -string-width@^1.0.1, string-width@^1.0.2: +string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= @@ -6474,7 +6846,7 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2": version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -6482,6 +6854,24 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + string_decoder@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" @@ -6496,7 +6886,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -stringify-object@^3.2.2: +stringify-object@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== @@ -6519,13 +6909,20 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-ansi@^5.0.0: +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== dependencies: ansi-regex "^4.1.0" +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" @@ -6533,16 +6930,21 @@ strip-bom@^2.0.0: dependencies: is-utf8 "^0.2.0" -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + strip-indent@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" @@ -6555,34 +6957,20 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -style-loader@^0.20.2: - version "0.20.3" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.20.3.tgz#ebef06b89dec491bcb1fdb3452e913a6fd1c10c4" - integrity sha512-2I7AVP73MvK33U7B9TKlYZAqdROyMXDYSMvHLX43qy3GCOaJNiV6i0v/sv9idWIaQ42Yn2dNv79Q5mKXbKhAZg== +style-loader@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.2.1.tgz#c5cbbfbf1170d076cfdd86e0109c5bba114baa1a" + integrity sha512-ByHSTQvHLkWE9Ir5+lGbVOXhxX10fbprhLvdg96wedFZb4NDekDPxVKv5Fwmio+QcMlkkNfuK+5W1peQ5CUhZg== dependencies: - loader-utils "^1.1.0" - schema-utils "^0.4.5" + loader-utils "^2.0.0" + schema-utils "^2.6.6" supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= -supports-color@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" - integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= - dependencies: - has-flag "^1.0.0" - -supports-color@^4.2.1: - version "4.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" - integrity sha1-vnoN5ITexcXN34s9WRJQRJEvY1s= - dependencies: - has-flag "^2.0.0" - -supports-color@^5.3.0, supports-color@^5.4.0: +supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== @@ -6596,38 +6984,30 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" -svgo@^0.7.0: - version "0.7.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" - integrity sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U= +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== dependencies: - coa "~1.0.1" - colors "~1.1.2" - csso "~2.3.1" - js-yaml "~3.7.0" - mkdirp "~0.5.1" - sax "~1.2.1" - whet.extend "~0.9.9" - -symbol-observable@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" - integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== + has-flag "^4.0.0" -symbol-tree@^3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" - integrity sha1-rifbOPZgp64uHDt9G8KQgZuFGeY= +supports-hyperlinks@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" + integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" -synchronous-promise@^2.0.6: - version "2.0.8" - resolved "https://registry.yarnpkg.com/synchronous-promise/-/synchronous-promise-2.0.8.tgz#01fd026fffdbf2d3d39ec06ee1a7c971578136f7" - integrity sha512-xYavZtFC1vKgJu0AOSYdrLeikNCsNwmUeZaV1XF9cMqEhBVVxLq6rEbYzOGrF1MV2MNPkhsJqqiXuQ4a76CEUg== +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== -tapable@^0.2.7: - version "0.2.9" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.9.tgz#af2d8bbc9b04f74ee17af2b4d9048f807acd18a8" - integrity sha512-2wsvQ+4GwBvLPLWsNfLCDYGsW6xb7aeC6utq2Qh0PFwgEy7K7dsma9Jsmb2zSQj7GvYAyUGSntLtsv++GmgL1A== +tapable@^1.0.0, tapable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== tar@^2.0.0: version "2.2.2" @@ -6651,20 +7031,64 @@ tar@^4: safe-buffer "^5.1.2" yallist "^3.0.2" -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== +terminal-link@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== dependencies: - glob "^7.1.3" + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + +terser-webpack-plugin@^1.4.3: + version "1.4.4" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz#2c63544347324baafa9a56baaddf1634c8abfc2f" + integrity sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA== + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^3.1.0" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + +terser@^4.1.2: + version "4.8.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" + integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" minimatch "^3.0.4" - read-pkg-up "^4.0.0" - require-main-filename "^2.0.0" -throat@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" - integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= +throat@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" + integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== + +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through@^2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= timers-browserify@^2.0.4: version "2.0.10" @@ -6703,6 +7127,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" @@ -6713,12 +7144,7 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" -toposort@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/toposort/-/toposort-2.0.2.tgz#ae21768175d1559d48bef35420b2f4962f09c330" - integrity sha1-riF2gXXRVZ1IvvNUILL0li8JwzA= - -tough-cookie@^2.3.3, tough-cookie@^2.3.4: +tough-cookie@^2.3.3, tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== @@ -6726,6 +7152,15 @@ tough-cookie@^2.3.3, tough-cookie@^2.3.4: psl "^1.1.28" punycode "^2.1.1" +tough-cookie@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" + integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== + dependencies: + ip-regex "^2.1.0" + psl "^1.1.28" + punycode "^2.1.1" + tough-cookie@~2.4.3: version "2.4.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" @@ -6734,12 +7169,12 @@ tough-cookie@~2.4.3: psl "^1.1.24" punycode "^1.4.1" -tr46@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= +tr46@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" + integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== dependencies: - punycode "^2.1.0" + punycode "^2.1.1" trim-newlines@^1.0.0: version "1.0.0" @@ -6787,42 +7222,37 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" -type-fest@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.4.1.tgz#8bdf77743385d8a4f13ba95f610f5ccd68c728f8" - integrity sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw== +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== -uglify-js@^2.8.29: - version "2.8.29" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" - integrity sha1-KcVzMUgFe7Th913zW3qcty5qWd0= - dependencies: - source-map "~0.5.1" - yargs "~3.10.0" - optionalDependencies: - uglify-to-browserify "~1.0.0" +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== -uglify-js@^3.1.4: - version "3.5.15" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.5.15.tgz#fe2b5378fd0b09e116864041437bff889105ce24" - integrity sha512-fe7aYFotptIddkwcm6YuA0HmknBZ52ZzOsUxZEdhhkSsz7RfjHDX2QDxwKTiv4JQ5t5NhfmpgAK+J7LiDhKSqg== - dependencies: - commander "~2.20.0" - source-map "~0.6.1" +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== -uglify-to-browserify@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" - integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc= +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -uglifyjs-webpack-plugin@^0.4.6: - version "0.4.6" - resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz#b951f4abb6bd617e66f63eb891498e391763e309" - integrity sha1-uVH0q7a9YX5m9j64kUmOORdj4wk= +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== dependencies: - source-map "^0.5.6" - uglify-js "^2.8.29" - webpack-sources "^1.0.1" + is-typedarray "^1.0.0" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" @@ -6842,6 +7272,11 @@ unicode-match-property-value-ecmascript@^1.1.0: resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277" integrity sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g== +unicode-match-property-value-ecmascript@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== + unicode-property-aliases-ecmascript@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57" @@ -6862,10 +7297,19 @@ uniq@^1.0.1: resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= -uniqs@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" - integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" unset-value@^1.0.0: version "1.0.0" @@ -6910,14 +7354,6 @@ util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -util.promisify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" - integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== - dependencies: - define-properties "^1.1.2" - object.getownpropertydescriptors "^2.0.3" - util@0.10.3: version "0.10.3" resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" @@ -6937,6 +7373,25 @@ uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== +uuid@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b" + integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg== + +v8-compile-cache@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" + integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== + +v8-to-istanbul@^4.1.3: + version "4.1.4" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-4.1.4.tgz#b97936f21c0e2d9996d4985e5c5156e9d4e49cd6" + integrity sha512-Rw6vJHj1mbdK8edjR7+zuJrpDtKIgNdAvTSAcpYfgMIw+u2dPDntD3dgN4XQFLU2/fvFQdzj+EeSGfd/jnY5fQ== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + source-map "^0.7.3" + validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -6945,11 +7400,6 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -vendors@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.3.tgz#a6467781abd366217c050f8202e7e50cc9eef8c0" - integrity sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw== - verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" @@ -6959,19 +7409,24 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vm-browserify@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" - integrity sha1-XX6kW7755Kb/ZflUOOCofDV9WnM= +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + +w3c-hr-time@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== dependencies: - indexof "0.0.1" + browser-process-hrtime "^1.0.0" -w3c-hr-time@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045" - integrity sha1-gqwr/2PZUOqeMYmlimViX+3xkEU= +w3c-xmlserializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" + integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== dependencies: - browser-process-hrtime "^0.1.2" + xml-name-validator "^3.0.0" walker@^1.0.7, walker@~1.0.5: version "1.0.7" @@ -6980,24 +7435,55 @@ walker@^1.0.7, walker@~1.0.5: dependencies: makeerror "1.0.x" -watchpack@^1.4.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" - integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA== +watchpack-chokidar2@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0" + integrity sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA== + dependencies: + chokidar "^2.1.8" + +watchpack@^1.6.1: + version "1.7.2" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.2.tgz#c02e4d4d49913c3e7e122c3325365af9d331e9aa" + integrity sha512-ymVbbQP40MFTp+cNMvpyBpBtygHnPzPkHqoIwRRj/0B8KhqQwV8LaKjtbaxF2lK4vl8zN9wCxS46IFCU5K4W0g== dependencies: - chokidar "^2.0.2" graceful-fs "^4.1.2" neo-async "^2.5.0" + optionalDependencies: + chokidar "^3.4.0" + watchpack-chokidar2 "^2.0.0" -webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== -webpack-sources@^1.0.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85" - integrity sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA== +webidl-conversions@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== + +webpack-cli@^3.3.12: + version "3.3.12" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.12.tgz#94e9ada081453cd0aa609c99e500012fd3ad2d4a" + integrity sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag== + dependencies: + chalk "^2.4.2" + cross-spawn "^6.0.5" + enhanced-resolve "^4.1.1" + findup-sync "^3.0.0" + global-modules "^2.0.0" + import-local "^2.0.0" + interpret "^1.4.0" + loader-utils "^1.4.0" + supports-color "^6.1.0" + v8-compile-cache "^2.1.1" + yargs "^13.3.2" + +webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== dependencies: source-list-map "^2.0.0" source-map "~0.6.1" @@ -7009,91 +7495,80 @@ webpack-strip-block@^0.2.0: dependencies: loader-utils "^1.1.0" -webpack@3.12.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.12.0.tgz#3f9e34360370602fcf639e97939db486f4ec0d74" - integrity sha512-Sw7MdIIOv/nkzPzee4o0EdvCuPmxT98+vVpIvwtcwcF1Q4SDSNp92vwcKc4REe7NItH9f1S4ra9FuQ7yuYZ8bQ== - dependencies: - acorn "^5.0.0" - acorn-dynamic-import "^2.0.0" - ajv "^6.1.0" - ajv-keywords "^3.1.0" - async "^2.1.2" - enhanced-resolve "^3.4.0" - escope "^3.6.0" - interpret "^1.0.0" - json-loader "^0.5.4" - json5 "^0.5.1" - loader-runner "^2.3.0" - loader-utils "^1.1.0" - memory-fs "~0.4.1" - mkdirp "~0.5.0" - node-libs-browser "^2.0.0" - source-map "^0.5.3" - supports-color "^4.2.1" - tapable "^0.2.7" - uglifyjs-webpack-plugin "^0.4.6" - watchpack "^1.4.0" - webpack-sources "^1.0.1" - yargs "^8.0.2" - -whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: +webpack@4.43.0: + version "4.43.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.43.0.tgz#c48547b11d563224c561dad1172c8aa0b8a678e6" + integrity sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/wasm-edit" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + acorn "^6.4.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.1.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.3" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.6.1" + webpack-sources "^1.4.1" + +whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== dependencies: iconv-lite "0.4.24" -whatwg-fetch@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" - integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== - -whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0: +whatwg-mimetype@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== -whatwg-url@^6.4.1: - version "6.5.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" - integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - -whatwg-url@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.0.0.tgz#fde926fa54a599f3adf82dff25a9f7be02dc6edd" - integrity sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ== +whatwg-url@^8.0.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.1.0.tgz#c628acdcf45b82274ce7281ee31dd3c839791771" + integrity sha512-vEIkwNi9Hqt4TV9RdnaBPNt+E2Sgmo3gePebCRgZ1R7g6d23+53zCTnuB0amKI4AXq6VM8jj2DUAa0S1vjJxkw== dependencies: lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - -whet.extend@~0.9.9: - version "0.9.9" - resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" - integrity sha1-+HfVv2SMl+WqVC+twW1qJZucEaE= - -which-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" - integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= + tr46 "^2.0.2" + webidl-conversions "^5.0.0" which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@1, which@^1.2.10, which@^1.2.9, which@^1.3.0: +which-pm-runs@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" + integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= + +which@1, which@^1.2.14, which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" +which@^2.0.1, which@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + wide-align@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" @@ -7101,79 +7576,84 @@ wide-align@^1.1.0: dependencies: string-width "^1.0.2 || 2" -window-size@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" - integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0= - -wordwrap@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" - integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= - -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= - wordwrap@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" + errno "~0.1.7" -wrap-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" - integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo= +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" - integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== dependencies: - graceful-fs "^4.1.11" imurmurhash "^0.1.4" + is-typedarray "^1.0.0" signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" -ws@^5.2.0: - version "5.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" - integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== - dependencies: - async-limiter "~1.0.0" +ws@^7.2.3: + version "7.3.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.0.tgz#4b2f7f219b3d3737bc1a2fbf145d825b94d38ffd" + integrity sha512-iFtXzngZVXPGgpTlP1rBqsUK82p9tKqsWRPg5L56egiljujJT3vGAYnHANvFxBieXrTFavhzhxW52jnaWV+w2w== xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +xregexp@^4.2.4: + version "4.3.0" + resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.3.0.tgz#7e92e73d9174a99a59743f67a4ce879a04b5ae50" + integrity sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g== + dependencies: + "@babel/runtime-corejs3" "^7.8.3" + xtend@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= -y18n@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= +xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -"y18n@^3.2.1 || ^4.0.0": +y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== @@ -7188,102 +7668,56 @@ yallist@^3.0.0, yallist@^3.0.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== -yargs-parser@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" - integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== +yaml@^1.7.2: + version "1.10.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" + integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== + +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" - integrity sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo= - dependencies: - camelcase "^3.0.0" - -yargs-parser@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" - integrity sha1-jQrELxbqVd69MyyvTEA4s+P139k= +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== dependencies: - camelcase "^4.1.0" + camelcase "^5.0.0" + decamelize "^1.2.0" -yargs@^12.0.2: - version "12.0.5" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" - integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== +yargs@^13.3.2: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== dependencies: - cliui "^4.0.0" - decamelize "^1.2.0" + cliui "^5.0.0" find-up "^3.0.0" - get-caller-file "^1.0.1" - os-locale "^3.0.0" + get-caller-file "^2.0.1" require-directory "^2.1.1" - require-main-filename "^1.0.1" + require-main-filename "^2.0.0" set-blocking "^2.0.0" - string-width "^2.0.0" + string-width "^3.0.0" which-module "^2.0.0" - y18n "^3.2.1 || ^4.0.0" - yargs-parser "^11.1.1" - -yargs@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" - integrity sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg= - dependencies: - camelcase "^3.0.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" + y18n "^4.0.0" + yargs-parser "^13.1.2" + +yargs@^15.3.1: + version "15.4.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.0.tgz#53949fb768309bac1843de9b17b80051e9805ec2" + integrity sha512-D3fRFnZwLWp8jVAAhPZBsmeIHY8tTsb8ItV9KaAaopmC6wde2u6Yw29JBIZHXw14kgkRnYmDgmQU4FVMDlIsWw== + dependencies: + cliui "^6.0.0" + decamelize "^3.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^1.0.2" - which-module "^1.0.0" - y18n "^3.2.1" - yargs-parser "^5.0.0" - -yargs@^8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" - integrity sha1-YpmpBVsc78lp/355wdkY3Osiw2A= - dependencies: - camelcase "^4.1.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - read-pkg-up "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" + require-main-filename "^2.0.0" set-blocking "^2.0.0" - string-width "^2.0.0" + string-width "^4.2.0" which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^7.0.0" - -yargs@~3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" - integrity sha1-9+572FfdfB0tOMDnTvvWgdFDH9E= - dependencies: - camelcase "^1.0.2" - cliui "^2.1.0" - decamelize "^1.0.0" - window-size "0.1.0" - -yup@^0.27.0: - version "0.27.0" - resolved "https://registry.yarnpkg.com/yup/-/yup-0.27.0.tgz#f8cb198c8e7dd2124beddc2457571329096b06e7" - integrity sha512-v1yFnE4+u9za42gG/b/081E7uNW9mUj3qtkmelLbW5YPROZzSH/KUUyJu9Wt8vxFJcT9otL/eZopS0YK1L5yPQ== - dependencies: - "@babel/runtime" "^7.0.0" - fn-name "~2.0.1" - lodash "^4.17.11" - property-expr "^1.5.0" - synchronous-promise "^2.0.6" - toposort "^2.0.2" + y18n "^4.0.0" + yargs-parser "^18.1.2"