From e6c0d1c28af1905009067ac925bae0d0cd56c027 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Thu, 1 Feb 2018 12:17:04 +0000 Subject: [PATCH 0001/1487] initial commit --- .babelrc | 13 + .eslintignore | 2 + .eslintrc.js | 27 ++ .gitignore | 12 + .travis.yml | 22 + CODE_OF_CONDUCT.md | 46 ++ CONTRIBUTING.md | 14 + LICENSE.md | 201 ++++++++ README.md | 3 + assets/build/build.js | 31 ++ assets/build/check-versions.js | 48 ++ assets/build/config.js | 26 + assets/build/dev.js | 35 ++ assets/build/service-worker-dev.js | 17 + assets/build/service-worker-prod.js | 55 +++ assets/build/utils.js | 70 +++ assets/build/vue-loader.conf.js | 12 + assets/build/webpack.base.conf.js | 69 +++ assets/build/webpack.dev.conf.js | 81 ++++ assets/build/webpack.prod.conf.js | 127 +++++ assets/index.html | 116 +++++ assets/src/App.vue | 78 +++ assets/src/assets/fonts/material/icons.woff2 | Bin 0 -> 47620 bytes .../fonts/roboto/medium-cyrillic-ext.woff2 | Bin 0 -> 15292 bytes .../assets/fonts/roboto/medium-cyrillic.woff2 | Bin 0 -> 10060 bytes .../fonts/roboto/medium-greek-ext.woff2 | Bin 0 -> 1412 bytes .../assets/fonts/roboto/medium-greek.woff2 | Bin 0 -> 7176 bytes .../fonts/roboto/medium-latin-ext.woff2 | Bin 0 -> 11912 bytes .../assets/fonts/roboto/medium-latin.woff2 | Bin 0 -> 14596 bytes .../fonts/roboto/medium-vietnamese.woff2 | Bin 0 -> 4780 bytes .../fonts/roboto/normal-cyrillic-ext.woff2 | Bin 0 -> 15832 bytes .../assets/fonts/roboto/normal-cyrillic.woff2 | Bin 0 -> 9996 bytes .../fonts/roboto/normal-greek-ext.woff2 | Bin 0 -> 1432 bytes .../assets/fonts/roboto/normal-greek.woff2 | Bin 0 -> 7208 bytes .../fonts/roboto/normal-latin-ext.woff2 | Bin 0 -> 12008 bytes .../assets/fonts/roboto/normal-latin.woff2 | Bin 0 -> 14584 bytes .../fonts/roboto/normal-vietnamese.woff2 | Bin 0 -> 4896 bytes assets/src/assets/logo.svg | 5 + assets/src/components/Header.vue | 220 +++++++++ assets/src/components/Languages.vue | 23 + assets/src/components/Search.vue | 265 ++++++++++ assets/src/components/Sidebar.vue | 90 ++++ assets/src/components/buttons/Copy.vue | 17 + assets/src/components/buttons/Delete.vue | 17 + assets/src/components/buttons/Download.vue | 39 ++ assets/src/components/buttons/Info.vue | 17 + assets/src/components/buttons/Move.vue | 17 + assets/src/components/buttons/Rename.vue | 17 + assets/src/components/buttons/Schedule.vue | 21 + assets/src/components/buttons/Share.vue | 17 + assets/src/components/buttons/SwitchView.vue | 36 ++ assets/src/components/buttons/Upload.vue | 17 + assets/src/components/files/Editor.vue | 143 ++++++ assets/src/components/files/Listing.vue | 381 +++++++++++++++ assets/src/components/files/ListingItem.vue | 158 ++++++ assets/src/components/files/Preview.vue | 139 ++++++ assets/src/components/prompts/Copy.vue | 69 +++ assets/src/components/prompts/Delete.vue | 80 +++ assets/src/components/prompts/Download.vue | 47 ++ assets/src/components/prompts/FileList.vue | 140 ++++++ assets/src/components/prompts/Help.vue | 34 ++ assets/src/components/prompts/Info.vue | 122 +++++ assets/src/components/prompts/Move.vue | 70 +++ .../src/components/prompts/NewArchetype.vue | 76 +++ assets/src/components/prompts/NewDir.vue | 60 +++ assets/src/components/prompts/NewFile.vue | 61 +++ assets/src/components/prompts/Prompts.vue | 87 ++++ assets/src/components/prompts/Rename.vue | 84 ++++ assets/src/components/prompts/Replace.vue | 31 ++ assets/src/components/prompts/Schedule.vue | 47 ++ assets/src/components/prompts/Share.vue | 162 +++++++ assets/src/css/base.css | 214 ++++++++ assets/src/css/dashboard.css | 420 ++++++++++++++++ assets/src/css/editor.css | 184 +++++++ assets/src/css/fonts.css | 137 ++++++ assets/src/css/header.css | 260 ++++++++++ assets/src/css/listing.css | 237 +++++++++ assets/src/css/login.css | 76 +++ assets/src/css/mobile.css | 113 +++++ assets/src/css/styles.css | 228 +++++++++ assets/src/i18n/en.yaml | 201 ++++++++ assets/src/i18n/es.yaml | 202 ++++++++ assets/src/i18n/fr.yaml | 194 ++++++++ assets/src/i18n/index.js | 61 +++ assets/src/i18n/ja.yaml | 201 ++++++++ assets/src/i18n/pt.yaml | 204 ++++++++ assets/src/i18n/zh-cn.yaml | 199 ++++++++ assets/src/i18n/zh-tw.yaml | 199 ++++++++ assets/src/main.js | 54 +++ assets/src/router/index.js | 161 +++++++ assets/src/store/getters.js | 5 + assets/src/store/index.js | 42 ++ assets/src/store/mutations.js | 81 ++++ assets/src/utils/api.js | 455 ++++++++++++++++++ assets/src/utils/auth.js | 69 +++ assets/src/utils/buttons.js | 66 +++ assets/src/utils/codemirror.js | 60 +++ assets/src/utils/cookie.js | 4 + assets/src/utils/css.js | 28 ++ assets/src/utils/url.js | 12 + assets/src/views/Files.vue | 231 +++++++++ assets/src/views/Layout.vue | 43 ++ assets/src/views/Login.vue | 71 +++ assets/src/views/Settings.vue | 20 + assets/src/views/errors/403.vue | 13 + assets/src/views/errors/404.vue | 13 + assets/src/views/errors/500.vue | 13 + assets/src/views/settings/Global.vue | 187 +++++++ assets/src/views/settings/Profile.vue | 109 +++++ assets/src/views/settings/User.vue | 319 ++++++++++++ assets/src/views/settings/Users.vue | 48 ++ .../img/icons/android-chrome-192x192.png | Bin 0 -> 4299 bytes .../img/icons/android-chrome-512x512.png | Bin 0 -> 12300 bytes .../img/icons/apple-touch-icon-120x120.png | Bin 0 -> 2930 bytes .../img/icons/apple-touch-icon-152x152.png | Bin 0 -> 3723 bytes .../img/icons/apple-touch-icon-180x180.png | Bin 0 -> 8893 bytes .../img/icons/apple-touch-icon-60x60.png | Bin 0 -> 1910 bytes .../img/icons/apple-touch-icon-76x76.png | Bin 0 -> 1977 bytes assets/static/img/icons/apple-touch-icon.png | Bin 0 -> 4299 bytes assets/static/img/icons/favicon-16x16.png | Bin 0 -> 918 bytes assets/static/img/icons/favicon-32x32.png | Bin 0 -> 1645 bytes assets/static/img/icons/favicon.ico | Bin 0 -> 1150 bytes .../img/icons/msapplication-icon-144x144.png | Bin 0 -> 3515 bytes assets/static/img/icons/mstile-150x150.png | Bin 0 -> 3668 bytes assets/static/manifest.json | 20 + assets/static/share/404.html | 50 ++ assets/static/share/index.html | 86 ++++ package.json | 88 ++++ 128 files changed, 9592 insertions(+) create mode 100644 .babelrc create mode 100644 .eslintignore create mode 100644 .eslintrc.js create mode 100644 .gitignore create mode 100644 .travis.yml create mode 100644 CODE_OF_CONDUCT.md create mode 100644 CONTRIBUTING.md create mode 100644 LICENSE.md create mode 100644 README.md create mode 100644 assets/build/build.js create mode 100644 assets/build/check-versions.js create mode 100644 assets/build/config.js create mode 100644 assets/build/dev.js create mode 100644 assets/build/service-worker-dev.js create mode 100644 assets/build/service-worker-prod.js create mode 100644 assets/build/utils.js create mode 100644 assets/build/vue-loader.conf.js create mode 100644 assets/build/webpack.base.conf.js create mode 100644 assets/build/webpack.dev.conf.js create mode 100644 assets/build/webpack.prod.conf.js create mode 100644 assets/index.html create mode 100644 assets/src/App.vue create mode 100644 assets/src/assets/fonts/material/icons.woff2 create mode 100644 assets/src/assets/fonts/roboto/medium-cyrillic-ext.woff2 create mode 100644 assets/src/assets/fonts/roboto/medium-cyrillic.woff2 create mode 100644 assets/src/assets/fonts/roboto/medium-greek-ext.woff2 create mode 100644 assets/src/assets/fonts/roboto/medium-greek.woff2 create mode 100644 assets/src/assets/fonts/roboto/medium-latin-ext.woff2 create mode 100644 assets/src/assets/fonts/roboto/medium-latin.woff2 create mode 100644 assets/src/assets/fonts/roboto/medium-vietnamese.woff2 create mode 100644 assets/src/assets/fonts/roboto/normal-cyrillic-ext.woff2 create mode 100644 assets/src/assets/fonts/roboto/normal-cyrillic.woff2 create mode 100644 assets/src/assets/fonts/roboto/normal-greek-ext.woff2 create mode 100644 assets/src/assets/fonts/roboto/normal-greek.woff2 create mode 100644 assets/src/assets/fonts/roboto/normal-latin-ext.woff2 create mode 100644 assets/src/assets/fonts/roboto/normal-latin.woff2 create mode 100644 assets/src/assets/fonts/roboto/normal-vietnamese.woff2 create mode 100644 assets/src/assets/logo.svg create mode 100644 assets/src/components/Header.vue create mode 100644 assets/src/components/Languages.vue create mode 100644 assets/src/components/Search.vue create mode 100644 assets/src/components/Sidebar.vue create mode 100644 assets/src/components/buttons/Copy.vue create mode 100644 assets/src/components/buttons/Delete.vue create mode 100644 assets/src/components/buttons/Download.vue create mode 100644 assets/src/components/buttons/Info.vue create mode 100644 assets/src/components/buttons/Move.vue create mode 100644 assets/src/components/buttons/Rename.vue create mode 100644 assets/src/components/buttons/Schedule.vue create mode 100644 assets/src/components/buttons/Share.vue create mode 100644 assets/src/components/buttons/SwitchView.vue create mode 100644 assets/src/components/buttons/Upload.vue create mode 100644 assets/src/components/files/Editor.vue create mode 100644 assets/src/components/files/Listing.vue create mode 100644 assets/src/components/files/ListingItem.vue create mode 100644 assets/src/components/files/Preview.vue create mode 100644 assets/src/components/prompts/Copy.vue create mode 100644 assets/src/components/prompts/Delete.vue create mode 100644 assets/src/components/prompts/Download.vue create mode 100644 assets/src/components/prompts/FileList.vue create mode 100644 assets/src/components/prompts/Help.vue create mode 100644 assets/src/components/prompts/Info.vue create mode 100644 assets/src/components/prompts/Move.vue create mode 100644 assets/src/components/prompts/NewArchetype.vue create mode 100644 assets/src/components/prompts/NewDir.vue create mode 100644 assets/src/components/prompts/NewFile.vue create mode 100644 assets/src/components/prompts/Prompts.vue create mode 100644 assets/src/components/prompts/Rename.vue create mode 100644 assets/src/components/prompts/Replace.vue create mode 100644 assets/src/components/prompts/Schedule.vue create mode 100644 assets/src/components/prompts/Share.vue create mode 100644 assets/src/css/base.css create mode 100644 assets/src/css/dashboard.css create mode 100644 assets/src/css/editor.css create mode 100644 assets/src/css/fonts.css create mode 100644 assets/src/css/header.css create mode 100644 assets/src/css/listing.css create mode 100644 assets/src/css/login.css create mode 100644 assets/src/css/mobile.css create mode 100644 assets/src/css/styles.css create mode 100644 assets/src/i18n/en.yaml create mode 100644 assets/src/i18n/es.yaml create mode 100644 assets/src/i18n/fr.yaml create mode 100644 assets/src/i18n/index.js create mode 100644 assets/src/i18n/ja.yaml create mode 100644 assets/src/i18n/pt.yaml create mode 100644 assets/src/i18n/zh-cn.yaml create mode 100644 assets/src/i18n/zh-tw.yaml create mode 100644 assets/src/main.js create mode 100644 assets/src/router/index.js create mode 100644 assets/src/store/getters.js create mode 100644 assets/src/store/index.js create mode 100644 assets/src/store/mutations.js create mode 100644 assets/src/utils/api.js create mode 100644 assets/src/utils/auth.js create mode 100644 assets/src/utils/buttons.js create mode 100644 assets/src/utils/codemirror.js create mode 100644 assets/src/utils/cookie.js create mode 100644 assets/src/utils/css.js create mode 100644 assets/src/utils/url.js create mode 100644 assets/src/views/Files.vue create mode 100644 assets/src/views/Layout.vue create mode 100644 assets/src/views/Login.vue create mode 100644 assets/src/views/Settings.vue create mode 100644 assets/src/views/errors/403.vue create mode 100644 assets/src/views/errors/404.vue create mode 100644 assets/src/views/errors/500.vue create mode 100644 assets/src/views/settings/Global.vue create mode 100644 assets/src/views/settings/Profile.vue create mode 100644 assets/src/views/settings/User.vue create mode 100644 assets/src/views/settings/Users.vue create mode 100644 assets/static/img/icons/android-chrome-192x192.png create mode 100644 assets/static/img/icons/android-chrome-512x512.png create mode 100644 assets/static/img/icons/apple-touch-icon-120x120.png create mode 100644 assets/static/img/icons/apple-touch-icon-152x152.png create mode 100644 assets/static/img/icons/apple-touch-icon-180x180.png create mode 100644 assets/static/img/icons/apple-touch-icon-60x60.png create mode 100644 assets/static/img/icons/apple-touch-icon-76x76.png create mode 100644 assets/static/img/icons/apple-touch-icon.png create mode 100644 assets/static/img/icons/favicon-16x16.png create mode 100644 assets/static/img/icons/favicon-32x32.png create mode 100644 assets/static/img/icons/favicon.ico create mode 100644 assets/static/img/icons/msapplication-icon-144x144.png create mode 100644 assets/static/img/icons/mstile-150x150.png create mode 100644 assets/static/manifest.json create mode 100644 assets/static/share/404.html create mode 100644 assets/static/share/index.html create mode 100644 package.json diff --git a/.babelrc b/.babelrc new file mode 100644 index 00000000..a2a58cff --- /dev/null +++ b/.babelrc @@ -0,0 +1,13 @@ +{ + "presets": [ + ["env", { "modules": false }], + "stage-2" + ], + "plugins": ["transform-runtime"], + "env": { + "test": { + "presets": ["env", "stage-2"], + "plugins": [ "istanbul" ] + } + } +} diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 00000000..34af3774 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,2 @@ +build/*.js +config/*.js diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 00000000..67c085d6 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,27 @@ +// http://eslint.org/docs/user-guide/configuring + +module.exports = { + root: true, + parser: 'babel-eslint', + parserOptions: { + sourceType: 'module' + }, + env: { + browser: true, + }, + // https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style + extends: 'standard', + // required to lint *.vue files + plugins: [ + 'html' + ], + // add your custom rules here + 'rules': { + // allow paren-less arrow functions + 'arrow-parens': 0, + // allow async-await + 'generator-star-spacing': 0, + // allow debugger during development + 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0 + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..c4bbc189 --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +.DS_Store +node_modules/ +*/dist/* +*.db +*.db.lock +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.idea +.vscode +package-lock.json +yarn.lock \ No newline at end of file diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..7092fe76 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,22 @@ +language: go + +go: 1.x + +env: + - "PATH=/home/travis/gopath/bin:$PATH" + +install: + - go get ./... + # Install gometalinter and certain linters + - go get github.com/alecthomas/gometalinter + - go get github.com/client9/misspell/cmd/misspell + - go get github.com/gordonklaus/ineffassign + - go get golang.org/x/tools/cmd/goimports + - go get github.com/tsenart/deadcode + +script: + - gometalinter --disable-all -E gofmt -E misspell -E ineffassign -E goimports -E deadcode --exclude="rice-box.go" --tests ./... + - go test ./... -timeout 30s + +after_success: + - test -n "$TRAVIS_TAG" && curl -sL https://git.io/goreleaser | bash diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..f0cc78e8 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,46 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at hacdias@gmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..2b7e1bab --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,14 @@ +# Contributing + +If you want to contribute or want to build the code from source, you will need to have the most recent version of Go and, if you want to change the static assets (JS, CSS, ...), Node.js installed on your computer. To start developing, you just need to do the following: + +1. `go get github.com/hacdias/filemanager/cmd/filemanager` +2. `cd $GOPATH/src/github.com/hacdias/filemanager` +3. `npm install` +4. `npm run dev` - regenerates the static assets automatically +5. `go install github.com/hacdias/filemanager/cmd/filemanager` +6. Execute `$GOPATH/bin/filemanager` + +The steps 3 and 4 are only required **if you want to develop the front-end**. Otherwise, you can ignore them. Before pulling, if you made any change on assets folder, you must run the `build.sh` script on the root of this repository. + +If you are using this as a Caddy plugin, you should use its [official instructions for plugins](https://github.com/mholt/caddy/wiki/Extending-Caddy#2-plug-in-your-plugin) and import `github.com/hacdias/filemanager/caddy/filemanager`. diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 00000000..5e0fd33c --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,201 @@ +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, +and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by +the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all +other entities that control, are controlled by, or are under common +control with that entity. For the purposes of this definition, +"control" means (i) the power, direct or indirect, to cause the +direction or management of such entity, whether by contract or +otherwise, or (ii) ownership of fifty percent (50%) or more of the +outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity +exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, +including but not limited to software source code, documentation +source, and configuration files. + +"Object" form shall mean any form resulting from mechanical +transformation or translation of a Source form, including but +not limited to compiled object code, generated documentation, +and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or +Object form, made available under the License, as indicated by a +copyright notice that is included in or attached to the work +(an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object +form, that is based on (or derived from) the Work and for which the +editorial revisions, annotations, elaborations, or other modifications +represent, as a whole, an original work of authorship. For the purposes +of this License, Derivative Works shall not include works that remain +separable from, or merely link (or bind by name) to the interfaces of, +the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including +the original version of the Work and any modifications or additions +to that Work or Derivative Works thereof, that is intentionally +submitted to Licensor for inclusion in the Work by the copyright owner +or by an individual or Legal Entity authorized to submit on behalf of +the copyright owner. For the purposes of this definition, "submitted" +means any form of electronic, verbal, or written communication sent +to the Licensor or its representatives, including but not limited to +communication on electronic mailing lists, source code control systems, +and issue tracking systems that are managed by, or on behalf of, the +Licensor for the purpose of discussing and improving the Work, but +excluding communication that is conspicuously marked or otherwise +designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity +on behalf of whom a Contribution has been received by Licensor and +subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of +this License, each Contributor hereby grants to You a perpetual, +worldwide, non-exclusive, no-charge, royalty-free, irrevocable +copyright license to reproduce, prepare Derivative Works of, +publicly display, publicly perform, sublicense, and distribute the +Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of +this License, each Contributor hereby grants to You a perpetual, +worldwide, non-exclusive, no-charge, royalty-free, irrevocable +(except as stated in this section) patent license to make, have made, +use, offer to sell, sell, import, and otherwise transfer the Work, +where such license applies only to those patent claims licensable +by such Contributor that are necessarily infringed by their +Contribution(s) alone or by combination of their Contribution(s) +with the Work to which such Contribution(s) was submitted. If You +institute patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the Work +or a Contribution incorporated within the Work constitutes direct +or contributory patent infringement, then any patent licenses +granted to You under this License for that Work shall terminate +as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the +Work or Derivative Works thereof in any medium, with or without +modifications, and in Source or Object form, provided that You +meet the following conditions: + +(a) You must give any other recipients of the Work or +Derivative Works a copy of this License; and + +(b) You must cause any modified files to carry prominent notices +stating that You changed the files; and + +(c) You must retain, in the Source form of any Derivative Works +that You distribute, all copyright, patent, trademark, and +attribution notices from the Source form of the Work, +excluding those notices that do not pertain to any part of +the Derivative Works; and + +(d) If the Work includes a "NOTICE" text file as part of its +distribution, then any Derivative Works that You distribute must +include a readable copy of the attribution notices contained +within such NOTICE file, excluding those notices that do not +pertain to any part of the Derivative Works, in at least one +of the following places: within a NOTICE text file distributed +as part of the Derivative Works; within the Source form or +documentation, if provided along with the Derivative Works; or, +within a display generated by the Derivative Works, if and +wherever such third-party notices normally appear. The contents +of the NOTICE file are for informational purposes only and +do not modify the License. You may add Your own attribution +notices within Derivative Works that You distribute, alongside +or as an addendum to the NOTICE text from the Work, provided +that such additional attribution notices cannot be construed +as modifying the License. + +You may add Your own copyright statement to Your modifications and +may provide additional or different license terms and conditions +for use, reproduction, or distribution of Your modifications, or +for any such Derivative Works as a whole, provided Your use, +reproduction, and distribution of the Work otherwise complies with +the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, +any Contribution intentionally submitted for inclusion in the Work +by You to the Licensor shall be under the terms and conditions of +this License, without any additional terms or conditions. +Notwithstanding the above, nothing herein shall supersede or modify +the terms of any separate license agreement you may have executed +with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade +names, trademarks, service marks, or product names of the Licensor, +except as required for reasonable and customary use in describing the +origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or +agreed to in writing, Licensor provides the Work (and each +Contributor provides its Contributions) on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +implied, including, without limitation, any warranties or conditions +of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A +PARTICULAR PURPOSE. You are solely responsible for determining the +appropriateness of using or redistributing the Work and assume any +risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, +whether in tort (including negligence), contract, or otherwise, +unless required by applicable law (such as deliberate and grossly +negligent acts) or agreed to in writing, shall any Contributor be +liable to You for damages, including any direct, indirect, special, +incidental, or consequential damages of any character arising as a +result of this License or out of the use or inability to use the +Work (including but not limited to damages for loss of goodwill, +work stoppage, computer failure or malfunction, or any and all +other commercial damages or losses), even if such Contributor +has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing +the Work or Derivative Works thereof, You may choose to offer, +and charge a fee for, acceptance of support, warranty, indemnity, +or other liability obligations and/or rights consistent with this +License. However, in accepting such obligations, You may act only +on Your own behalf and on Your sole responsibility, not on behalf +of any other Contributor, and only if You agree to indemnify, +defend, and hold each Contributor harmless for any liability +incurred by, or claims asserted against, such Contributor by reason +of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + +To apply the Apache License to your work, attach the following +boilerplate notice, with the fields enclosed by brackets "{}" +replaced with your own identifying information. (Don't include +the brackets!) The text should be enclosed in the appropriate +comment syntax for the file format. We also recommend that a +file or class name and description of purpose be included on the +same "printed page" as the copyright notice for easier +identification within third-party archives. + +Copyright {yyyy} {name of copyright owner} + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/README.md b/README.md new file mode 100644 index 00000000..73012ccc --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# filemanager + +TODO diff --git a/assets/build/build.js b/assets/build/build.js new file mode 100644 index 00000000..c7c0fbdb --- /dev/null +++ b/assets/build/build.js @@ -0,0 +1,31 @@ +require('./check-versions')() + +process.env.NODE_ENV = 'production' + +var ora = require('ora') +var rm = require('rimraf') +var path = require('path') +var chalk = require('chalk') +var webpack = require('webpack') +var config = require('./config') +var webpackConfig = require('./webpack.prod.conf') + +var spinner = ora('building for production...') +spinner.start() + +rm(path.join(config.assetsRoot, config.assetsSubDirectory), err => { + if (err) throw err + webpack(webpackConfig, function (err, stats) { + spinner.stop() + if (err) throw err + process.stdout.write(stats.toString({ + colors: true, + modules: false, + children: false, + chunks: false, + chunkModules: false + }) + '\n\n') + + console.log(chalk.cyan(' Build complete.\n')) + }) +}) diff --git a/assets/build/check-versions.js b/assets/build/check-versions.js new file mode 100644 index 00000000..f9133e24 --- /dev/null +++ b/assets/build/check-versions.js @@ -0,0 +1,48 @@ +var chalk = require('chalk') +var semver = require('semver') +var packageConfig = require('../../package.json') +var shell = require('shelljs') +function exec (cmd) { + return require('child_process').execSync(cmd).toString().trim() +} + +var versionRequirements = [ + { + name: 'node', + currentVersion: semver.clean(process.version), + versionRequirement: packageConfig.engines.node + } +] + +if (shell.which('npm')) { + versionRequirements.push({ + name: 'npm', + currentVersion: exec('npm --version'), + versionRequirement: packageConfig.engines.npm + }) +} + +module.exports = function () { + var warnings = [] + for (var i = 0; i < versionRequirements.length; i++) { + var mod = versionRequirements[i] + if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) { + warnings.push(mod.name + ': ' + + chalk.red(mod.currentVersion) + ' should be ' + + chalk.green(mod.versionRequirement) + ) + } + } + + if (warnings.length) { + console.log('') + console.log(chalk.yellow('To use this template, you must update following to modules:')) + console.log() + for (var i = 0; i < warnings.length; i++) { + var warning = warnings[i] + console.log(' ' + warning) + } + console.log() + process.exit(1) + } +} diff --git a/assets/build/config.js b/assets/build/config.js new file mode 100644 index 00000000..885ac29d --- /dev/null +++ b/assets/build/config.js @@ -0,0 +1,26 @@ +// see http://vuejs-templates.github.io/webpack for documentation. +var path = require('path') + +module.exports = { + index: path.resolve(__dirname, '../dist/index.html'), + assetsRoot: path.resolve(__dirname, '../dist'), + assetsSubDirectory: 'static', + assetsPublicPath: '{{ .BaseURL }}/', + build: { + env: { + NODE_ENV: '"production"' + }, + productionSourceMap: true, + // Run the build command with an extra argument to + // View the bundle analyzer report after build finishes: + // `npm run build --report` + // Set to `true` or `false` to always turn it on or off + bundleAnalyzerReport: process.env.npm_config_report + }, + dev: { + env: { + NODE_ENV: '"development"' + }, + produceSourceMap: true + } +} diff --git a/assets/build/dev.js b/assets/build/dev.js new file mode 100644 index 00000000..9b42a437 --- /dev/null +++ b/assets/build/dev.js @@ -0,0 +1,35 @@ +require('./check-versions')() + +process.env.NODE_ENV = 'development' + +var rm = require('rimraf') +var path = require('path') +var chalk = require('chalk') +var webpack = require('webpack') +var config = require('./config') +var webpackConfig = require('./webpack.dev.conf') +var fs = require('fs') + +if (fs.existsSync('./rice-box.go')) { + fs.unlinkSync('./rice-box.go') +} + +if (fs.existsSync('./plugins/rice-box.go')) { + fs.unlinkSync('./plugins/rice-box.go') +} + +rm(path.join(config.assetsRoot, config.assetsSubDirectory), err => { + if (err) throw err + webpack(webpackConfig, function (err, stats) { + if (err) throw err + process.stdout.write(stats.toString({ + colors: true, + modules: false, + children: false, + chunks: false, + chunkModules: false + }) + '\n\n') + + console.log(chalk.cyan(' Build complete.\n')) + }) +}) diff --git a/assets/build/service-worker-dev.js b/assets/build/service-worker-dev.js new file mode 100644 index 00000000..979e1962 --- /dev/null +++ b/assets/build/service-worker-dev.js @@ -0,0 +1,17 @@ +// This service worker file is effectively a 'no-op' that will reset any +// previous service worker registered for the same host:port combination. +// In the production build, this file is replaced with an actual service worker +// file that will precache your site's local assets. +// See https://github.com/facebookincubator/create-react-app/issues/2272#issuecomment-302832432 + +self.addEventListener('install', () => self.skipWaiting()); + +self.addEventListener('activate', () => { + self.clients.matchAll({ type: 'window' }).then(windowClients => { + for (let windowClient of windowClients) { + // Force open pages to refresh, so that they have a chance to load the + // fresh navigation response from the local dev server. + windowClient.navigate(windowClient.url); + } + }); +}); \ No newline at end of file diff --git a/assets/build/service-worker-prod.js b/assets/build/service-worker-prod.js new file mode 100644 index 00000000..1179ec20 --- /dev/null +++ b/assets/build/service-worker-prod.js @@ -0,0 +1,55 @@ +(function() { + 'use strict'; + + // Check to make sure service workers are supported in the current browser, + // and that the current page is accessed from a secure origin. Using a + // service worker from an insecure origin will trigger JS console errors. + const isLocalhost = Boolean(window.location.hostname === 'localhost' || + // [::1] is the IPv6 localhost address. + window.location.hostname === '[::1]' || + // 127.0.0.1/8 is considered localhost for IPv4. + window.location.hostname.match( + /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/ + ) + ); + + window.addEventListener('load', function() { + if ('serviceWorker' in navigator && + (window.location.protocol === 'https:' || isLocalhost)) { + navigator.serviceWorker.register('{{ .BaseURL }}/sw.js') + .then(function(registration) { + // updatefound is fired if service-worker.js changes. + registration.onupdatefound = function() { + // updatefound is also fired the very first time the SW is installed, + // and there's no need to prompt for a reload at that point. + // So check here to see if the page is already controlled, + // i.e. whether there's an existing service worker. + if (navigator.serviceWorker.controller) { + // The updatefound event implies that registration.installing is set + const installingWorker = registration.installing; + + installingWorker.onstatechange = function() { + switch (installingWorker.state) { + case 'installed': + // At this point, the old content will have been purged and the + // fresh content will have been added to the cache. + // It's the perfect time to display a "New content is + // available; please refresh." message in the page's interface. + break; + + case 'redundant': + throw new Error('The installing ' + + 'service worker became redundant.'); + + default: + // Ignore + } + }; + } + }; + }).catch(function(e) { + console.error('Error during service worker registration:', e); + }); + } + }); +})(); diff --git a/assets/build/utils.js b/assets/build/utils.js new file mode 100644 index 00000000..616ceb3a --- /dev/null +++ b/assets/build/utils.js @@ -0,0 +1,70 @@ +var path = require('path') +var config = require('./config') +var ExtractTextPlugin = require('extract-text-webpack-plugin') + +exports.assetsPath = function (_path) { + var assetsSubDirectory = config.assetsSubDirectory + + return path.posix.join(assetsSubDirectory, _path) +} + +exports.cssLoaders = function (options) { + options = options || {} + + var cssLoader = { + loader: 'css-loader', + options: { + minimize: process.env.NODE_ENV === 'production', + sourceMap: options.sourceMap + } + } + + // generate loader string to be used with extract text plugin + function generateLoaders (loader, loaderOptions) { + var loaders = [cssLoader] + if (loader) { + loaders.push({ + loader: loader + '-loader', + options: Object.assign({}, loaderOptions, { + sourceMap: options.sourceMap + }) + }) + } + + // Extract CSS when that option is specified + // (which is the case during production build) + if (options.extract) { + return ExtractTextPlugin.extract({ + use: loaders, + fallback: 'vue-style-loader' + }) + } else { + return ['vue-style-loader'].concat(loaders) + } + } + + // https://vue-loader.vuejs.org/en/configurations/extract-css.html + return { + css: generateLoaders(), + postcss: generateLoaders(), + less: generateLoaders('less'), + sass: generateLoaders('sass', { indentedSyntax: true }), + scss: generateLoaders('sass'), + stylus: generateLoaders('stylus'), + styl: generateLoaders('stylus') + } +} + +// Generate loaders for standalone style files (outside of .vue) +exports.styleLoaders = function (options) { + var output = [] + var loaders = exports.cssLoaders(options) + for (var extension in loaders) { + var loader = loaders[extension] + output.push({ + test: new RegExp('\\.' + extension + '$'), + use: loader + }) + } + return output +} diff --git a/assets/build/vue-loader.conf.js b/assets/build/vue-loader.conf.js new file mode 100644 index 00000000..a17529fc --- /dev/null +++ b/assets/build/vue-loader.conf.js @@ -0,0 +1,12 @@ +var utils = require('./utils') +var config = require('./config') +var isProduction = process.env.NODE_ENV === 'production' + +module.exports = { + loaders: utils.cssLoaders({ + sourceMap: isProduction + ? config.build.productionSourceMap + : config.dev.produceSourceMap, + extract: isProduction + }) +} diff --git a/assets/build/webpack.base.conf.js b/assets/build/webpack.base.conf.js new file mode 100644 index 00000000..f8188022 --- /dev/null +++ b/assets/build/webpack.base.conf.js @@ -0,0 +1,69 @@ +var path = require('path') +var utils = require('./utils') +var config = require('./config') +var vueLoaderConfig = require('./vue-loader.conf') + +function resolve (dir) { + return path.join(__dirname, '..', dir) +} + +module.exports = { + entry: { + app: './assets/src/main.js' + }, + output: { + path: config.assetsRoot, + filename: '[name].js', + publicPath: config.assetsPublicPath + }, + resolve: { + extensions: ['.js', '.vue', '.json'], + alias: { + 'vue$': 'vue/dist/vue.esm.js', + '@': resolve('src') + } + }, + module: { + rules: [ + { + test: /\.(yml|yaml)$/, + loader: 'yml-loader' + }, + { + test: /\.(js|vue)$/, + loader: 'eslint-loader', + enforce: 'pre', + include: [resolve('src'), resolve('test')], + options: { + formatter: require('eslint-friendly-formatter') + } + }, + { + test: /\.vue$/, + loader: 'vue-loader', + options: vueLoaderConfig + }, + { + test: /\.js$/, + loader: 'babel-loader', + include: [resolve('src'), resolve('test')] + }, + { + test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, + loader: 'url-loader', + options: { + limit: 10000, + name: utils.assetsPath('img/[name].[hash:7].[ext]') + } + }, + { + test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, + loader: 'url-loader', + options: { + // limit: 10000, + name: utils.assetsPath('fonts/[name].[hash:7].[ext]') + } + } + ] + } +} diff --git a/assets/build/webpack.dev.conf.js b/assets/build/webpack.dev.conf.js new file mode 100644 index 00000000..dd75ac4e --- /dev/null +++ b/assets/build/webpack.dev.conf.js @@ -0,0 +1,81 @@ +var fs = require('fs') +var path = require('path') +var utils = require('./utils') +var webpack = require('webpack') +var config = require('./config') +var merge = require('webpack-merge') +var baseWebpackConfig = require('./webpack.base.conf') +var HtmlWebpackPlugin = require('html-webpack-plugin') +var ExtractTextPlugin = require('extract-text-webpack-plugin') +var FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin') +var CopyWebpackPlugin = require('copy-webpack-plugin') + +module.exports = merge(baseWebpackConfig, { + watch: true, + module: { + rules: utils.styleLoaders({ + sourceMap: config.dev.produceSourceMap, + extract: true + }) + }, + devtool: '#cheap-module-eval-source-map', + output: { + path: config.assetsRoot, + filename: utils.assetsPath('js/[name].[chunkhash].js'), + chunkFilename: utils.assetsPath('js/[id].[chunkhash].js') + }, + plugins: [ + new webpack.NoEmitOnErrorsPlugin(), + new FriendlyErrorsPlugin(), + new webpack.DefinePlugin({ + 'process.env': config.dev.env + }), + // extract css into its own file + new ExtractTextPlugin({ + filename: utils.assetsPath('css/[name].[contenthash].css') + }), + // generate dist index.html with correct asset hash for caching. + // you can customize output by editing /index.html + // see https://github.com/ampedandwired/html-webpack-plugin + new HtmlWebpackPlugin({ + filename: config.index, + template: 'assets/index.html', + inject: true, + // necessary to consistently work with multiple chunks via CommonsChunkPlugin + chunksSortMode: 'dependency', + serviceWorkerLoader: `` + }), + // split vendor js into its own file + new webpack.optimize.CommonsChunkPlugin({ + name: 'vendor', + minChunks: function (module, count) { + // any required modules inside node_modules are extracted to vendor + return ( + module.resource && + /\.js$/.test(module.resource) && + module.resource.indexOf( + path.join(__dirname, '../../node_modules') + ) === 0 + ) + } + }), + // extract webpack runtime and module manifest to its own file in order to + // prevent vendor hash from being updated whenever app bundle is updated + new webpack.optimize.CommonsChunkPlugin({ + name: 'manifest', + chunks: ['vendor'] + }), + new CopyWebpackPlugin([ + { + from: path.resolve(__dirname, '../static'), + to: config.assetsSubDirectory, + ignore: ['.*'] + }, + { + from: path.resolve(__dirname, '../../node_modules/codemirror/mode/*/*'), + to: path.join(config.assetsSubDirectory, 'js/codemirror/mode/[name]/[name].js') + } + ]) + ] +}) diff --git a/assets/build/webpack.prod.conf.js b/assets/build/webpack.prod.conf.js new file mode 100644 index 00000000..bf992924 --- /dev/null +++ b/assets/build/webpack.prod.conf.js @@ -0,0 +1,127 @@ +var fs = require('fs') +var path = require('path') +var utils = require('./utils') +var webpack = require('webpack') +var config = require('./config') +var merge = require('webpack-merge') +var baseWebpackConfig = require('./webpack.base.conf') +var CopyWebpackPlugin = require('copy-webpack-plugin') +var HtmlWebpackPlugin = require('html-webpack-plugin') +var ExtractTextPlugin = require('extract-text-webpack-plugin') +var OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin') +var SWPrecacheWebpackPlugin = require('sw-precache-webpack-plugin') +var UglifyJS = require('uglify-js') + +var env = config.build.env + +var webpackConfig = merge(baseWebpackConfig, { + module: { + rules: utils.styleLoaders({ + sourceMap: config.build.productionSourceMap, + extract: true + }) + }, + devtool: config.build.productionSourceMap ? '#source-map' : false, + output: { + path: config.assetsRoot, + filename: utils.assetsPath('js/[name].[chunkhash].js'), + chunkFilename: utils.assetsPath('js/[id].[chunkhash].js') + }, + plugins: [ + new CopyWebpackPlugin([ + { + from: path.resolve(__dirname, '../static'), + to: config.assetsSubDirectory, + ignore: ['.*'] + }, + { + from: path.resolve(__dirname, '../../node_modules/codemirror/mode/*/*'), + to: path.join(config.assetsSubDirectory, 'js/codemirror/mode/[name]/[name].js'), + transform: function (source, path) { + let result = UglifyJS.minify(source.toString('utf8')) + if (result.error !== undefined) { + return source + } + return result.code + } + } + ]), + // http://vuejs.github.io/vue-loader/en/workflow/production.html + new webpack.DefinePlugin({ + 'process.env': env + }), + new webpack.optimize.UglifyJsPlugin({ + compress: { + warnings: false + }, + sourceMap: true + }), + // extract css into its own file + new ExtractTextPlugin({ + filename: utils.assetsPath('css/[name].[contenthash].css') + }), + // Compress extracted CSS. We are using this plugin so that possible + // duplicated CSS from different components can be deduped. + new OptimizeCSSPlugin({ + cssProcessorOptions: { + safe: true + } + }), + // generate dist index.html with correct asset hash for caching. + // you can customize output by editing /index.html + // see https://github.com/ampedandwired/html-webpack-plugin + new HtmlWebpackPlugin({ + filename: config.index, + template: 'assets/index.html', + inject: true, + minify: { + removeComments: true, + collapseWhitespace: true, + removeAttributeQuotes: true, + minifyCSS: true + // more options: + // https://github.com/kangax/html-minifier#options-quick-reference + }, + // necessary to consistently work with multiple chunks via CommonsChunkPlugin + chunksSortMode: 'dependency', + serviceWorkerLoader: `` + }), + // split vendor js into its own file + new webpack.optimize.CommonsChunkPlugin({ + name: 'vendor', + minChunks: function (module, count) { + // any required modules inside node_modules are extracted to vendor + return ( + module.resource && + /\.js$/.test(module.resource) && + module.resource.indexOf( + path.join(__dirname, '../../node_modules') + ) === 0 + ) + } + }), + // extract webpack runtime and module manifest to its own file in order to + // prevent vendor hash from being updated whenever app bundle is updated + new webpack.optimize.CommonsChunkPlugin({ + name: 'manifest', + chunks: ['vendor'] + }), + // service worker caching + new SWPrecacheWebpackPlugin({ + cacheId: 'File Browser', + filename: 'sw.js', + replacePrefix: '{{ .BaseURL }}/', + staticFileGlobs: ['dist/**/*.{js,html,css}'], + minify: true, + stripPrefix: 'dist/' + }) + ] +}) + +if (config.build.bundleAnalyzerReport) { + var BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin + webpackConfig.plugins.push(new BundleAnalyzerPlugin()) +} + +module.exports = webpackConfig diff --git a/assets/index.html b/assets/index.html new file mode 100644 index 00000000..8abc3097 --- /dev/null +++ b/assets/index.html @@ -0,0 +1,116 @@ + + + + + + + + + + + + File Browser + + + + + + + + + + + + + + + + + + + {{ if .ReCaptcha -}} + + {{ end }} + + <% for (var chunk of webpack.chunks) { + for (var file of chunk.files) { + if (file.match(/\.(js|css)$/)) { %> + <% }}} %> + + + + +
+ +
+
+
+
+
+
+
+ + <%= htmlWebpackPlugin.options.serviceWorkerLoader %> + + diff --git a/assets/src/App.vue b/assets/src/App.vue new file mode 100644 index 00000000..ba1aa39d --- /dev/null +++ b/assets/src/App.vue @@ -0,0 +1,78 @@ + + + + + diff --git a/assets/src/assets/fonts/material/icons.woff2 b/assets/src/assets/fonts/material/icons.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..05a8ab5d2e69c71d6e69bdafbf1601dd5dff2b07 GIT binary patch literal 47620 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

dwtib={~_1^@O~rS8<3sA|t04JLL!-NxZX$5n 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

MOQ9ju8O#jB4RxdN~9kw5@Or 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 literal 0 HcmV?d00001 diff --git a/assets/src/assets/fonts/roboto/medium-cyrillic.woff2 b/assets/src/assets/fonts/roboto/medium-cyrillic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..b3ca824db64d0186f7e52b1f7464413a638f9f18 GIT binary patch literal 10060 zcmV-SC$rdhPew8T0RR9104GcU5dZ)H09up)04D1I0ssI200000000000000000000 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 mb=gU~>F$4Gvd<#C<9HE{ARVQ^Cs&+nPJhBM@ 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 literal 0 HcmV?d00001 diff --git a/assets/src/assets/fonts/roboto/medium-greek-ext.woff2 b/assets/src/assets/fonts/roboto/medium-greek-ext.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..7e1a807819496f6e3e52ce083544104841602e05 GIT binary patch literal 1412 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 K>W@?d0002eJ=}u; literal 0 HcmV?d00001 diff --git a/assets/src/assets/fonts/roboto/medium-latin-ext.woff2 b/assets/src/assets/fonts/roboto/medium-latin-ext.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..604b89354421a545b529e76acaacb9c7f5d50988 GIT binary patch literal 11912 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 OA2`Fug|G}F3IG6(|K7_0 literal 0 HcmV?d00001 diff --git a/assets/src/assets/fonts/roboto/medium-latin.woff2 b/assets/src/assets/fonts/roboto/medium-latin.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..5f96609d81a812b8f2557a4e9bba6db29205ae0e GIT binary patch literal 14596 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 literal 0 HcmV?d00001 diff --git a/assets/src/assets/fonts/roboto/medium-vietnamese.woff2 b/assets/src/assets/fonts/roboto/medium-vietnamese.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..d92b712507a5d24f7910ccd4c2394570d4f405b5 GIT binary patch literal 4780 zcmV;d5>xGWPew8T0RR9101~VK5dZ)H04pE>01`_80ssI200000000000000000000 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 ilgW1vW5`h!}HUcCAgd7Wk5C8-q1%eOcS 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 WCa?E`${Nr6J&WjV<7!di4FCYRVoq}a literal 0 HcmV?d00001 diff --git a/assets/src/assets/fonts/roboto/normal-greek-ext.woff2 b/assets/src/assets/fonts/roboto/normal-greek-ext.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..ed0b13ca09d1372918d42c2a7e3f944b762d80dc GIT binary patch literal 1432 zcmV;J1!wwqPew8T0RR9100o!;5&!@I010pa00le%0ssI200000000000000000000 z0000Q6dQpi91I3v09Xi234=Tl3<`s2gGdq-0X7080~`ww00bZff)EEF41rr44hYDO zly2TC2&kqydmw_?d`fZ(pkz5f4k<=dU0r}}4iKq;FXojBL@ogQ5UgVV|7}0D|H`_m z7Vsr?jR&iGR|FooZfbhQPAC9$q~>rLUOU}8$bJOi!Kevr2=nv6MS|^UmDP<2ir4Mg zI>>~ctz835A6&D2Ba6@gve|lTLRF!vQ0fi_y0&hl80*F)c1%N|YYr3&+gV1LNJ)_W zeQtVw-3$r+5Ky%f;zD%LFVkm$7)_?sH|bUYTTgw#7r3&mgbx8>fSQ(;8sd=s-^MU> z+b>fv5my6fWxB*f4Fyoa62cBac5?v>&@cg%H3W=q%JzNnP#xpWxe(vj@Lqlsi##w{c0?y{`1sMNZkYwnZ<0kgj`y&p3& z|3{@BX}GC6p*7i-l!q$~8LzaAaM-MpPqrrQRh35AvZB&9KTP5W`U+=C+3U6`QR!%X zKu1!>4T+UX#U{pv<>6GyNX_1;YIt(n2L-HJ9Iw7s^`JQ1nrlAnSPfe1YE3-5U98He zbVeFFl2t4U@8*igaaB?2j>z%!t38qQL~+_obtE5(qp|Km2d5LshZv{+u-P)?*p6G~ z=?4R($qMi5jmY@v2ThhH)8nZ$9%8)uL!}jcDG>(>*Xswsjt}<%PGAwx8=vz4uc2dD zmHHk{g`14<*&IRNKL750z5R}X<^Fy#5PQkt5591vzWS(B9QpWb_c>pFNawMST&WKd z9R84fyN}P_x6Dn_)$Qipvl8!#NzbCoXVtFd==R{zs+~W&cYS@WDps7f{;#^F_2OIK zyI_(1W_gG6mW$_#*ZSVNXo>5#JMMPfazXsv$A$Vv?j!dP>5jg%%kx{tlcIa)r4mT{JinDr z>kWBXUZf%IIno=*7z(A)L;Ktaj< zM=u9EOHmP;6M+Z9h=PyT!?K#Utbtf3Lb2FJi0Vln3D(liCLGzscKh^py69mCgREgI zopixz+vsBx8!?$q38f~QM!+^dP5g~Bd)O?>M|#wo^Am9 zMZ1=ljRlT_J+1SKfiqDxdqM$l?Ofe3dt}~yY<+Vb;Q26NX2LpZ~-;~Bm;vG3xP@i1Rw>15C+A6|ivt!1SjvQIt&1;i9M)dr>O;|8T&KA=rmnuR(EQC>A3gi*+|lAcASOm2$=! zd~$Y0eObIWpUo;c4d0*Uz3NdywMhvdtxyZCh0Zf<@VV;7?he0DXZ>n6Y8&PFkfdnB z^Yop4r|MRB2O2TS5Sj5K@g-;teXg5-;McyLc`|>uL@Fs*g3!e~5fZ)7vgq6a+~&aQ z#x8udQGk)?-~2`e>b*XZrxFu3htR;O!y97yY32b(| zcJ8nOgCJ1g|JAjm?Rhz~AnA#wz|3Urp_ZUFF{@>pesAh+j7%fT!n@09xhj^`EU&xl ztKX{d4^IfYd4N9%B&>8+hnEiEEn=zs8&=kUHb}6xfAA=(QLID=rR~-dX#n8x|IhVi z-|Z_=3aEgR0v-982HLTz3yK$rXsyPV#B?Q&PsfDiZ2sCBy%k`%llQC4k72 zhSs5FY%+eeC89jHEY3n4aU+Y;osOMrxNJy8EbWPb?;;w~m;F&d0IM_sa_2=A#Y!kD zG)0xBsL>P&P0<`r(W;H2gYFc)jHH;*{aF>0OrubMkC9d~Js%AmN%o8In?QkOw^G z1zzJFb>btwP?Re7P#l!1@qi?;&C5H-v!e_>%2Y@0jSDt)PF$D@0DN&|e zr5d&BBs6N$NjKf~($@fk4KdU(!;LhdC7+L%!kksaq~=;xpOD10tSJjE*QVC%Qrk5_ zQ7ee1ux7O)w5&ynM0@;e3!!Lglb4E!s@qW0n!0w>w=%|E(o&z+Mzl4>qB@dV;TNzD zt#XB7#FnrLkc6=4pfI)kXqbOtO#&DSTUOMdT1lGf&{W^8HNr98e@*=&#M)QTj@s5~ zte=%=xmNg2UJuHXL=DQF6b=kFu%Iq`!lAGc)osd)d3Cb2<%G5+@LC6ywyvT!m4Z~a zrY5}lRwcq|qM}7l;iR_OiE=MdX^lXeK8baTd8Q7*Ky@_8G1maj%?sfH#bS0V^TjzbQKX4)nQ zS_OBHd&u5ocbBzPwWaZqD+!$80C7N{XG8kX74GH9|1kTOJAfE<9$?xxMhxw5Nw#auC8+S;`hZ_ByaA+( z5Nz2s<7etbPt2^IowIKaO?=moEnMe`Gi{d6s)?IjbFhp2d+)!$0C1IgnMeQi{`U+; zI)HrbU^v@xmTaBm=&Xyb-^$)dAAR+cufGAJ1{x%0u(%-#zHMRQ^g$FUHo{1wj5fwt z{xmi=nUDT zqZ?%3qK80t$YF7$ZBK<9g&YTcASXaaKIG)mr$B$mX&q6>nWfKyfsk`^5rdqci@}f! za}kGJoQoll%T^t5Wy)1BG;s~)q7ZUj$8g9E@P9prHx6Ch74{T!%=Jg;LiR$s>K7u<#-U98A_uyTl zqY7tju*+KSFw^?J_)#VEBeEx-pRXa=fbm>`U{KrOdccu`Pk9rinsv_&rt zPe3aNcD0RDDTXMp$}jz)YutdYf}HYCg%~lxEJ3wRavWRe)y?#Z^|Sq(EH?XGrLx4A zIXqbex>|x52DRa5iHB=-vk)fO`dG-^UuKmOXOrEigr~TZRSu&B5K@w&q5&JEBvQTe zVg*m!uB*_n+$gKQ-gfcR66-#tM~qpfF?DSS%LFf*UFG%w#y%f|B6|`)6hF5Bb4u|S zl_Pj(6fMWDAAQALj7sX?wIEQqa5MdSAc|sMVQr8>*XylNw8fn=vPg%r`ez9fVG2K` z?nW(6e9uH_r2_+c zg(kuQUCahkQN0+~V~KnqU!nn$NE%obC~DApQcb6$gr^~e<3QMiGr=rUkQ>(4vB7pA zDF(UYJ%177bu9Q479)mKXTggIN@4LPRg6j)gw)yCBNNWzsixN~r4}j8HJ~-K*`@NT z^xumbQoH{Xvfo3=JEK3C{~9pa8$#BP+0y{?kxF+wFv@?i_D|qQB>L38B%g1l6xTN( zS%);ivne);P-@{)ozn?MN?p9U)gC)3T>}ql=;7K?nsEGS!~D&FqZq1*bv++%YpLF% zkVgyJt}5ahYT#a~>I^Ajq4g$!f!us{eH8LE;ZWCaQ2xsp6=jxZzirRVkYl5Av#V>U zd>bX_cnOO;Fgt_=`(KWVjS&?*>PBjlJg1q!BEfWycF3h6j+j>1Q$I%Lsca;-i@QcM z!`Y_%-UxG{PC=Mdh2sk-EG%po++qdXY+QbXw3NW#@#Gy7AGB~iW8lSC0c#uXIED#6 zNNuxrroB%l(`#QIQdX9ClzryPWf*k!EkEoR-Lv&+Am|t|_#W zXuR&<6{*AaKSomM7(G#fw%D-t-+2$_+)j+fUPfiNyO8S2NptnbIs<)(0n zN`{4=qL(rIYOuVZyd6C*&az_Yy-+7aiUJQZ)i&n);tP<)>qRIfOHy0p8@KHuFpMHU z?xdrD)4G*oT5x~$+zFa=D?o8aE1CNvfWl!xnTKxEA(zl(pvTc3n=C+Y@TE)ii#E~! zm*_vCHs<=m=v1-*V`ZtQa^LBkx;*O{*n zVR48g{@Vs%G?IL#pkR+GX@$chNC)U!pb0&TZv0W$7&sf)bQ}3OhX8L`)jv}8fyn+< zJ(Ogr0x_7E10&E{_UN51ZC{JURe+F}CNPrC`b=v(?>;4^Fyi9U1Rl)&c^-IrHrPQ^ zEAdGNRG%$rd2tbkC;NF|zLJvi0Q`94c#qL4;48dK? zQ)_8#re|;g?l$sba#F}OMW|88zbn%!+WE!>;>jum6ieZ8g4qMfqL-JmF-bGbDpw4J zVQ2Gksnh3OzNn`DRX!1)@Nv2wTQMCU^J&6#=WMLSu#VddlED1|Qm1|NeLHsCnG+$3 zKTS7x>^1xO;BQj8KU6>%h8)FI(O$?Uw~cKs}29OM&q;G@XT zX;7=tYJlP+XzI9fQs56|rSE}>ob^5MUK|A1^)SA3u7!R@e$9&!Z}>e3>MtP38C~l} z6=f(cJwUUi7Nsc#YdsLW$$z{za?eX7c; zxBH_|eM*La`s!(i$!7yXHT#e~KbxC<@C*XBX5rhYC{T3Yh6ec<=c@$E&ZxX|Tse#3ueXkspUeLzYr zWP~-rh@8waU=nvD3s7UI$E%tDNNJAx=2TsOtEM6{eetElXlv8@>BLRSQ`k7?#Br>PyU1(ex0-TwBJM2}cHw_!hd&xSkU!V!xJXgzE zoi@YBVRTpFkGKd;P*Eo2?AISH+$*q!LexSb{OJ_)JilvDEfZO~#WS1Uxu(9cL2 z4rKOXwLX;;mS(=a<$`n+e!~0fwrZQ$4T>yXS$lhN{oDMG%TSgjx<2kQil^(I_6iF? z!fB|M1oe9{=Y%4U+f()t*_ppVZF!~sN%@RMFU0p9l)a5S%PsX_H2;h zo%|_GZs-yr;mq&&6e{RaZmsWpYnjeM&Rq63>xSAfFf5xLdWMg-w)~0aZ%<=ki4R|& zj*6e8QM@j)Lw3ib;sB#&R++y=_}I9@@$Rq1y>T&x-FEtEWkFdH-f}cD?`+jzuYyy7 zl*11*qpjJ~AyF!w?ENc z3q6!uF}y92`40!;rQ8t7Q|4Tz_Dh8uaG|bvbB=u-ValbmT0nLC~bQ z+?T=cQnJg(1?hPvivQv=i>g|&PYIT+aHj}#ZH#~y`Tw-^R$oz5%K0-{7uemqRuHkw z_HtG�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 literal 0 HcmV?d00001 diff --git a/assets/src/assets/fonts/roboto/normal-latin-ext.woff2 b/assets/src/assets/fonts/roboto/normal-latin-ext.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..0c7aec28f513926a7e749abc12863001e2f1b65c GIT binary patch literal 12008 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 GC;$N0_xDr) literal 0 HcmV?d00001 diff --git a/assets/src/assets/fonts/roboto/normal-latin.woff2 b/assets/src/assets/fonts/roboto/normal-latin.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..120796bb71997275eafef44818771a32bd857e12 GIT binary patch literal 14584 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 literal 0 HcmV?d00001 diff --git a/assets/src/assets/fonts/roboto/normal-vietnamese.woff2 b/assets/src/assets/fonts/roboto/normal-vietnamese.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..7936b665b54003fab3aafced6d6ae16c751d3736 GIT binary patch literal 4896 zcmV+*6W{E2Pew8T0RR91023ep5&!@I04{U@0206e0ssI200000000000000000000 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 Stqovy*8;1vBH2AlK^6c6HeG@M literal 0 HcmV?d00001 diff --git a/assets/src/assets/logo.svg b/assets/src/assets/logo.svg new file mode 100644 index 00000000..62e6798a --- /dev/null +++ b/assets/src/assets/logo.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/assets/src/components/Header.vue b/assets/src/components/Header.vue new file mode 100644 index 00000000..46a10b84 --- /dev/null +++ b/assets/src/components/Header.vue @@ -0,0 +1,220 @@ + + + diff --git a/assets/src/components/Languages.vue b/assets/src/components/Languages.vue new file mode 100644 index 00000000..e40a634d --- /dev/null +++ b/assets/src/components/Languages.vue @@ -0,0 +1,23 @@ + + + diff --git a/assets/src/components/Search.vue b/assets/src/components/Search.vue new file mode 100644 index 00000000..b5b434f3 --- /dev/null +++ b/assets/src/components/Search.vue @@ -0,0 +1,265 @@ + + + diff --git a/assets/src/components/Sidebar.vue b/assets/src/components/Sidebar.vue new file mode 100644 index 00000000..6c18d1c3 --- /dev/null +++ b/assets/src/components/Sidebar.vue @@ -0,0 +1,90 @@ + + + diff --git a/assets/src/components/buttons/Copy.vue b/assets/src/components/buttons/Copy.vue new file mode 100644 index 00000000..164cf347 --- /dev/null +++ b/assets/src/components/buttons/Copy.vue @@ -0,0 +1,17 @@ + + + diff --git a/assets/src/components/buttons/Delete.vue b/assets/src/components/buttons/Delete.vue new file mode 100644 index 00000000..bb3c0fdf --- /dev/null +++ b/assets/src/components/buttons/Delete.vue @@ -0,0 +1,17 @@ + + + diff --git a/assets/src/components/buttons/Download.vue b/assets/src/components/buttons/Download.vue new file mode 100644 index 00000000..bcef980b --- /dev/null +++ b/assets/src/components/buttons/Download.vue @@ -0,0 +1,39 @@ + + + diff --git a/assets/src/components/buttons/Info.vue b/assets/src/components/buttons/Info.vue new file mode 100644 index 00000000..164e59c9 --- /dev/null +++ b/assets/src/components/buttons/Info.vue @@ -0,0 +1,17 @@ + + + diff --git a/assets/src/components/buttons/Move.vue b/assets/src/components/buttons/Move.vue new file mode 100644 index 00000000..5d9250f4 --- /dev/null +++ b/assets/src/components/buttons/Move.vue @@ -0,0 +1,17 @@ + + + diff --git a/assets/src/components/buttons/Rename.vue b/assets/src/components/buttons/Rename.vue new file mode 100644 index 00000000..a2fd2cbf --- /dev/null +++ b/assets/src/components/buttons/Rename.vue @@ -0,0 +1,17 @@ + + + diff --git a/assets/src/components/buttons/Schedule.vue b/assets/src/components/buttons/Schedule.vue new file mode 100644 index 00000000..0484d6bd --- /dev/null +++ b/assets/src/components/buttons/Schedule.vue @@ -0,0 +1,21 @@ + + + diff --git a/assets/src/components/buttons/Share.vue b/assets/src/components/buttons/Share.vue new file mode 100644 index 00000000..40c769f5 --- /dev/null +++ b/assets/src/components/buttons/Share.vue @@ -0,0 +1,17 @@ + + + diff --git a/assets/src/components/buttons/SwitchView.vue b/assets/src/components/buttons/SwitchView.vue new file mode 100644 index 00000000..bc954caa --- /dev/null +++ b/assets/src/components/buttons/SwitchView.vue @@ -0,0 +1,36 @@ + + + diff --git a/assets/src/components/buttons/Upload.vue b/assets/src/components/buttons/Upload.vue new file mode 100644 index 00000000..f5d738ad --- /dev/null +++ b/assets/src/components/buttons/Upload.vue @@ -0,0 +1,17 @@ + + + diff --git a/assets/src/components/files/Editor.vue b/assets/src/components/files/Editor.vue new file mode 100644 index 00000000..f0367f3a --- /dev/null +++ b/assets/src/components/files/Editor.vue @@ -0,0 +1,143 @@ + + + diff --git a/assets/src/components/files/Listing.vue b/assets/src/components/files/Listing.vue new file mode 100644 index 00000000..93fd3179 --- /dev/null +++ b/assets/src/components/files/Listing.vue @@ -0,0 +1,381 @@ + + + diff --git a/assets/src/components/files/ListingItem.vue b/assets/src/components/files/ListingItem.vue new file mode 100644 index 00000000..3217ee20 --- /dev/null +++ b/assets/src/components/files/ListingItem.vue @@ -0,0 +1,158 @@ + + + diff --git a/assets/src/components/files/Preview.vue b/assets/src/components/files/Preview.vue new file mode 100644 index 00000000..78aecc9a --- /dev/null +++ b/assets/src/components/files/Preview.vue @@ -0,0 +1,139 @@ + + + diff --git a/assets/src/components/prompts/Copy.vue b/assets/src/components/prompts/Copy.vue new file mode 100644 index 00000000..b1523d1c --- /dev/null +++ b/assets/src/components/prompts/Copy.vue @@ -0,0 +1,69 @@ + + + diff --git a/assets/src/components/prompts/Delete.vue b/assets/src/components/prompts/Delete.vue new file mode 100644 index 00000000..10d1fe80 --- /dev/null +++ b/assets/src/components/prompts/Delete.vue @@ -0,0 +1,80 @@ + + + diff --git a/assets/src/components/prompts/Download.vue b/assets/src/components/prompts/Download.vue new file mode 100644 index 00000000..6eb743b1 --- /dev/null +++ b/assets/src/components/prompts/Download.vue @@ -0,0 +1,47 @@ + + + diff --git a/assets/src/components/prompts/FileList.vue b/assets/src/components/prompts/FileList.vue new file mode 100644 index 00000000..15e9c538 --- /dev/null +++ b/assets/src/components/prompts/FileList.vue @@ -0,0 +1,140 @@ + + + diff --git a/assets/src/components/prompts/Help.vue b/assets/src/components/prompts/Help.vue new file mode 100644 index 00000000..95f983b8 --- /dev/null +++ b/assets/src/components/prompts/Help.vue @@ -0,0 +1,34 @@ + + + + diff --git a/assets/src/components/prompts/Info.vue b/assets/src/components/prompts/Info.vue new file mode 100644 index 00000000..f26450a6 --- /dev/null +++ b/assets/src/components/prompts/Info.vue @@ -0,0 +1,122 @@ + + + diff --git a/assets/src/components/prompts/Move.vue b/assets/src/components/prompts/Move.vue new file mode 100644 index 00000000..8df25dd8 --- /dev/null +++ b/assets/src/components/prompts/Move.vue @@ -0,0 +1,70 @@ + + + diff --git a/assets/src/components/prompts/NewArchetype.vue b/assets/src/components/prompts/NewArchetype.vue new file mode 100644 index 00000000..6ec99fb4 --- /dev/null +++ b/assets/src/components/prompts/NewArchetype.vue @@ -0,0 +1,76 @@ + + + + diff --git a/assets/src/components/prompts/NewDir.vue b/assets/src/components/prompts/NewDir.vue new file mode 100644 index 00000000..7730ad22 --- /dev/null +++ b/assets/src/components/prompts/NewDir.vue @@ -0,0 +1,60 @@ + + + + diff --git a/assets/src/components/prompts/NewFile.vue b/assets/src/components/prompts/NewFile.vue new file mode 100644 index 00000000..c7729b9c --- /dev/null +++ b/assets/src/components/prompts/NewFile.vue @@ -0,0 +1,61 @@ + + + + diff --git a/assets/src/components/prompts/Prompts.vue b/assets/src/components/prompts/Prompts.vue new file mode 100644 index 00000000..84bc4e12 --- /dev/null +++ b/assets/src/components/prompts/Prompts.vue @@ -0,0 +1,87 @@ + + + diff --git a/assets/src/components/prompts/Rename.vue b/assets/src/components/prompts/Rename.vue new file mode 100644 index 00000000..3c65b99b --- /dev/null +++ b/assets/src/components/prompts/Rename.vue @@ -0,0 +1,84 @@ + + + diff --git a/assets/src/components/prompts/Replace.vue b/assets/src/components/prompts/Replace.vue new file mode 100644 index 00000000..a310e9f4 --- /dev/null +++ b/assets/src/components/prompts/Replace.vue @@ -0,0 +1,31 @@ + + + diff --git a/assets/src/components/prompts/Schedule.vue b/assets/src/components/prompts/Schedule.vue new file mode 100644 index 00000000..fbb5b772 --- /dev/null +++ b/assets/src/components/prompts/Schedule.vue @@ -0,0 +1,47 @@ + + + + diff --git a/assets/src/components/prompts/Share.vue b/assets/src/components/prompts/Share.vue new file mode 100644 index 00000000..5408af6a --- /dev/null +++ b/assets/src/components/prompts/Share.vue @@ -0,0 +1,162 @@ + + + + diff --git a/assets/src/css/base.css b/assets/src/css/base.css new file mode 100644 index 00000000..c6eeaa79 --- /dev/null +++ b/assets/src/css/base.css @@ -0,0 +1,214 @@ +body { + font-family: 'Roboto', sans-serif; + padding-top: 4em; + background-color: #fafafa; + color: #333333; +} + +* { + box-sizing: border-box; +} + +*, +*:hover, +*:active, +*:focus { + outline: 0 +} + +a { + text-decoration: none; +} + +img { + max-width: 100%; +} + +audio, +video { + width: 100%; +} + +pre { + padding: 1em; + border: 1px solid #e6e6e6; + border-radius: 0.5em; + background-color: #f5f5f5; + white-space: pre-wrap; + white-space: -moz-pre-wrap; + white-space: -pre-wrap; + white-space: -o-pre-wrap; + word-wrap: break-word; +} + +input, +button { + outline: 0 !important; +} + +input[type="submit"], +button { + border: 0; + padding: .5em 1em; + margin-left: .5em; + border-radius: .1em; + cursor: pointer; + background: #2196f3; + color: #fff; + border: 1px solid rgba(0, 0, 0, 0.05); + box-shadow: 0 0 5px rgba(0, 0, 0, 0.05); + transition: .1s ease all; +} + +input[type="submit"]:hover, +button:hover { + background-color: #1E88E5; +} + +input[type="submit"].block, +button.block { + display: block; + width: 100%; + margin: 0 0 1em; +} + +button.delete { + background: #F44336; +} + +button.delete:hover { + background: #D32F2F; +} + +button.cancel { + background-color: #ECEFF1; + color: #37474F; +} + +button.cancel:hover { + background-color: #e9eaeb; +} + +button.flat, +input[type="submit"].flat { + color: #1E88E5; + background: transparent; + box-shadow: 0 0 0; + border: 0; + margin-left: 0; + text-transform: uppercase; +} + +button.flat:hover, +input[type="submit"].flat:hover { + background: rgba(0,0,0,0.05) +} + +button.flat.delete { + color: #F44336; +} + +button.flat.cancel { + color: #ccc; +} + +button.flat[disabled] { + color: #ccc; + cursor: not-allowed; +} + +.mobile-only { + display: none !important; +} + +.container { + width: 95%; + max-width: 960px; + margin: 1em auto 0; +} + +i.spin { + animation: 1s spin linear infinite; +} + +#app { + transition: .2s ease padding; +} + +#app.multiple { + padding-bottom: 4em; +} + +nav { + width: 16em; + position: fixed; + top: 4em; + left: 0; +} + +nav .action { + width: 100%; + display: block; + border-radius: 0; + font-size: 1.1em; + padding: .5em; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +nav>div { + border-top: 1px solid rgba(0, 0, 0, 0.05); +} + +nav .action>* { + vertical-align: middle; +} + +main { + min-height: 1em; + margin: 0 1em 1em auto; + width: calc(100% - 19em); +} + +#breadcrumbs { + height: 3em; + border-bottom: 1px solid rgba(0, 0, 0, 0.05); +} + +#breadcrumbs span, +#breadcrumbs { + display: flex; + align-items: center; + color: #6f6f6f; +} + +#breadcrumbs a { + color: inherit; + transition: .1s ease-in; + border-radius: .125em; +} + +#breadcrumbs a:hover { + background-color: rgba(0,0,0, 0.05); +} + +#breadcrumbs span a { + padding: .2em; +} + +#progress { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 3px; + z-index: 9999999999; +} + +#progress div { + height: 100%; + background-color: #40c4ff; + width: 0; + transition: .2s ease width; +} diff --git a/assets/src/css/dashboard.css b/assets/src/css/dashboard.css new file mode 100644 index 00000000..dbb22548 --- /dev/null +++ b/assets/src/css/dashboard.css @@ -0,0 +1,420 @@ +.dashboard { + max-width: 600px; + margin: 1em 0; +} + +a { + color: inherit +} + +select, +textarea, +input[type="text"], +input[type="password"] { + padding: 0.5em 0; + line-height: 1; + display: block; + border: 0; + border-bottom: 1px solid #dddddd; + transition: .2s ease border; + width: 100%; + background: transparent; +} + +textarea { + line-height: 1.15; + padding: .5em; + border: 1px solid #ddd; + font-family: monospace; + min-height: 10em; + resize: none; + border-radius: 2px; +} + +.dashboard #locale, +.dashboard #username, +.dashboard #password, +.dashboard #scope { + max-width: 18em; +} + +.dashboard #locale { + margin-top: .5em; +} + +textarea:focus, +textarea:hover, +input[type="text"]:focus, +input[type="password"]:focus, +input[type="text"]:hover, +input[type="password"]:hover { + border-color: #2979ff; +} + +input.red { + border-color: red; +} + +input.green { + border-color: green; +} + +.dashboard p label { + margin-bottom: .2em; + display: block; + font-size: .8em; + font-weight: 500; + color: rgba(0, 0, 0, 0.57); +} + +li code, +p code { + background: rgba(0, 0, 0, 0.05); + padding: .1em; + border-radius: .2em; +} + +.small { + font-size: .8em; + line-height: 1.5; +} + +.dashboard #nav { + list-style: none; + display: flex; + color: rgb(84, 110, 122); + font-weight: 500; + margin: 0 0 1em; + font-size: .8em; + text-align: center; + justify-content: space-between; + padding: 0; +} + +.dashboard #nav li { + width: 100%; + padding: 0 0 1em; + border-bottom: 2px solid rgba(0, 0, 0, 0.05); +} + +.dashboard #nav li.active { + border-color: #2196f3 +} + +.dashboard #nav i { + font-size: 1em; + vertical-align: middle; +} + +table { + border-collapse: collapse; + width: 100%; +} + +table tr { + border-bottom: 1px solid #ccc; +} + +table tr:last-child { + border: 0; +} + +table th { + font-weight: 500; + color: #757575; + text-align: left; +} + +table th, +table td { + padding: .5em 0; +} + +table td.small { + width: 1em; +} + +table tr>*:first-child { + padding-left: 1em; +} + +table tr>*:last-child { + padding-right: 1em; +} + +.card { + position: relative; + margin: .5rem 0 1rem 0; + background-color: #fff; + border-radius: 2px; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2); +} + +.card.floating { + position: fixed; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + z-index: 99999; + max-width: 25em; + width: 90%; + max-height: 95%; + z-index: 99999; + animation: .1s show forwards; +} + +.card>*>*:first-child { + margin-top: 0; +} + +.card>*>*:last-child { + margin-bottom: 0; +} + +.card .card-title { + padding: 1.5em 1em 1em; + display: flex; +} + +.card .card-title>*:first-child { + margin-right: auto; +} + +.card>div { + padding: 1em 1em; +} + +.card>div:first-child { + padding-top: 1.5em; +} + +.card>div:last-child { + padding-bottom: 1.5em; +} + +.card .card-title * { + margin: 0; +} + +.card .card-action { + text-align: right; +} + +.card .card-content.full { + padding-bottom: 0; +} + +.card h2 { + font-weight: 500; +} + +.card h3 { + color: rgba(0, 0, 0, 0.53); + font-size: 1em; + font-weight: 500; + margin: 2em 0 1em; +} + +.card-content table { + margin: 0 -1em; + width: calc(100% + 2em); +} + +.card code { + word-wrap: break-word; +} + +.card#download { + max-width: 15em; +} + +.card#share ul { + list-style: none; + padding: 0; + margin: 0; +} + +.card#share ul li { + display: flex; + justify-content: space-between; + align-items: center; +} + +.card#share ul li a { + color: #2196F3; + cursor: pointer; + margin-right: auto; +} + +.card#share ul li .action i { + font-size: 1em; +} + +.card#share ul li input, +.card#share ul li select { + padding: .2em; + margin-right: .5em; + border: 1px solid #dadada; +} + +.card#share .action.copy-clipboard::after { + content: 'Copied!'; + position: absolute; + left: -25%; + width: 150%; + font-size: .6em; + text-align: center; + background: #44a6f5; + color: #fff; + padding: .5em .2em; + border-radius: .4em; + top: -2em; + transition: .1s ease opacity; + opacity: 0; +} + +.card#share .action.copy-clipboard.active::after { + opacity: 1; +} + +.overlay { + background-color: rgba(0, 0, 0, 0.5); + position: fixed; + top: 0; + left: 0; + height: 100%; + width: 100%; + z-index: 9999; + animation: .1s show forwards; +} + + +/* * * * * * * * * * * * * * * * + * PROMPT - MOVE * + * * * * * * * * * * * * * * * */ + +.file-list { + max-height: 50vh; + overflow: auto; + list-style: none; + margin: 0; + padding: 0; + width: 100%; +} + +.file-list li { + width: 100%; + user-select: none; + border-radius: .2em; + padding: .3em; +} + +.file-list li[aria-selected=true] { + background: #2196f3 !important; + color: #fff !important; + transition: .1s ease all; +} + +.file-list li:hover { + background-color: #e9eaeb; + cursor: pointer; +} + +.file-list li:before { + content: "folder"; + color: #6f6f6f; + vertical-align: middle; + line-height: 1.4; + font-family: 'Material Icons'; + font-size: 1.75em; + margin-right: .25em; +} + +.file-list li[aria-selected=true]:before { + color: white; +} + +.help { + max-width: 24em; +} + +.help ul { + padding: 0; + margin: 1em 0; + list-style: none; +} + +@keyframes show { + 0% { + display: none; + opacity: 0; + } + 1% { + display: block; + opacity: 0; + } + 100% { + display: block; + opacity: 1; + } +} + +.collapsible { + border-top: 1px solid rgba(0,0,0,0.1); +} + +.collapsible:last-of-type { + border-bottom: 1px solid rgba(0,0,0,0.1); +} + +.collapsible > input { + display: none; +} + +.collapsible > label { + padding: 1em 0; + cursor: pointer; + border-right: 0; + border-left: 0; + display: flex; + justify-content: space-between; +} + +.collapsible > label * { + margin: 0; + color: rgba(0,0,0,0.57); +} + +.collapsible > label i { + transition: .2s ease transform; + user-select: none; +} + +.collapsible .collapse { + max-height: 0; + overflow: hidden; + transition: .2s ease all; +} + +.collapsible > input:checked ~ .collapse { + padding-top: 1em; + padding-bottom: 1em; + max-height: 20em; +} + +.collapsible > input:checked ~ label i { + transform: rotate(180deg) +} + +.card .collapsible { + width: calc(100% + 2em); + margin: 0 -1em; +} + +.card .collapsible > label { + padding: 1em; +} + +.card .collapsible .collapse { + padding: 0 1em; +} diff --git a/assets/src/css/editor.css b/assets/src/css/editor.css new file mode 100644 index 00000000..971bf423 --- /dev/null +++ b/assets/src/css/editor.css @@ -0,0 +1,184 @@ +@import "~codemirror/lib/codemirror.css"; +@import "~codemirror/theme/ttcn.css"; +#editor { + max-width: 800px; + margin: 0 auto; +} + +#editor .CodeMirror { + box-shadow: rgba(0, 0, 0, 0.06) 0px 1px 3px, rgba(0, 0, 0, 0.12) 0px 1px 2px; + margin: 2em 0; + border-radius: .5em; +} + +#editor h2 { + color: rgba(0, 0, 0, 0.3); + font-weight: 500; +} + +.CodeMirror { + height: auto; +} + +.markdown .CodeMirror { + padding: .75em; +} + +.cm-s-markdown .CodeMirror-gutter { + border-right: 1px solid #eff3f5; + padding-right: 5px; + margin-right: 15px; + min-width: 2.5em; + padding-bottom: 30px; +} + +.cm-s-markdown .CodeMirror-cursor { + border-right: 2px solid #667880; +} + +.cm-s-markdown .CodeMirror-lines { + margin: 0; +} + +.cm-s-markdown { + color: #3D494E; +} + +.cm-s-markdown span.cm-header { + color: #3D494E; + font-weight: bold; +} + +.cm-s-markdown span.cm-variable-2 { + color: #3D494E; +} + +.cm-s-markdown span.cm-meta { + color: #516066; +} + +.cm-s-markdown span.cm-hr { + color: #516066; +} + +.cm-s-markdown span.cm-comment { + color: #868f93; +} + +.cm-s-markdown span.cm-qualifier { + color: #868f93; +} + +.cm-s-markdown span.cm-number { + color: #197987; +} + +.cm-s-markdown span.cm-variable { + color: #197987; +} + +.cm-s-markdown span.cm-builtin { + color: #197987; +} + +.cm-s-markdown span.cm-link { + color: #197987; + text-decoration: underline; +} + +.cm-s-markdown span.cm-tag { + color: #197987; +} + +.cm-s-markdown span.cm-string { + color: #48abb9; +} + +.cm-s-markdown span.cm-string-2 { + color: #48abb9; +} + +.cm-s-markdown span.cm-quote { + color: #48abb9; +} + +.cm-s-markdown span.cm-atom { + color: #48abb9; +} + +.cm-s-markdown span.cm-property { + color: #82a367; +} + +.cm-s-markdown span.cm-operator { + color: #82a367; +} + +.cm-s-markdown span.cm-variable-3 { + color: #82a367; +} + +.cm-s-markdown span.cm-attribute { + color: #90bb74; +} + +.cm-s-markdown span.cm-def { + color: #90bb74; +} + +.cm-s-markdown span.cm-keyword { + color: #ec6c45; +} + +.cm-s-markdown span.cm-bracket { + color: #ec6c45; +} + +.cm-s-markdown span.cm-error { + color: #e45346; +} + +.cm-s-markdown span.cm-em { + font-style: italic; +} + +.cm-s-markdown span.cm-strong { + font-weight: bold; +} + +.cm-s-markdown .cm-header-1 { + font-size: 200%; + line-height: 200%; +} + +.cm-s-markdown .cm-header-2 { + font-size: 160%; + line-height: 160%; +} + +.cm-s-markdown .cm-header-3 { + font-size: 125%; + line-height: 125%; +} + +.cm-s-markdown .cm-header-4 { + font-size: 110%; + line-height: 110%; +} + +.cm-s-markdown .cm-comment { + background: rgba(0, 0, 0, .05); + border-radius: 2px; +} + +.cm-s-markdown .cm-link { + color: #7f8c8d; +} + +.cm-s-markdown .cm-url { + color: #aab2b3; +} + +.cm-s-markdown .cm-strikethrough { + text-decoration: line-through; +} diff --git a/assets/src/css/fonts.css b/assets/src/css/fonts.css new file mode 100644 index 00000000..f355f0e8 --- /dev/null +++ b/assets/src/css/fonts.css @@ -0,0 +1,137 @@ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + src: local('Roboto'), local('Roboto-Regular'), url(../assets/fonts/roboto/normal-cyrillic-ext.woff2) format('woff2'); + unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; +} + +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + src: local('Roboto'), local('Roboto-Regular'), url(../assets/fonts/roboto/normal-cyrillic.woff2) format('woff2'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} + +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + src: local('Roboto'), local('Roboto-Regular'), url(../assets/fonts/roboto/normal-greek-ext.woff2) format('woff2'); + unicode-range: U+1F00-1FFF; +} + +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + src: local('Roboto'), local('Roboto-Regular'), url(../assets/fonts/roboto/normal-greek.woff2) format('woff2'); + unicode-range: U+0370-03FF; +} + +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + src: local('Roboto'), local('Roboto-Regular'), url(../assets/fonts/roboto/normal-vietnamese.woff2) format('woff2'); + unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB; +} + +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + src: local('Roboto'), local('Roboto-Regular'), url(../assets/fonts/roboto/normal-latin-ext.woff2) format('woff2'); + unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; +} + +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + src: local('Roboto'), local('Roboto-Regular'), url(../assets/fonts/roboto/normal-latin.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000; +} + +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 500; + src: local('Roboto Medium'), local('Roboto-Medium'), url(../assets/fonts/roboto/medium-cyrillic-ext.woff2) format('woff2'); + unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; +} + +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 500; + src: local('Roboto Medium'), local('Roboto-Medium'), url(../assets/fonts/roboto/medium-cyrillic.woff2) format('woff2'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} + +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 500; + src: local('Roboto Medium'), local('Roboto-Medium'), url(../assets/fonts/roboto/medium-greek-ext.woff2) format('woff2'); + unicode-range: U+1F00-1FFF; +} + +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 500; + src: local('Roboto Medium'), local('Roboto-Medium'), url(../assets/fonts/roboto/medium-greek.woff2) format('woff2'); + unicode-range: U+0370-03FF; +} + +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 500; + src: local('Roboto Medium'), local('Roboto-Medium'), url(../assets/fonts/roboto/medium-vietnamese.woff2) format('woff2'); + unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB; +} + +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 500; + src: local('Roboto Medium'), local('Roboto-Medium'), url(../assets/fonts/roboto/medium-latin-ext.woff2) format('woff2'); + unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; +} + +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 500; + src: local('Roboto Medium'), local('Roboto-Medium'), url(../assets/fonts/roboto/medium-latin.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000; +} + +@font-face { + font-family: 'Material Icons'; + font-style: normal; + font-weight: 400; + src: local('Material Icons'), local('MaterialIcons-Regular'), url(../assets/fonts/material/icons.woff2) format('woff2'); +} + +.prompt .file-list ul li:before, +.material-icons { + font-family: 'Material Icons'; + font-weight: normal; + font-style: normal; + font-size: 24px; + line-height: 1; + letter-spacing: normal; + text-transform: none; + display: inline-block; + white-space: nowrap; + word-wrap: normal; + direction: ltr; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; + -moz-osx-font-smoothing: grayscale; + font-feature-settings: 'liga'; +} diff --git a/assets/src/css/header.css b/assets/src/css/header.css new file mode 100644 index 00000000..7d559daf --- /dev/null +++ b/assets/src/css/header.css @@ -0,0 +1,260 @@ +header { + z-index: 1000; + background-color: #fff; + border-bottom: 1px solid rgba(0, 0, 0, 0.075); + box-shadow: 0 0 5px rgba(0, 0, 0, 0.1); + position: fixed; + top: 0; + left: 0; + width: 100%; + padding: 0; + display: flex; +} + +header .overlay { + width: 0; + height: 0; +} + +header a, +header a:hover { + color: inherit; +} + +header>div:first-child>.action, +header img { + margin-right: 1em; +} + +header img { + height: 2.5em; +} + +header>div:first-child>.action { + display: none; +} + +header>div { + display: flex; + width: 100%; + padding: 0.5em 0.5em 0.5em 1em; + align-items: center; +} + +header .action span { + display: none; +} + +header>div div { + vertical-align: middle; + position: relative; +} + +header>div:last-child div { + display: flex; +} + +header>div:first-child { + height: 4em; +} + +header>div:last-child { + justify-content: flex-end; +} + +header .search-button { + display: none; +} + +#more { + display: none; +} + +#search { + position: relative; + height: 100%; + width: 100%; + max-width: 25em; +} + +#search.active { + position: fixed; + top: 0; + right: 0; + width: 100%; + max-width: 100%; + height: 100%; + z-index: 9999; +} + +#search #input { + background-color: #f5f5f5; + display: flex; + padding: 0.75em; + border-radius: 0.3em; + transition: .1s ease all; + align-items: center; + z-index: 2; +} + +#search.active #input { + border-bottom: 1px solid rgba(0, 0, 0, 0.075); + box-shadow: 0 0 5px rgba(0, 0, 0, 0.1); + background-color: #fff; + height: 4em; +} + +#search.active>div { + border-radius: 0 !important; +} + +#search.active i, +#search.active input { + color: #212121; +} + +#search #input>.action, +#search #input>i { + margin-right: 0.3em; + user-select: none; +} + +#search input { + width: 100%; + border: 0; + background-color: transparent; + line-height: 0; + padding: 0; +} + +#search #result { + visibility: visible; + max-height: none; + background-color: #f8f8f8; + text-align: left; + padding: 0; + color: rgba(0, 0, 0, 0.6); + height: 0; + transition: .1s ease height, .1s ease padding; + overflow-x: hidden; + overflow-y: auto; + z-index: 1; +} + +#search #result>div>*:first-child { + margin-top: 0; +} + +#search.active #result { + padding: .5em; + height: calc(100% - 4em); +} + +#search ul { + padding: 0; + margin: 0; + list-style: none; +} + +#search li { + margin-bottom: .5em; +} + +#search #result>div { + max-width: 45em; + margin: 0 auto; +} + +#search #result #renew { + width: 100%; + text-align: center; + display: none; + margin: 0; + max-width: none; +} + +#search.ongoing #result #renew { + display: block; +} + +#search.active #result i { + color: #ccc; +} + +#search.active #result>p>i { + text-align: center; + margin: 0 auto; + display: table; +} + +#search.active #result ul li a { + display: flex; + align-items: center; + padding: .3em 0; +} + +#search.active #result ul li a i { + margin-right: .3em; +} + +#search::-webkit-input-placeholder { + color: rgba(255, 255, 255, .5); +} + +#search:-moz-placeholder { + opacity: 1; + color: rgba(255, 255, 255, .5); +} + +#search::-moz-placeholder { + opacity: 1; + color: rgba(255, 255, 255, .5); +} + +#search:-ms-input-placeholder { + color: rgba(255, 255, 255, .5); +} + +#search .boxes { + border: 1px solid rgba(0, 0, 0, 0.075); + box-shadow: 0 0 5px rgba(0, 0, 0, 0.1); + background: #fff; + margin: 1em 0; +} + +#search .boxes h3 { + margin: 0; + font-weight: 500; + font-size: 1em; + color: #212121; + padding: .5em; +} + +#search .boxes>div { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + margin-right: -1em; + margin-bottom: -1em; +} + +#search .boxes>div>div { + background: #2196F3; + color: #fff; + text-align: center; + width: 10em; + padding: 1em; + cursor: pointer; + margin-bottom: 1em; + margin-right: 1em; + flex-grow: 1; +} + +#search .boxes p { + margin: 1em 0 0; +} + +#search .boxes i { + color: #fff !important; + font-size: 3.5em; +} diff --git a/assets/src/css/listing.css b/assets/src/css/listing.css new file mode 100644 index 00000000..02bd8d9c --- /dev/null +++ b/assets/src/css/listing.css @@ -0,0 +1,237 @@ +#listing h2 { + margin: 0 0 0 0.5em; + font-size: .9em; + color: rgba(0, 0, 0, 0.38); + font-weight: 500; +} + +#listing .item div:last-of-type * { + text-overflow: ellipsis; + overflow: hidden; +} + +#listing>div { + display: flex; + padding: 0; + flex-wrap: wrap; + justify-content: flex-start; + position: relative; +} + +#listing .item { + background-color: #fff; + position: relative; + display: flex; + flex-wrap: nowrap; + color: #6f6f6f; + transition: .1s ease background, .1s ease opacity; + align-items: center; + cursor: pointer; +} + +#listing .item div:last-of-type { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} + +#listing .item p { + margin: 0; +} + +#listing .item .size, +#listing .item .modified { + font-size: 0.9em; +} + +#listing .item .name { + font-weight: bold; +} + +#listing .item i { + font-size: 4em; + margin-right: 0.1em; + vertical-align: bottom; +} + +.message { + text-align: center; + font-size: 2em; + margin: 1em auto; + display: block !important; + width: 95%; + color: rgba(0, 0, 0, 0.3); + font-weight: 500; +} + +.message i { + font-size: 2.5em; + margin-bottom: .2em; + display: block; +} + +#listing.mosaic { + padding-top: 1em; + margin: 0 -0.5em; +} + +#listing.mosaic .item { + width: calc(33% - 1em); + margin: .5em; + padding: 0.5em; + border-radius: 0.2em; + box-shadow: 0 1px 3px rgba(0, 0, 0, .06), 0 1px 2px rgba(0, 0, 0, .12); +} + +#listing.mosaic .item:hover { + box-shadow: 0 1px 3px rgba(0, 0, 0, .12), 0 1px 2px rgba(0, 0, 0, .24) !important; +} + +#listing.mosaic .header { + display: none; +} + +#listing.mosaic .item div:first-of-type { + width: 5em; +} + +#listing.mosaic .item div:last-of-type { + width: calc(100% - 5vw); +} + +#listing.list { + flex-direction: column; + padding-top: 3.25em; + width: 100%; + max-width: 100%; + margin: 0; +} + +#listing.list .item { + width: 100%; + margin: 0; + border: 1px solid rgba(0, 0, 0, 0.1); + padding: 1em; + border-top: 0; +} + +#listing.list h2 { + display: none; +} + +#listing .item[aria-selected=true] { + background: #2196f3 !important; + color: #fff !important; +} + +#listing.list .item div:first-of-type { + width: 3em; +} + +#listing.list .item div:first-of-type i { + font-size: 2em; +} + +#listing.list .item div:last-of-type { + width: calc(100% - 3em); + display: flex; + align-items: center; +} + +#listing.list .item .name { + width: 50%; +} + +#listing.list .item .size { + width: 25%; +} + +#listing .item.header { + display: none !important; + background-color: #ccc; +} + +#listing.list .header i { + font-size: 1.5em; + vertical-align: middle; + margin-left: .2em; +} + +#listing.list .item.header { + display: flex !important; + background: #fafafa; + position: fixed; + width: calc(100% - 19em); + top: 7em; + right: 1em; + z-index: 999; + padding: .85em; + border: 0; + border-bottom: 1px solid rgba(0, 0, 0, 0.1); +} + +#listing.list .item.header>div:first-child { + width: 0; +} + +#listing.list .item.header .name { + margin-right: 3em; +} + +#listing.list .header a { + color: inherit; +} + +#listing.list .item.header>div:first-child { + width: 0; +} + +#listing.list .name { + font-weight: normal; +} + +#listing.list .item.header .name { + margin-right: 3em; +} + +#listing.list .header span { + vertical-align: middle; +} + +#listing.list .header i { + opacity: 0; + transition: .1s ease all; +} + +#listing.list .header p:hover i, +#listing.list .header .active i { + opacity: 1; +} + +#listing.list .item.header .active { + font-weight: bold; +} + +#listing #multiple-selection { + position: fixed; + bottom: -4em; + left: 0; + z-index: 99999; + width: 100%; + background-color: #2196f3; + height: 4em; + display: flex !important; + padding: 0.5em 0.5em 0.5em 1em; + justify-content: space-between; + align-items: center; + transition: .2s ease bottom; +} + +#listing #multiple-selection.active { + bottom: 0; +} + +#listing #multiple-selection p, +#listing #multiple-selection i { + color: #fff; +} diff --git a/assets/src/css/login.css b/assets/src/css/login.css new file mode 100644 index 00000000..01788f0b --- /dev/null +++ b/assets/src/css/login.css @@ -0,0 +1,76 @@ +#login { + background: #fff; + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +#login img { + width: 4em; + height: 4em; + margin: 0 auto; + display: block; +} + +#login h1 { + text-align: center; + font-size: 2.5em; + margin: .4em 0 .67em; +} + +#login form { + position: fixed; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + max-width: 16em; + width: 90%; +} + +#login.recaptcha form { + min-width: 304px; +} + +#login #recaptcha { + margin: .5em 0 0; +} + +#login input { + width: 100%; + width: 100%; + margin: .5em 0 0; +} + +#login .wrong { + background: #F44336; + color: #fff; + padding: .5em; + text-align: center; + animation: .2s opac forwards; +} + +@keyframes opac { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +#login input[type="text"], +#login input[type="password"] { + padding: .5em 1em; + border: 1px solid #e9e9e9; + transition: .2s ease border; + color: #333; +} + +#login input[type="text"]:focus, +#login input[type="password"]:focus, +#login input[type="text"]:hover, +#login input[type="password"]:hover { + border-color: #9f9f9f; +} diff --git a/assets/src/css/mobile.css b/assets/src/css/mobile.css new file mode 100644 index 00000000..05d4d46b --- /dev/null +++ b/assets/src/css/mobile.css @@ -0,0 +1,113 @@ +@media (max-width: 1024px) { + nav { + width: 10em + } +} + +@media (max-width: 1024px) { + #listing.list .item.header, + main { + width: calc(100% - 13em) + } +} + +@media (max-width: 736px) { + #more { + display: inherit + } + header .overlay { + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.1); + } + #dropdown { + position: fixed; + top: 1em; + right: 1em; + display: block; + background-color: #fff; + box-shadow: 0 0 5px rgba(0, 0, 0, 0.1); + transform: scale(0); + transition: .1s ease-in-out transform; + transform-origin: top right; + z-index: 99999; + } + #dropdown > div { + display: block; + } + #dropdown.active { + transform: scale(1); + } + #dropdown .action { + display: flex; + align-items: center; + border-radius: 0; + width: 100%; + } + #dropdown .action span:not(.counter) { + display: inline-block; + padding: .4em; + } + #dropdown .counter { + left: 2.25em; + } + #file-selection { + position: fixed; + bottom: 1em; + left: 50%; + transform: translateX(-50%); + display: flex; + align-items: center; + background: #fff; + box-shadow: rgba(0, 0, 0, 0.06) 0px 1px 3px, rgba(0, 0, 0, 0.12) 0px 1px 2px; + width: 95%; + max-width: 20em; + } + #file-selection .action { + border-radius: 50%; + width: auto; + } + #file-selection > span { + display: inline-block; + margin-left: 1em; + color: #6f6f6f; + margin-right: auto; + } + nav { + top: 0; + z-index: 99999; + background: #fff; + height: 100%; + width: 16em; + box-shadow: 0 0 5px rgba(0, 0, 0, 0.1); + transition: .1s ease left; + left: -17em; + } + nav.active { + left: 0; + } + header .search-button, + header>div:first-child>.action { + display: inherit; + } + header img { + display: none; + } + #listing { + margin-bottom: 5em; + } + #listing.list .item.header, + main { + width: calc(100% - 2em); + } + main { + margin: 0 1em; + width: calc(100% - 2em); + } + #search { + display: none; + } + #search.active { + display: block; + } +} diff --git a/assets/src/css/styles.css b/assets/src/css/styles.css new file mode 100644 index 00000000..69335280 --- /dev/null +++ b/assets/src/css/styles.css @@ -0,0 +1,228 @@ +@import "~normalize.css/normalize.css"; +@import "~noty/lib/noty.css"; +@import "./fonts.css"; +@import "./base.css"; +@import "./header.css"; +@import "./listing.css"; +@import "./editor.css"; +@import "./dashboard.css"; +@import "./login.css"; + +/* * * * * * * * * * * * * * * * + * ACTION * + * * * * * * * * * * * * * * * */ + +.action { + display: inline-block; + cursor: pointer; + transition: 0.2s ease all; + border: 0; + margin: 0; + color: #546E7A; + border-radius: 50%; + background: transparent; + padding: 0; + box-shadow: none; + vertical-align: middle; + text-align: left; + position: relative; +} + +.action.disabled { + opacity: 0.2; + cursor: not-allowed; +} + +.action i { + padding: 0.4em; + transition: .1s ease-in-out all; + border-radius: 50%; +} + +.action:hover { + background-color: rgba(0, 0, 0, .1); +} + +.action ul { + position: absolute; + top: 0; + color: #7d7d7d; + list-style: none; + margin: 0; + padding: 0; + flex-direction: column; + display: flex; +} + +.action ul li { + line-height: 1; + padding: .7em; + transition: .1s ease background-color; +} + +.action ul li:hover { + background-color: rgba(0, 0, 0, 0.04); +} + +#click-overlay { + display: none; + position: fixed; + cursor: pointer; + top: 0; + left: 0; + height: 100%; + width: 100%; +} + +#click-overlay.active { + display: block; +} + +.action .counter { + display: block; + position: absolute; + bottom: 0; + right: 0; + background: #2196f3; + color: #fff; + border-radius: 50%; + font-size: .75em; + width: 1.5em; + height: 1.5em; + text-align: center; + line-height: 1.25em; + border: 2px solid white; +} + + +/* PREVIEWER */ + +#previewer { + background-color: rgba(0, 0, 0, 0.9); + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 9999; + overflow: hidden; +} + +#previewer .bar { + width: 100%; + text-align: right; + display: flex; + padding: 0.5em; + height: 3.7em; +} + +#previewer .action:first-of-type { + margin-right: auto; +} + +#previewer .action i { + color: #fff; +} + +#previewer .action:hover { + background-color: rgba(255, 255, 255, 0.3) +} + +#previewer .action span { + display: none; +} + +#previewer .preview { + margin: 2em auto 4em; + max-width: 80%; + text-align: center; + height: calc(100vh - 9.7em); +} + +#previewer .preview pre { + text-align: left; + overflow: auto; +} + +#previewer .preview pre, +#previewer .preview video, +#previewer .preview img { + max-height: 100%; + margin: 0; +} + +#previewer .pdf { + width: 100%; + height: 100%; +} + +#previewer h2.message { + color: rgba(255, 255, 255, 0.5) +} + +#previewer>button { + margin: 0; + position: fixed; + top: 50%; + transform: translateY(-50%); +} + +#previewer>button:first-of-type { + left: 0.5em; +} + +#previewer>button:last-of-type { + right: 0.5em; +} + + +/* * * * * * * * * * * * * * * * + * PROMPT * + * * * * * * * * * * * * * * * */ + +.noty_buttons { + text-align: right; + padding: 0 10px 10px !important; +} + +.noty_buttons button { + background: rgba(0, 0, 0, 0.05); + border: 1px solid rgba(0,0,0,0.1); + box-shadow: 0 0 0 0; + font-size: 14px; +} + +/* * * * * * * * * * * * * * * * + * FOOTER * + * * * * * * * * * * * * * * * */ + +.credits { + font-size: 0.6em; + margin: 3em 2.5em; + color: #a5a5a5; +} + +.credits span { + display: block; + margin: .3em 0; +} + +.credits a, +.credits a:hover { + color: inherit; + cursor: pointer; +} + + +/* * * * * * * * * * * * * * * * + * ANIMATIONS * + * * * * * * * * * * * * * * * */ + +@keyframes spin { + 100% { + -webkit-transform: rotate(-360deg); + transform: rotate(-360deg); + } +} + +@import './mobile.css'; diff --git a/assets/src/i18n/en.yaml b/assets/src/i18n/en.yaml new file mode 100644 index 00000000..1b3ec70e --- /dev/null +++ b/assets/src/i18n/en.yaml @@ -0,0 +1,201 @@ +permanent: Permanent +buttons: + cancel: Cancel + close: Close + copy: Copy + copyFile: Copy file + copyToClipboard: Copy to clipboard + create: Create + delete: Delete + download: Download + info: Info + more: More + move: Move + moveFile: Move file + new: New + next: Next + ok: OK + replace: Replace + previous: Previous + rename: Rename + reportIssue: Report Issue + save: Save + search: Search + select: Select + share: Share + publish: Publish + selectMultiple: Select multiple + schedule: Schedule + switchView: Switch view + toggleSidebar: Toggle sidebar + update: Update + upload: Upload + permalink: Get Permanent Link +success: + linkCopied: Link copied! +errors: + forbidden: You're not welcome here. + internal: Something really went wrong. + notFound: This location can't be reached. +files: + folders: Folders + files: Files + body: Body + clear: Clear + closePreview: Close preview + home: Home + lastModified: Last modified + loading: Loading... + lonely: It feels lonely here... + metadata: Metadata + multipleSelectionEnabled: Multiple selection enabled + name: Name + size: Size + sortByName: Sort by name + sortBySize: Sort by size + sortByLastModified: Sort by last modified +help: + click: select file or directory + ctrl: + click: select multiple files or directories + f: opens search + s: save a file or download the directory where you are + del: delete selected items + doubleClick: open a file or directory + esc: clear selection and/or close the prompt + f1: this information + f2: rename file + help: Help +login: + password: Password + submit: Login + username: Username + wrongCredentials: Wrong credentials +prompts: + copy: Copy + copyMessage: 'Choose the place to copy your files:' + currentlyNavigating: 'Currently navigating on:' + deleteMessageMultiple: Are you sure you want to delete {count} file(s)? + deleteMessageSingle: Are you sure you want to delete this file/folder? + deleteTitle: Delete files + displayName: 'Display Name:' + download: Download files + downloadMessage: Choose the format you want to download. + error: Something went wrong + fileInfo: File information + filesSelected: "{count} files selected." + lastModified: Last Modified + move: Move + moveMessage: 'Choose new house for your file(s)/folder(s):' + newDir: New directory + newDirMessage: Write the name of the new directory. + newFile: New file + newFileMessage: Write the name of the new file. + numberDirs: Number of directories + numberFiles: Number of files + replace: Replace + replaceMessage: > + One of the files you're trying to upload is conflicting because of its name. + Do you wish to replace the existing one? + rename: Rename + renameMessage: Insert a new name for + show: Show + size: Size + schedule: Schedule + scheduleMessage: Pick a date and time to schedule the publication of this post. + newArchetype: Create a new post based on an archetype. Your file will be created on content folder. +settings: + admin: Admin + administrator: Administrator + allowCommands: Execute commands + allowEdit: Edit, rename and delete files or directories + allowNew: Create new files and directories + allowPublish: Publish new posts and pages + avoidChanges: "(leave blank to avoid changes)" + changePassword: Change Password + commands: Commands + commandsHelp: > + Here you can set commands that are executed in the named events. You + write one command per line. If the event is related to files, such as before and + after saving, the environment variable "FILE" will be available with the path + of the file. + commandsUpdated: Commands updated! + customStylesheet: Custom Stylesheet + examples: Examples + globalSettings: Global Settings + language: Language + lockPassword: Prevent the user from changing the password + newPassword: Your new password + newPasswordConfirm: Confirm your new password + newUser: New User + password: Password + passwordUpdated: Password updated! + permissions: Permissions + permissionsHelp: > + You can set the user to be an administrator or choose the permissions + individually. If you select "Administrator", all of the other options will be + automatically checked. The management of users remains a privilege of an administrator. + profileSettings: Profile Settings + ruleExample1: > + prevents the access to any dot file (such as .git, .gitignore) in + every folder. + ruleExample2: blocks the access to the file named Caddyfile on the root of the scope. + rules: Rules + rulesHelp1: > + Here you can define a set of allow and disallow rules for this specific + user. The blocked files won't show up in the listings and they wont be accessible + to the user. We support regex and paths relative to the users scope. + rulesHelp2: > + Each rule goes in one different line and must start with the keyword + {0} or {1}. Then you should write {2} if you are using a regular expression and + then the expression or the path. + scope: Scope + settingsUpdated: Settings updated! + user: User + userCommands: Commands + userCommandsHelp: > + A space separated list with the available commands for this user. + Example: + userCreated: User created! + userDeleted: User deleted! + userManagement: User Management + username: Username + users: Users + userUpdated: User updated! +sidebar: + help: Help + logout: Logout + myFiles: My files + newFile: New file + newFolder: New folder + settings: Settings + siteSettings: Site Settings + hugoNew: Hugo New + preview: Preview +search: + images: Images + music: Music + pdf: PDF + pressToExecute: Press enter to execute. + pressToSearch: Press enter to search. + search: Search... + searchOrCommand: Search or execute a command... + searchOrSupportedCommand: 'Search or use one of your supported commands:' + type: Type and press enter to search. + types: Types + video: Video + writeToSearch: Write here to search +languages: + en: English + fr: Français + pt: Português + ja: 日本語 + zhCN: 中文 (简体) + zhTW: 中文 (繁體) + es: Español +time: + unit: Time Unit + seconds: Seconds + minutes: Minutes + hours: Hours + days: Days diff --git a/assets/src/i18n/es.yaml b/assets/src/i18n/es.yaml new file mode 100644 index 00000000..78e875f1 --- /dev/null +++ b/assets/src/i18n/es.yaml @@ -0,0 +1,202 @@ +permanent: Permanente +buttons: + cancel: Cancelar + close: Cerrar + copy: Copiar + copyFile: Copiar archivo + copyToClipboard: Copiar al portapapeles + create: Crear + delete: Borrar + download: Descargar + info: Info + more: Más + move: Mover + moveFile: Mover archivo + new: Nuevo + next: Siguiente + ok: OK + replace: Reemplazar + previous: Anterior + rename: Renombrar + reportIssue: Reportar problema + save: Guardar + search: Buscar + select: Seleccionar + share: Compartir + publish: Publicar + selectMultiple: Selección múltiple + schedule: Programar + switchView: Cambiar vista + toggleSidebar: Mostrar/Ocultar menú + update: Actualizar + upload: Subir + permalink: Link permanente +success: + linkCopied: ¡Link copiado! +errors: + forbidden: No eres bienvenido aquí. + internal: La verdad es que algo ha ido mal. + notFound: No se puede acceder a este lugar. +files: + folders: Carpetas + files: Archivos + body: Cuerpo + clear: Limpiar + closePreview: Cerrar vista previa + home: Inicio + lastModified: Última modificación + loading: Cargando... + lonely: Uno se siente muy sólo aquí... + metadata: Metadatos + multipleSelectionEnabled: Selección múltiple activada + name: Nombre + size: Tamaño + sortByName: Ordenar por nombre + sortBySize: Ordenar por tamaño + sortByLastModified: Ordenar por última modificación +help: + click: seleccionar archivo o carpeta + ctrl: + click: seleccionar múltiples archivos o carpetas + f: abre la búsqueda + s: guarda un archivo o lo descarga a la carpeta en la que estás + del: elimina los items seleccionados + doubleClick: abre un archivo o carpeta + esc: limpia la selección y/o cierra la ventana + f1: esta información + f2: renombrar archivo + help: Ayuda +login: + password: Contraseña + submit: Iniciar sesión + username: Usuario + wrongCredentials: Usuario y/o contraseña incorrectos +prompts: + copy: Copiar + copyMessage: 'Elige el lugar donde quieres copiar tus archivos:' + currentlyNavigating: 'Actualmente estás en:' + deleteMessageMultiple: ¿Estás seguro que quieres eliminar {count} archivo(s)? + deleteMessageSingle: ¿Estás seguro que quieres eliminar este archivo/carpeta? + deleteTitle: Borrar archivos + displayName: 'Nombre:' + download: Descargar archivos + downloadMessage: Elige el formato de descarga. + error: Algo ha fallado + fileInfo: Información del archivo + filesSelected: "{count} archivos seleccionados." + lastModified: Última modificación + move: Mover + moveMessage: 'Elige una nueva casa para tus archivo(s)/carpeta(s):' + newDir: Nueva carpeta + newDirMessage: Escribe el nombre de la nueva carpeta. + newFile: Nuevo archivo + newFileMessage: Escribe el nombre del nuevo archivo. + numberDirs: Número de carpetas + numberFiles: Número de archivos + replace: Reemplazar + replaceMessage: > + Uno de los archivos ue intentas subir está creando conflicto por su nombre. + ¿Quieres cambiar el nombre del ya existente? + rename: Renombrar + renameMessage: Escribe el nuevo nombre para + show: Mostrar + size: Tamaño + schedule: Programar + scheduleMessage: Elige una hora y fecha para programar la publicación de este post. + newArchetype: Crea un nuevo post basado en un arquetipo. Tu archivo será creado en la carpeta de contenido. +settings: + admin: Admin + administrator: Administrador + allowCommands: Ejecutar comandos + allowEdit: Editar, renombrar y borrar archivos o carpetas + allowNew: Crear nuevos archivos y carpetas + allowPublish: Publicar nuevos posts y páginas + avoidChanges: "(dejar en blanco para evitar cambios)" + changePassword: Cambiar contraseña + commands: Comandos + commandsHelp: > + Aquí puedes crear comandos que serán ejecutados en los eventos. Debes + escribir un comando por linea. Si el evento está relacionado con archivos, como + por ejemplo, antes y después de guardar, la variable de entorno "FILE" estará + disponible en la ruta del archivo. + commandsUpdated: ¡Comandos actualizados! + customStylesheet: Modificar hoja de estilos + examples: Ejemplos + globalSettings: Ajustes globales + language: Idioma + lockPassword: Evitar que el usuario cambie la contraseña + newPassword: Tu nueva contraseña + newPasswordConfirm: Confirma tu contraseña + newUser: Nuevo usuario + password: Contraseña + passwordUpdated: ¡Contraseña actualizada! + permissions: Permisos + permissionsHelp: > + Puedes nombrar al usuario como administrador o elegir los permisos + individualmente. Si seleccionas "Administrador", todas las otras opciones + serán activadas automáticamente. La administración de usuarios es un privilegio de administrador. + profileSettings: Ajustes del perfil + ruleExample1: > + previene el acceso a una extensión de archivo (Como .git) en + cada carpeta. + ruleExample2: bloquea el acceso al archivo llamado Caddyfile en la carpeta raíz. + rules: Reglas + rulesHelp1: > + Aquí puedes definir un conjunto de reglas de permisos para este usuario + específico. Los archivos bloqueados no se mostrarán en las listas y no serán accesibles + por el usuario. Puedes utilizar regex y rutas relativas a la raíz del usuario. + rulesHelp2: > + Cada regla va en una línea diferente, y debe comenzar con la palabra clave + {0} or {1}. Entonces, debes escribir {2} si estás usando una expresión regular (REGEX) y + luego la expresión o la ruta. + scope: Raíz + settingsUpdated: ¡Ajustes actualizados! + user: Usuario + userCommands: Comandos + userCommandsHelp: > + Una lista separada por espacios con los comandos permitidos para este usuario. + Ejemplo: + userCreated: ¡Usuario creado! + userDeleted: ¡Usuario eliminado! + userManagement: Administración de usuarios + username: Usuario + users: Usuarios + userUpdated: ¡Usuario actualizado! +sidebar: + help: Ayuda + logout: Cerrar sesión + myFiles: Mis archivos + newFile: Nuevo archivo + newFolder: Nueva carpeta + settings: Ajustes + siteSettings: Ajustes del sitio + hugoNew: Nuevo Hugo + preview: Vista previa +search: + images: Images + music: Música + pdf: PDF + pressToExecute: Presiona enter para ejecutar. + pressToSearch: Presiona enter para buscar. + search: Buscar... + searchOrCommand: Buscar o ejecutar un comando... + searchOrSupportedCommand: 'Buscar o ejecutar uno de los comandos soportados:' + type: Escribe y presiona enter para buscar. + types: Tipos + video: Vídeo + writeToSearch: Escribe aquí para buscar +languages: + en: English + fr: Français + pt: Português + es: Español + ja: 日本語 + zhCN: 中文 (简体) + zhTW: 中文 (繁體) + +time: + unit: Unidad + seconds: Segundos + minutes: Minutos + hours: Horas + days: Días diff --git a/assets/src/i18n/fr.yaml b/assets/src/i18n/fr.yaml new file mode 100644 index 00000000..5d94d5a7 --- /dev/null +++ b/assets/src/i18n/fr.yaml @@ -0,0 +1,194 @@ +permanent: Permanent +buttons: + cancel: Annuler + close: Fermer + copy: Copier + copyFile: Copier le fichier + copyToClipboard: Copier dans le presse-papier + create: Créer + delete: Supprimer + download: Télécharger + info: Info + more: Plus + move: Déplacer + moveFile: Déplacer le fichier + new: Nouveau + next: Suivant + ok: OK + replace: Remplacer + previous: Précédent + rename: Renommer + reportIssue: Rapport d'erreur + save: Enregistrer + search: Chercher + select: Sélectionner + share: Partager + publish: Publier + selectMultiple: Sélection multiple + schedule: Fixer la date + switchView: Changer le mode d'affichage + toggleSidebar: Afficher/Masquer la barre latérale + update: Mettre à jour + upload: Importer + permalink: Obtenir un lien permanent +errors: + forbidden: Vous n'êtes pas autorisé à être ici. + internal: Aïe ! Quelque chose s'est mal passé. + notFound: Impossible d'accéder à cet emplacement. +files: + folders: Dossiers + files: Fichiers + body: Corps + clear: Fermer + closePreview: Fermer la prévisualisation + home: Accueil + lastModified: Dernière modification + loading: Chargement... + lonely: Il semble qu'il n'y ai rien par ici... + metadata: Metadonnées + multipleSelectionEnabled: Sélection multiple activée + name: Nom + size: Taille + sortByName: Trier par nom + sortBySize: Trier par taille + sortByLastModified: Trier par date de dernière modification +help: + click: Sélectionner un élément + ctrl: + click: Sélectionner plusieurs éléments + f: Ouvrir l'invité de recherche + s: Télécharger l'élément actuel + del: Supprimer les éléments sélectionnés + doubleClick: Ouvrir un élément + esc: Désélectionner et/ou fermer la boîte de dialogue + f1: Ouvrir l'aide + f2: Renommer le fichier + help: Aide +login: + password: Mot de passe + submit: Se connecter + username: Utilisateur + wrongCredentials: Identifiants incorrects ! +prompts: + copy: Copier + copyMessage: 'Choisissez l''emplacement où copier la sélection :' + currentlyNavigating: 'Dossier courant :' + deleteMessageMultiple: Etes-vous sûr de vouloir supprimer ces {count} élément(s) ? + deleteMessageSingle: Etes-vous sûr de vouloir supprimer cet élément ? + deleteTitle: Supprimer + displayName: 'Nom :' + download: Télécharger + downloadMessage: 'Choisissez le format de téléchargement :' + error: Quelque chose s'est mal passé + fileInfo: Informations + filesSelected: "{count} éléments sélectionnés" + lastModified: Dernière modification + move: Déplacer + moveMessage: 'Choisissez l''emplacement où déplacer la sélection :' + newDir: Nouveau dossier + newDirMessage: 'Nom du nouveau dossier :' + newFile: Nouveau fichier + newFileMessage: 'Nom du nouveau fichier :' + numberDirs: Nombre de dossiers + numberFiles: Nombre de fichiers + replace: Remplacer + replaceMessage: > + Un des fichiers que vous êtes en train d'importer a le même nom qu'un autre déjà présent. + Voulez-vous remplacer le fichier actuel par le nouveau ? + rename: Renommer + renameMessage: Nouveau nom pour + show: Montrer + size: Taille + schedule: Fixer la date + scheduleMessage: Choisissez une date pour planifier la publication de ce post + newArchetype: Créer un nouveau post basé sur un archétype. Votre fichier sera créé dans le dossier de contenu. +settings: + admin: Admin + administrator: Administrateur + allowCommands: Exécuter des commandes + allowEdit: Editer, renommer et supprimer des fichiers ou des dossiers + allowNew: Créer de nouveaux fichiers et dossiers + allowPublish: Publier de nouveaux posts et pages + avoidChanges: "(Laisser vide pour conserver l'actuel)" + changePassword: Modifier le mot de passe + commands: Commandes + commandsHelp: > + Ici vous pouvez définir des commandes qui seront exécutées lors de l'évènement correspondant. + Vous devez indiquer une commande par ligne. Si l'évènement est en rapport avec des fichiers, + par exemple avant et après enregistrement, la variable d'environement "FILE" sera disponible + et contiendra le chemin d'accès vers le fichier. + commandsUpdated: Commandes mises à jour ! + customStylesheet: Feuille de style personnalisée + examples: Exemples + globalSettings: Paramètres généraux + language: Langue + newPassword: Votre nouveau mot de passe + newPasswordConfirm: Confirmation du nouveau mot de passe + newUser: Nouvel Utilisateur + password: Mot de passe + passwordUpdated: Mot de passe mis à jour ! + permissions: Permissions + permissionsHelp: > + Vous pouvez définir l'utilisateur comme étant un administrateur ou encore choisir les + permissions individuellement. Si vous sélectionnez "Administrateur", toutes les autres + options seront automatiquement activées. La gestion des utilisateurs est un privilège que + seul l'administrateur possède. + profileSettings: Paramètres du profil + ruleExample1: Bloque l'accès à tous les fichiers commençant par un point (comme par exemple .git, .gitignore) dans tous les dossiers + ruleExample2: Bloque l'accès au fichier nommé "Caddyfile" à la racine du dossier utilisateur + rules: Règles + rulesHelp1: > + Vous pouvez définir ici un ensemble de règles pour cet utilisateur. + Les fichiers bloqués ne seront pas affichés et ne seront pas accessibles par l'utilisateur. + Les expressions régulières sont supportées et les chemins d'accès sont relatifs par rapport au dossier de l'utilisateur. + rulesHelp2: > + Chaque règle est définie sur une ligne différente et doit commencer par le mot clé {0} ou {1}. + Vous devez ensuite ajouter {2} si vous utilisez une expression régulière puis l'expression en question ou bien seulement le chemin d'accès. + scope: Portée du dossier utilisateur + settingsUpdated: Les paramètres ont été mis à jour ! + user: Utilisateur + userCommands: Commandes + userCommandsHelp: 'Une liste séparée par des espaces des commandes permises pour l''utilisateur. Exemple :' + userCreated: Utilisateur créé ! + userDeleted: Utilisateur supprimé ! + userManagement: Gestion des utilisateurs + username: Nom d'utilisateur + users: Utilisateurs + userUpdated: Utilisateur mis à jour ! +sidebar: + help: Aide + logout: Se déconnecter + myFiles: Mes fichiers + newFile: Nouveau fichier + newFolder: Nouveau dossier + settings: Paramètres + siteSettings: Paramètres du site + hugoNew: Nouveau Hugo + preview: Prévisualiser +search: + images: Images + music: Musique + pdf: PDF + pressToExecute: Appuyez sur Entrée pour exécuter + pressToSearch: Appuyez sur Entrée pour lancer la recherche + search: Recherche en cours... + searchOrCommand: Rechercher ou exécuter une commande... + searchOrSupportedCommand: 'Lancez une recherche ou exécutez une commande parmis les suivantes :' + type: Tapez votre recherche et appuyez sur Entrée + types: Types + video: Video + writeToSearch: Ecrivez ici pour lancer une recherche +languages: + en: English + fr: Français + pt: Português + ja: 日本語 + zhCN: 中文 (简体) + zhTW: 中文 (繁體) + es: Español +time: + unit: Unité de temps + seconds: Secondes + minutes: Minutes + hours: Heures + days: Jours diff --git a/assets/src/i18n/index.js b/assets/src/i18n/index.js new file mode 100644 index 00000000..7ce5ffe5 --- /dev/null +++ b/assets/src/i18n/index.js @@ -0,0 +1,61 @@ +import Vue from 'vue' +import VueI18n from 'vue-i18n' +import en from './en.yaml' +import fr from './fr.yaml' +import pt from './pt.yaml' +import ja from './ja.yaml' +import zhCN from './zh-cn.yaml' +import zhTW from './zh-tw.yaml' +import es from './es.yaml' + +Vue.use(VueI18n) + +export function detectLocale () { + let locale = (navigator.language || navigator.browserLangugae).toLowerCase() + switch (true) { + case /^en.*/i.test(locale): + locale = 'en' + break + case /^fr.*/i.test(locale): + locale = 'fr' + break + case /^pt.*/i.test(locale): + locale = 'pt' + break + case /^ja.*/i.test(locale): + locale = 'ja' + break + case /^zh-CN/i.test(locale): + locale = 'zh-cn' + break + case /^zh-TW/i.test(locale): + locale = 'zh-tw' + break + case /^zh.*/i.test(locale): + locale = 'zh-cn' + break + case /^es.*/i.test(locale): + locale = 'es' + break + default: + locale = 'en' + } + + return locale +} + +const i18n = new VueI18n({ + locale: detectLocale(), + fallbackLocale: 'en', + messages: { + 'en': en, + 'fr': fr, + 'pt': pt, + 'ja': ja, + 'zh-cn': zhCN, + 'zh-tw': zhTW, + 'es': es + } +}) + +export default i18n diff --git a/assets/src/i18n/ja.yaml b/assets/src/i18n/ja.yaml new file mode 100644 index 00000000..c3d7f3a5 --- /dev/null +++ b/assets/src/i18n/ja.yaml @@ -0,0 +1,201 @@ +permanent: 永久 +buttons: + cancel: キャンセル + close: 閉じる + copy: コピー + copyFile: ファイルをコピー + copyToClipboard: クリップボードにコピー + create: 作成 + delete: 削除 + download: ダウンロード + info: 情報 + more: More + move: 移動 + moveFile: ファイルを移動 + new: 新規 + next: 次 + ok: OK + replace: 置き換える + previous: 前 + rename: 名前を変更 + reportIssue: 問題を報告 + save: 保存 + search: 検索 + select: 選択 + share: シェア + publish: 発表 + selectMultiple: 複数選択 + schedule: スケジュール + switchView: 表示を切り替わる + toggleSidebar: サイドバーを表示する + update: 更新 + upload: アップロード + permalink: 固定リンク +success: + linkCopied: リンクがコピーされました! +errors: + forbidden: アクセスが拒否されました。 + internal: 内部エラーが発生しました。 + notFound: リソースが見つからなりませんでした。 +files: + folders: フォルダ + files: ファイル + body: 本文 + clear: クリアー + closePreview: プレビューを閉じる + home: ホーム + lastModified: 最終変更 + loading: ローディング... + lonely: ここには何もない... + metadata: メタデータ + multipleSelectionEnabled: 複数選択有効 + name: 名前 + size: サイズ + sortByName: 名前によるソート + sortBySize: サイズによるソート + sortByLastModified: 最終変更日付によるソート +help: + click: ファイルやディレクトリを選択 + ctrl: + click: 複数のファイルやディレクトリを選択 + f: 検索を有効にする + s: ファイルを保存またはカレントディレクトリをダウンロード + del: 選択した項目を削除 + doubleClick: ファイルやディレクトリをオープン + esc: 選択をクリアーまたはプロンプトを閉じる + f1: このヘルプを表示 + f2: ファイルの名前を変更 + help: ヘルプ +login: + password: パスワード + submit: ログイン + username: ユーザ名 + wrongCredentials: ユーザ名またはパスワードが間違っています。 +prompts: + copy: コピー + copyMessage: コピーの目標ディレクトリを選択してください: + currentlyNavigating: 現在閲覧しているディレクトリ: + deleteMessageMultiple: '{count} つのファイルを本当に削除してよろしいですか。' + deleteMessageSingle: このファイル/フォルダを本当に削除してよろしいですか。 + deleteTitle: ファイルを削除 + displayName: 名前: + download: ファイルをダウンロード + downloadMessage: 圧縮形式を選択してください。 + error: あるエラーが発生しました。 + fileInfo: ファイル情報 + filesSelected: '{count} つのファイルは選択されました。' + lastModified: 最終変更 + move: 移動 + moveMessage: 移動の目標ディレクトリを選択してください: + newDir: 新しいディレクトリを作成 + newDirMessage: 新しいディレクトリの名前を入力してください。 + newFile: 新しいファイルを作成 + newFileMessage: 新しいファイルの名前を入力してください。 + numberDirs: ディレクトリ個数 + numberFiles: ファイル個数 + replace: 置き換える + replaceMessage: > + アップロードするファイルの中でかち合う名前が一つあります。 + 既存のファイルを置き換えりませんか。 + rename: 名前を変更 + renameMessage: 名前を変更しようファイルは: + show: 表示 + size: サイズ + schedule: スケジュール + scheduleMessage: このポストの発表日付をスケジュールしてください。 + newArchetype: ある元型に基づいて新しいポストを作成します。ファイルは コンテンツフォルダに作成されます。 +settings: + admin: 管理者 + administrator: 管理者 + allowCommands: コマンドの実行 + allowEdit: ファイルやディレクトリの編集、名前変更と削除 + allowNew: ファイルとディレクトリの作成 + allowPublish: ポストとぺーじの発表 + avoidChanges: "(変更を避けるために空白にしてください)" + changePassword: パスワードを変更 + commands: コマンド + commandsHelp: "\ + ここで、名前付きイベントに実行するコマンドを設定することができます。\ + 一行にコマンド一つを入力してください。\ + イベントはファイルに関連する場合、例えばファイル保存の前にまたは後で、\ + 環境変数 FILE はファイルのパスに割り当てられます。" + commandsUpdated: コマンドは更新されました! + customStylesheet: カスタムスタイルシ ート + examples: 例 + globalSettings: グローバル設定 + language: 言語 + lockPassword: 新しいパスワードを変更に禁止 + newPassword: 新しいパスワード + newPasswordConfirm: 新しいパスワードを確認します + newUser: 新しいユーザー + password: パスワード + passwordUpdated: パスワードは更新されました! + permissions: 権限 + permissionsHelp: "\ + あなたはユーザーを管理者に設定し、または権限を個々に設定しできます。\ + \"管理者\"を選択する場合、その他のすべての選択肢は自動的に設定されます。\ + ユーザーの管理は管理者の権限として保留されました。" + profileSettings: プロファイル設定 + ruleExample1: "\ + 各フォルダに名前はドットで始まるファイル(例えば、.git、.gitignore)\ + へのアクセスを制限します。" + ruleExample2: 範囲のルートパスに名前は Caddyfile のファイルへのアクセスを制限します。 + rules: 規則 + rulesHelp1: "\ + ここに、あなたはこのユーザーの許可または拒否規則を設定できます。\ + ブロックされたファイルはリストに表示されません、それではアクセスも制限されます。\ + 正規表現(regex)のサポートと範囲に相対のパスが提供されています。" + rulesHelp2: "\ + 一行に規則一つを入力してください、\ + その間に規則はキーワード {0} や {1} で始める必要があります。\ + そして正規表現を使う場合、{2} と入力し、表現やパスを入力してください。" + scope: 範囲 + settingsUpdated: 設定は更新されました! + user: ユーザー + userCommands: ユーザーのコマンド + userCommandsHelp: "\ + 空白区切りの有効のコマンドのリストを指定してください。\ + 例:" + userCreated: ユーザーは作成されました! + userDeleted: ユーザーは削除されました! + userManagement: ユーザー管理 + username: ユーザー名 + users: ユーザー + userUpdated: ユーザーは更新されました! +sidebar: + help: ヘルプ + logout: ログアウト + myFiles: 私のファイル + newFile: 新しいファイルを作成 + newFolder: 新しいフォルダを作成 + settings: 設定 + siteSettings: サイト設定 + hugoNew: Hugo New + preview: プレビュー +search: + images: 画像 + music: 音楽 + pdf: PDF + pressToExecute: Enter を押して実行します。 + pressToSearch: Enter を押して検索します。 + search: 検索... + searchOrCommand: コマンドを検索または実行します。 + searchOrSupportedCommand: サポートしているコマンドを検索または実行します: + type: キーワードを入力し、Enter を押して検索します。 + types: 種類 + video: ビデオ + writeToSearch: ここにキーワードを入力してください +languages: + en: English + fr: Français + pt: Português + ja: 日本語 + zhCN: 中文 (简体) + zhTW: 中文 (繁體) + es: Español +time: + unit: 時間単位 + seconds: 秒 + minutes: 分 + hours: 時間 + days: 日 diff --git a/assets/src/i18n/pt.yaml b/assets/src/i18n/pt.yaml new file mode 100644 index 00000000..33daed4a --- /dev/null +++ b/assets/src/i18n/pt.yaml @@ -0,0 +1,204 @@ +permanent: Permanente +buttons: + cancel: Cancelar + close: Fechar + copy: Copiar + copyFile: Copiar ficheiro + copyToClipboard: Copiar + create: Criar + delete: Eliminar + download: Descarregar + info: Info + more: Mais + move: Mover + moveFile: Mover ficheiro + new: Novo + next: Próximo + ok: OK + previous: Anterior + publish: Publicar + rename: Renomear + replace: Substituir + reportIssue: Reportar Erro + save: Guardar + share: Partilhar + schedule: Agendar + search: Pesquisar + select: Selecionar + selectMultiple: Selecionar múltiplos + switchView: Alterar modo de visão + toggleSidebar: Alternar barra lateral + update: Atualizar + upload: Enviar + permalink: Obter link permanente +success: + linkCopied: Link copiado! +errors: + forbidden: Tu não és bem-vindo aqui. + internal: Algo correu bastante mal. + notFound: Não conseguimos chegar a esta localização. +files: + body: Corpo + clear: Limpar + closePreview: Fechar pré-visualização + files: Ficheiros + folders: Pastas + home: Início + lastModified: Última modificação + loading: A carregar... + lonely: Sinto-me sozinho... + metadata: Metadados + multipleSelectionEnabled: Seleção múltipla ativada + name: Nome + size: Tamanho + sortByLastModified: Ordenar pela última modificação + sortByName: Ordenar pelo nome + sortBySize: Ordenar pelo tamanho +help: + click: selecionar pasta ou ficheiro + ctrl: + click: selecionar várias pastas e ficheiros + f: pesquisar + s: guardar um ficheiro ou descarregar a pasta em que estás a navegar + del: eliminar os ficheiros selecionados + doubleClick: abrir pasta ou ficheiro + esc: limpar seleção e/ou fechar menu + f1: esta informação + f2: renomear ficheiro + help: Ajuda +languages: + en: English + fr: Français + pt: Português + ja: 日本語 + zhCN: 中文 (简体) + zhTW: 中文 (繁體) + es: Español +login: + password: Palavra-passe + submit: Login + username: Nome de utilizador + wrongCredentials: Dados errados +prompts: + copy: Copiar + copyMessage: 'Escolhe um lugar para copiar os ficheiros:' + currentlyNavigating: 'A navegar em:' + deleteMessageMultiple: Deseja eliminar {count} ficheiro(s)? + deleteMessageSingle: Deseja eliminar esta pasta/ficheiro? + deleteTitle: Eliminar ficheiros + displayName: 'Nome:' + download: Descarregar ficheiros + downloadMessage: Escolha o formato do ficheiro. + error: Algo correu mal + fileInfo: Informação do ficheiro + filesSelected: "{count} ficheiros selecionados." + lastModified: Última Modificação + move: Mover + moveMessage: 'Escolha uma nova casa para os seus ficheiros:' + newArchetype: Criar um novo post baseado num "archetype". O seu ficheiro será criado + na pasta "content". + newDir: Nova pasta + newDirMessage: Escreva o nome da nova pasta. + newFile: Novo ficheiro + newFileMessage: Escreva o nome do novo ficheiro. + numberDirs: Número de pastas + numberFiles: Número de ficheiros + rename: Renomear + renameMessage: Insira um novo nome para + replace: Substituir + replaceMessage: > + Já existe um ficheiro com nome igual a um dos que está a tentar + enviar. Deseja substituir? + schedule: Agendar + scheduleMessage: Escolha uma data para publicar este post. + show: Mostrar + size: Tamanho +search: + images: Imagens + music: Música + pdf: PDF + pressToExecute: Prima enter para executar. + pressToSearch: Prima enter para pesquisar. + search: Pesquise... + searchOrCommand: Pesquise ou execute um comando... + searchOrSupportedCommand: 'Pesquise ou utilize um dos seus comandos:' + type: Escreva e prima enter para pesquisar. + types: Tipos + video: Vídeos + writeToSearch: Escreva aqui para pesquisar +settings: + admin: Admin + administrator: Administrador + allowCommands: Executar comandos + allowEdit: Editar, renomear e eliminar ficheiros ou pastas + allowNew: Criar novos ficheiros e pastas + allowPublish: Publicar novas páginas e conteúdos + avoidChanges: "(deixe em branco para manter)" + changePassword: Alterar Password + commands: Comandos + commandsHelp: > + Pode definir um conjunto de comandos a executar em determiandos eventos. + Deve escrever um comando por linha. Se o evento estiver relacionado com ficheiros, + como antes e depois de guardar, irá existir uma variável de ambiente denominada + "FILE" com o caminho do ficheiro. + commandsUpdated: Comandos atualizados! + customStylesheet: Estilos Personalizados + examples: Exemplos + globalSettings: Configurações Globais + language: Linguagem + lockPassword: Não permitir que o utilizador altere a palavra-passe + newPassword: Nova palavra-passe + newPasswordConfirm: Confirme a nova palavra-passe + newUser: Novo Utilizador + password: Palavra-passe + passwordUpdated: Palavra-passe atualizada! + permissions: Permissões + permissionsHelp: > + Pode definir o utilizador como administrador ou escolher as permissões + manualmente. Se selecionar a opção "Administrador", todas as outras opções serão + automaticamente selecionadas. A gestão dos utilizadores é um privilégio restringido + aos administradores. + profileSettings: Configurações do Utilizador + ruleExample1: > + previne o acesso a qualquer "dotfile" (como .git, .gitignore) em + qualquer pasta + ruleExample2: bloqueia o acesso ao ficheiro chamado Caddyfile. + rules: Regras + rulesHelp1: > + Aqui pode definir um conjunto de regras para permitir ou bloquear o + acesso do utilizador a determinados ficheiros ou pastas. Os ficheiros bloqueados + não irão aparecer durante a navegação. Suportamos expressões regulares e os caminhos + dos ficheiros devem ser relativos à base do utilizador. + rulesHelp2: > + Cada regra deve ser colocada numa linha diferente e deve começar com + as palavras {0} (permite) ou {1} (bloqueia). Deve escrever, logo de seguida, {2}, + caso queira utilizar uma expressão regular. Depois, escreva o caminho do ficheiro/pasta + ou a expressão regular. + scope: Base + settingsUpdated: Configurações atualizadas! + user: Utilizador + userCommands: Comandos + userCommandsHelp: 'Uma lista, separada com espaços, de comandos disponíveis para + este utilizados. Exemplo:' + userCreated: Utilizador criado! + userDeleted: Utilizador eliminado! + userManagement: Gestão de Utilizadores + username: Nome de utilizador + users: Utilizadores + userUpdated: Utilizador atualizado! +sidebar: + help: Ajuda + hugoNew: Hugo New + logout: Sair + myFiles: Ficheiros + newFile: Novo ficheiro + newFolder: Nova pasta + preview: Pré-visualizar + settings: Configurações + siteSettings: Configurações do Site +time: + unit: Unidades de Tempo + seconds: Segundos + minutes: Minutos + hours: Horas + days: Dias diff --git a/assets/src/i18n/zh-cn.yaml b/assets/src/i18n/zh-cn.yaml new file mode 100644 index 00000000..8ffbaf7e --- /dev/null +++ b/assets/src/i18n/zh-cn.yaml @@ -0,0 +1,199 @@ +permanent: 永久 +buttons: + cancel: 取消 + close: 关闭 + copy: 复制 + copyFile: 复制文件 + copyToClipboard: 复制到剪贴板 + create: 创建 + delete: 删除 + download: 下载 + info: 信息 + more: 更多 + move: 移动 + moveFile: 移动文件 + new: 新 + next: 下一个 + ok: 确定 + replace: 替换 + previous: 上一个 + rename: 重命名 + reportIssue: 报告问题 + save: 保存 + search: 搜索 + select: 选择 + share: 分享 + publish: 发布 + selectMultiple: 选择多个 + schedule: 计划 + switchView: 切换显示方式 + toggleSidebar: 切换侧边栏 + update: 更新 + upload: 上传 + permalink: 获取永久链接 +success: + linkCopied: 链接已复制! +errors: + forbidden: 你被禁止访问。 + internal: 内部出现麻烦了。 + notFound: 找不到文件。 +files: + folders: 文件夹 + files: 文件 + body: Body + clear: 清空 + closePreview: 关闭预览 + home: 主页 + lastModified: 最后修改 + loading: 加载中... + lonely: 这里没有任何文件... + metadata: 元数据 + multipleSelectionEnabled: 多选模式已开启 + name: 名称 + size: 大小 + sortByName: 按名称排序 + sortBySize: 按大小排序 + sortByLastModified: 按最后修改时间排序 +help: + click: 选择文件或目录 + ctrl: + click: 选择多个文件或目录 + f: 打开搜索框 + s: 保存文件或下载当前文件夹 + del: 删除所选的文件/文件夹 + doubleClick: 打开文件/文件夹 + esc: 清除已选项或关闭提示信息 + f1: 显示该帮助信息 + f2: 重命名文件/文件夹 + help: 帮助 +login: + password: 密码 + submit: 登录 + username: 用户名 + wrongCredentials: 用户名或密码错误 +prompts: + copy: 复制 + copyMessage: 请选择欲复制至的目录: + currentlyNavigating: 当前目录: + deleteMessageMultiple: 你确定要删除这 {count} 个文件吗? + deleteMessageSingle: 你确定要删除这个文件/文件夹吗? + deleteTitle: 删除文件 + displayName: 名称: + download: 下载文件 + downloadMessage: 请选择要下载的压缩格式。 + error: 出了一点问题... + fileInfo: 文件信息 + filesSelected: 已选择 {count} 个文件。 + lastModified: 最后修改 + move: 移动 + moveMessage: 请选择欲移动至的目录: + newDir: 新建目录 + newDirMessage: 请输入新目录的名称。 + newFile: 新建文件 + newFileMessage: 请输入新文件的名称。 + numberDirs: 目录数 + numberFiles: 文件数 + replace: 替换 + replaceMessage: "\ + 您尝试上传的文件中有一个与现有文件的名称存在冲突。\ + 是否替换现有的同名文件?" + rename: 重命名 + renameMessage: 请输入新名称,旧名称为: + show: 揭示 + size: 大小 + schedule: 计划 + scheduleMessage: 请选择发布这篇帖子的日期。 + newArchetype: 创建一个基于原型的新帖子。您的文件将会创建在内容文件夹中。 +settings: + admin: 管理员 + administrator: 管理员 + allowCommands: 执行命令(Linux 代码) + allowEdit: 编辑、重命名或删除文件/目录 + allowNew: 创建新文件和目录 + allowPublish: 发布新的帖子与页面 + avoidChanges: '(留空以避免更改)' + changePassword: 更改密码 + commands: 命令(linux 代码) + commandsHelp: "\ + 在这里,您可以设置在指定事件下执行的命令,一行一条。\ + 若事件与文件相关,如“在保存文件前”,\ + 则文件的路径会被赋值给环境变量 \"FILE\"。" + commandsUpdated: 命令已更新! + customStylesheet: 自定义样式表 + examples: 例子 + globalSettings: 全局设置 + language: 语言 + lockPassword: 禁止用户修改密码 + newPassword: 您的新密码 + newPasswordConfirm: 重输一遍新密码 + newUser: 新建用户 + password: 密码 + passwordUpdated: 密码已更新! + permissions: 权限 + permissionsHelp: "\ + 您可以将该用户设置为管理员,也可以单独选择各项权限。\ + 如果选择了“管理员”,则其他的选项会被自动勾上,\ + 同时该用户可以管理其他用户。" + profileSettings: 个人设置 + ruleExample1: "\ + 阻止用户访问所有文件夹下任何以 . 开头的文件\ + (隐藏文件, 例如: .git, .gitignore)。" + ruleExample2: 阻止用户访问其目录范围的根目录下名为 Caddyfile 的文件。 + rules: 规则 + rulesHelp1: "\ + 您可以为该用户制定一组黑名单或白名单式的规则,\ + 被屏蔽的文件将不会显示在列表中,用户也无权限访问,\ + 支持相对于目录范围的路径。" + rulesHelp2: "\ + 每行一条规则,且必须以关键词 {0} 或 {1} 开头。\ + 如要使用正则表达式,请在加上 {2} 之后再附上表达式或路径。" + scope: 目录范围 + settingsUpdated: 设置已更新! + user: 用户 + userCommands: 用户命令(Linux 代码) + userCommandsHelp: "\ + 指定该用户可以执行的命令(Linux 代码),用空格分隔。\ + 例如:" + userCreated: 用户已创建! + userDeleted: 用户已删除! + userManagement: 用户管理 + username: 用户名 + users: 用户 + userUpdated: 用户已更新! +sidebar: + help: 帮助 + logout: 登出 + myFiles: 我的文件 + newFile: 新建文件 + newFolder: 新建文件夹 + settings: 设置 + siteSettings: 网站设置 + hugoNew: Hugo New + preview: 预览 +search: + images: 图像 + music: 音乐 + pdf: PDF + pressToExecute: 按回车键执行。 + pressToSearch: 按回车键搜索。 + search: 搜索... + searchOrCommand: 搜索或者执行命令(Linux 代码)... + searchOrSupportedCommand: 搜索或使用您可以使用的命令(一次只能执行一个命令): + type: 键入并按回车键进行搜索。 + types: 类型 + video: 视频 + writeToSearch: 请输入要搜索的内容 +languages: + en: English + fr: Français + pt: Português + ja: 日本語 + zhCN: 中文 (简体) + zhTW: 中文 (繁體) + es: Español +time: + unit: 时间单位 + seconds: 秒 + minutes: 分钟 + hours: 小时 + days: 天 diff --git a/assets/src/i18n/zh-tw.yaml b/assets/src/i18n/zh-tw.yaml new file mode 100644 index 00000000..2c32caea --- /dev/null +++ b/assets/src/i18n/zh-tw.yaml @@ -0,0 +1,199 @@ +permanent: 永久 +buttons: + cancel: 取消 + close: 關閉 + copy: 複製 + copyFile: 複製檔案 + copyToClipboard: 複製到剪貼簿 + create: 建立 + delete: 刪除 + download: 下載 + info: 資訊 + more: 更多 + move: 移動 + moveFile: 移動檔案 + new: 新 + next: 下一個 + ok: 確認 + replace: 更換 + previous: 上一個 + rename: 重新命名 + reportIssue: 報告問題 + save: 儲存 + search: 搜尋 + select: 選擇 + share: 分享 + publish: 發佈 + selectMultiple: 選擇多個 + schedule: 計畫 + switchView: 切換顯示方式 + toggleSidebar: 切換側邊欄 + update: 更新 + upload: 上傳 + permalink: 獲取永久連結 +success: + linkCopied: 連結已複製! +errors: + forbidden: 你被禁止存取。 + internal: 內部出現麻煩了。 + notFound: 找不到檔案。 +files: + folders: 資料夾 + files: 檔案 + body: Body + clear: 清空 + closePreview: 關閉預覽 + home: 主頁 + lastModified: 最後修改 + loading: 讀取中... + lonely: 這裡沒有任何檔案... + metadata: 詮釋資料 + multipleSelectionEnabled: 多選模式已開啟 + name: 名稱 + size: 大小 + sortByName: 按名稱排序 + sortBySize: 按大小排序 + sortByLastModified: 按最後修改時間排序 +help: + click: 選擇檔案或目錄 + ctrl: + click: 選擇多個檔案或目錄 + f: 打開搜尋列 + s: 儲存檔案或下載目前資料夾 + del: 刪除所選的檔案/資料夾 + doubleClick: 打開檔案/資料夾 + esc: 清除已選項或關閉提示資訊 + f1: 顯示該幫助資訊 + f2: 重新命名檔案/資料夾 + help: 幫助 +login: + password: 密碼 + submit: 登入 + username: 帳號 + wrongCredentials: 帳號或密碼錯誤 +prompts: + copy: 複製 + copyMessage: 請選擇欲複製至的目錄: + currentlyNavigating: 目前目錄: + deleteMessageMultiple: 你確定要刪除這 {count} 個檔案嗎? + deleteMessageSingle: 你確定要刪除這個檔案/資料夾嗎? + deleteTitle: 刪除檔案 + displayName: 名稱: + download: 下載檔案 + downloadMessage: 請選擇要下載的壓縮格式。 + error: 發出了一點錯誤... + fileInfo: 檔案資訊 + filesSelected: 已選擇 {count} 個檔案。 + lastModified: 最後修改 + move: 移動 + moveMessage: 請選擇欲移動至的目錄: + newDir: 建立目錄 + newDirMessage: 請輸入新目錄的名稱。 + newFile: 建立檔案 + newFileMessage: 請輸入新檔案的名稱。 + numberDirs: 目錄數 + numberFiles: 檔案數 + replace: 替換 + replaceMessage: "\ + 您嘗試上傳的檔案中有一個與現有檔案的名稱存在衝突。\ + 是否取代現有的同名檔案?" + rename: 重新命名 + renameMessage: 請輸入新名稱,舊名稱為: + show: 顯示 + size: 大小 + schedule: 計畫 + scheduleMessage: 請選擇發佈這篇貼文的日期。 + newArchetype: 建立一個基於原型的新貼文。您的檔案將會建立在內容資料夾中。 +settings: + admin: 管理員 + administrator: 管理員 + allowCommands: 執行命令 + allowEdit: 編輯、重命名或刪除檔案/目錄 + allowNew: 創建新檔案和目錄 + allowPublish: 發佈新的貼文與頁面 + avoidChanges: '(留空以避免更改)' + changePassword: 更改密碼 + commands: 命令 + commandsHelp: "\ + 在這裡,您可以設定在指定事件下執行的命令,一行一條。\ + 若事件與檔案相關,如“在保存檔案前”,\ + 則檔案的路徑會被賦值給環境變數 \"FILE\"。" + commandsUpdated: 命令已更新! + customStylesheet: 自定義樣式表 + examples: 範例 + globalSettings: 全域設定 + language: 語言 + lockPassword: 禁止使用者修改密碼 + newPassword: 您的新密碼 + newPasswordConfirm: 重輸一遍新密碼 + newUser: 建立使用者 + password: 密碼 + passwordUpdated: 密碼已更新! + permissions: 權限 + permissionsHelp: "\ + 您可以將該使用者設置為管理員,也可以單獨選擇各項權限。\ + 如果選擇了“管理員”,則其他的選項會被自動勾上,\ + 同時該使用者可以管理其他使用者。" + profileSettings: 個人設定 + ruleExample1: "\ + 封鎖使用者存取所有資料夾下任何以 . 開頭的檔案\ + (隱藏文件, 例如: .git, .gitignore)。" + ruleExample2: 封鎖使用者存取其目錄範圍的根目錄下名為 Caddyfile 的檔案。 + rules: 規則 + rulesHelp1: "\ + 您可以為該使用者製定一組黑名單或白名單式的規則,\ + 被屏蔽的檔案將不會顯示在清單中,使用者也無權限存取,\ + 支持相對於目錄範圍的路徑。" + rulesHelp2: "\ + 每行一條規則,且必須以關鍵字 {0} 或 {1} 開頭。\ + 如要使用規則運算式,請在加上 {2} 之後再附上運算式或路徑。" + scope: 目錄範圍 + settingsUpdated: 設定已更新! + user: 使用者 + userCommands: 使用者命令 + userCommandsHelp: "\ + 指定該使用者可以執行的命令,用空格分隔。\ + 例如:" + userCreated: 使用者已建立! + userDeleted: 使用者已刪除! + userManagement: 使用者管理 + username: 使用者名稱 + users: 使用者 + userUpdated: 使用者已更新! +sidebar: + help: 幫助 + logout: 登出 + myFiles: 我的檔案 + newFile: 建立檔案 + newFolder: 建立資料夾 + settings: 設定 + siteSettings: 網站設定 + hugoNew: Hugo New + preview: 預覽 +search: + images: 影像 + music: 音樂 + pdf: PDF + pressToExecute: 按確定鍵執行。 + pressToSearch: 按確定鍵搜尋。 + search: 搜尋... + searchOrCommand: 搜尋或者執行命令... + searchOrSupportedCommand: 搜尋或使用您可以使用的命令(一次只能執行一個命令): + type: 輸入並按確定鍵進行搜尋。 + types: 類型 + video: 影片 + writeToSearch: 請輸入要搜尋的內容 +languages: + en: English + fr: Français + pt: Português + ja: 日本語 + zhCN: 中文 (简体) + zhTW: 中文 (繁體) + es: Español +time: + unit: 時間單位 + seconds: 秒 + minutes: 分鐘 + hours: 小時 + days: 天 diff --git a/assets/src/main.js b/assets/src/main.js new file mode 100644 index 00000000..b071129c --- /dev/null +++ b/assets/src/main.js @@ -0,0 +1,54 @@ +import Vue from 'vue' +import App from './App' +import store from './store' +import router from './router' +import i18n from './i18n' +import Noty from 'noty' + +Vue.config.productionTip = true + +const notyDefault = { + type: 'info', + layout: 'bottomRight', + timeout: 1000, + progressBar: true +} + +Vue.prototype.$noty = function (opts) { + new Noty(Object.assign({}, notyDefault, opts)).show() +} + +Vue.prototype.$showSuccess = function (message) { + new Noty(Object.assign({}, notyDefault, { + text: message, + type: 'success' + })).show() +} + +Vue.prototype.$showError = function (error) { + let n = new Noty(Object.assign({}, notyDefault, { + text: error, + type: 'error', + timeout: null, + buttons: [ + Noty.button(i18n.t('buttons.reportIssue'), '', function () { + window.open('https://github.com/hacdias/filemanager/issues/new') + }), + Noty.button(i18n.t('buttons.close'), '', function () { + n.close() + }) + ] + })) + + n.show() +} + +/* eslint-disable no-new */ +new Vue({ + el: '#app', + store, + router, + i18n, + template: '', + components: { App } +}) diff --git a/assets/src/router/index.js b/assets/src/router/index.js new file mode 100644 index 00000000..58ca1d87 --- /dev/null +++ b/assets/src/router/index.js @@ -0,0 +1,161 @@ +import Vue from 'vue' +import Router from 'vue-router' +import Login from '@/views/Login' +import Layout from '@/views/Layout' +import Files from '@/views/Files' +import Users from '@/views/settings/Users' +import User from '@/views/settings/User' +import Settings from '@/views/Settings' +import GlobalSettings from '@/views/settings/Global' +import ProfileSettings from '@/views/settings/Profile' +import Error403 from '@/views/errors/403' +import Error404 from '@/views/errors/404' +import Error500 from '@/views/errors/500' +import auth from '@/utils/auth' +import store from '@/store' + +Vue.use(Router) + +const router = new Router({ + base: document.querySelector('meta[name="base"]').getAttribute('content'), + mode: 'history', + routes: [ + { + path: '/login', + name: 'Login', + component: Login, + beforeEnter: function (to, from, next) { + auth.loggedIn() + .then(() => { + next({ path: '/files' }) + }) + .catch(() => { + document.title = 'Login' + next() + }) + } + }, + { + path: '/*', + component: Layout, + meta: { + requiresAuth: true + }, + children: [ + { + path: '/files/*', + name: 'Files', + component: Files + }, + { + path: '/settings', + name: 'Settings', + component: Settings, + redirect: { + path: '/settings/profile' + }, + meta: { + disableOnNoAuth: true + }, + children: [ + { + path: '/settings/profile', + name: 'Profile Settings', + component: ProfileSettings + }, + { + path: '/settings/global', + name: 'Global Settings', + component: GlobalSettings, + meta: { + requiresAdmin: true + } + }, + { + path: '/settings/users', + name: 'Users', + component: Users, + meta: { + requiresAdmin: true + } + }, + { + path: '/settings/users/*', + name: 'User', + component: User, + meta: { + requiresAdmin: true + } + } + ] + }, + { + path: '/403', + name: 'Forbidden', + component: Error403 + }, + { + path: '/404', + name: 'Not Found', + component: Error404 + }, + { + path: '/500', + name: 'Internal Server Error', + component: Error500 + }, + { + path: '/files', + redirect: { + path: '/files/' + } + }, + { + path: '/*', + redirect: { + name: 'Files' + } + } + ] + } + ] +}) + +router.beforeEach((to, from, next) => { + document.title = to.name + + if (to.matched.some(record => record.meta.requiresAuth)) { + // this route requires auth, check if logged in + // if not, redirect to login page. + auth.loggedIn() + .then(() => { + if (to.matched.some(record => record.meta.requiresAdmin)) { + if (!store.state.user.admin) { + next({ path: '/403' }) + return + } + } + + if (to.matched.some(record => record.meta.disableOnNoAuth)) { + if (store.state.noAuth) { + next({ path: '/403' }) + return + } + } + + next() + }) + .catch(e => { + next({ + path: '/login', + query: { redirect: to.fullPath } + }) + }) + + return + } + + next() +}) + +export default router diff --git a/assets/src/store/getters.js b/assets/src/store/getters.js new file mode 100644 index 00000000..370bc589 --- /dev/null +++ b/assets/src/store/getters.js @@ -0,0 +1,5 @@ +const getters = { + selectedCount: state => state.selected.length +} + +export default getters diff --git a/assets/src/store/index.js b/assets/src/store/index.js new file mode 100644 index 00000000..655222cb --- /dev/null +++ b/assets/src/store/index.js @@ -0,0 +1,42 @@ +import Vue from 'vue' +import Vuex from 'vuex' +import mutations from './mutations' +import getters from './getters' + +Vue.use(Vuex) + +const state = { + user: {}, + req: {}, + clipboard: { + key: '', + items: [] + }, + css: (() => { + let css = window.CSS + window.CSS = null + return css + })(), + recaptcha: document.querySelector('meta[name="recaptcha"]').getAttribute('content'), + staticGen: document.querySelector('meta[name="staticgen"]').getAttribute('content'), + baseURL: document.querySelector('meta[name="base"]').getAttribute('content'), + noAuth: (document.querySelector('meta[name="noauth"]').getAttribute('content') === 'true'), + version: document.querySelector('meta[name="version"]').getAttribute('content'), + jwt: '', + progress: 0, + schedule: '', + loading: false, + reload: false, + selected: [], + multiple: false, + show: null, + showMessage: null, + showConfirm: null +} + +export default new Vuex.Store({ + strict: process.env.NODE_ENV !== 'production', + state, + getters, + mutations +}) diff --git a/assets/src/store/mutations.js b/assets/src/store/mutations.js new file mode 100644 index 00000000..cf608511 --- /dev/null +++ b/assets/src/store/mutations.js @@ -0,0 +1,81 @@ +import * as i18n from '@/i18n' +import moment from 'moment' + +const mutations = { + closeHovers: state => { + state.show = null + state.showMessage = null + }, + showHover: (state, value) => { + if (typeof value !== 'object') { + state.show = value + return + } + + state.show = value.prompt + state.showMessage = value.message + state.showConfirm = value.confirm + }, + showError: (state, value) => { + state.show = 'error' + state.showMessage = value + }, + showSuccess: (state, value) => { + state.show = 'success' + state.showMessage = value + }, + setLoading: (state, value) => { state.loading = value }, + setReload: (state, value) => { state.reload = value }, + setUser: (state, value) => { + let locale = value.locale + + if (locale === '') { + locale = i18n.detectLocale() + } + + moment.locale(locale) + i18n.default.locale = locale + state.user = value + }, + setCSS: (state, value) => (state.css = value), + setJWT: (state, value) => (state.jwt = value), + multiple: (state, value) => (state.multiple = value), + addSelected: (state, value) => (state.selected.push(value)), + addPlugin: (state, value) => { + state.plugins.push(value) + }, + removeSelected: (state, value) => { + let i = state.selected.indexOf(value) + if (i === -1) return + state.selected.splice(i, 1) + }, + resetSelected: (state) => { + state.selected = [] + }, + updateUser: (state, value) => { + if (typeof value !== 'object') return + + for (let field in value) { + state.user[field] = value[field] + } + }, + updateRequest: (state, value) => { + state.req = value + }, + updateClipboard: (state, value) => { + state.clipboard.key = value.key + state.clipboard.items = value.items + }, + resetClipboard: (state) => { + state.clipboard.key = '' + state.clipboard.items = [] + }, + setSchedule: (state, value) => { + state.schedule = value + }, + setProgress: (state, value) => { + state.progress = value + } +} + +export default mutations diff --git a/assets/src/utils/api.js b/assets/src/utils/api.js new file mode 100644 index 00000000..9d429062 --- /dev/null +++ b/assets/src/utils/api.js @@ -0,0 +1,455 @@ +import store from '@/store' + +const ssl = (window.location.protocol === 'https:') + +export function removePrefix (url) { + if (url.startsWith('/files')) { + url = url.slice(6) + } + + if (url === '') url = '/' + if (url[0] !== '/') url = '/' + url + return url +} + +export function fetch (url) { + url = removePrefix(url) + + return new Promise((resolve, reject) => { + let request = new window.XMLHttpRequest() + request.open('GET', `${store.state.baseURL}/api/resource${url}`, true) + if (!store.state.noAuth) request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`) + + request.onload = () => { + switch (request.status) { + case 200: + resolve(JSON.parse(request.responseText)) + break + default: + reject(new Error(request.status)) + break + } + } + request.onerror = (error) => reject(error) + request.send() + }) +} + +export function remove (url) { + url = removePrefix(url) + + return new Promise((resolve, reject) => { + let request = new window.XMLHttpRequest() + request.open('DELETE', `${store.state.baseURL}/api/resource${url}`, true) + if (!store.state.noAuth) request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`) + + request.onload = () => { + if (request.status === 200) { + resolve(request.responseText) + } else { + reject(request.responseText) + } + } + + request.onerror = (error) => reject(error) + request.send() + }) +} + +export function post (url, content = '', overwrite = false, onupload) { + url = removePrefix(url) + + return new Promise((resolve, reject) => { + let request = new window.XMLHttpRequest() + request.open('POST', `${store.state.baseURL}/api/resource${url}`, true) + if (!store.state.noAuth) request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`) + + if (typeof onupload === 'function') { + request.upload.onprogress = onupload + } + + if (overwrite) { + request.setRequestHeader('Action', `override`) + } + + request.onload = () => { + if (request.status === 200) { + resolve(request.responseText) + } else if (request.status === 409) { + reject(request.status) + } else { + reject(request.responseText) + } + } + + request.onerror = (error) => { + reject(error) + } + request.send(content) + }) +} + +export function put (url, content = '', publish = false, date = '') { + url = removePrefix(url) + + return new Promise((resolve, reject) => { + let request = new window.XMLHttpRequest() + request.open('PUT', `${store.state.baseURL}/api/resource${url}`, true) + if (!store.state.noAuth) request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`) + request.setRequestHeader('Publish', publish) + + if (date !== '') { + request.setRequestHeader('Schedule', date) + } + + request.onload = () => { + if (request.status === 200) { + resolve(request.responseText) + } else { + reject(request.responseText) + } + } + + request.onerror = (error) => reject(error) + request.send(content) + }) +} + +function moveCopy (items, copy = false) { + let promises = [] + + for (let item of items) { + let from = removePrefix(item.from) + let to = removePrefix(item.to) + + promises.push(new Promise((resolve, reject) => { + let request = new window.XMLHttpRequest() + request.open('PATCH', `${store.state.baseURL}/api/resource${from}`, true) + if (!store.state.noAuth) request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`) + request.setRequestHeader('Destination', to) + + if (copy) { + request.setRequestHeader('Action', 'copy') + } + + request.onload = () => { + if (request.status === 200) { + resolve(request.responseText) + } else { + reject(request.responseText) + } + } + + request.onerror = (error) => reject(error) + request.send() + })) + } + + return Promise.all(promises) +} + +export function move (items) { + return moveCopy(items) +} + +export function copy (items) { + return moveCopy(items, true) +} + +export function checksum (url, algo) { + url = removePrefix(url) + + return new Promise((resolve, reject) => { + let request = new window.XMLHttpRequest() + request.open('GET', `${store.state.baseURL}/api/checksum${url}?algo=${algo}`, true) + if (!store.state.noAuth) request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`) + + request.onload = () => { + if (request.status === 200) { + resolve(request.responseText) + } else { + reject(request.responseText) + } + } + request.onerror = (error) => reject(error) + request.send() + }) +} + +export function command (url, command, onmessage, onclose) { + let protocol = (ssl ? 'wss:' : 'ws:') + url = removePrefix(url) + url = `${protocol}//${window.location.host}${store.state.baseURL}/api/command${url}` + + let conn = new window.WebSocket(url) + conn.onopen = () => conn.send(command) + conn.onmessage = onmessage + conn.onclose = onclose +} + +export function search (url, search, onmessage, onclose) { + let protocol = (ssl ? 'wss:' : 'ws:') + url = removePrefix(url) + url = `${protocol}//${window.location.host}${store.state.baseURL}/api/search${url}` + + let conn = new window.WebSocket(url) + conn.onopen = () => conn.send(search) + conn.onmessage = onmessage + conn.onclose = onclose +} + +export function download (format, ...files) { + let url = `${store.state.baseURL}/api/download` + + if (files.length === 1) { + url += removePrefix(files[0]) + '?' + } else { + let arg = '' + + for (let file of files) { + arg += removePrefix(file) + ',' + } + + arg = arg.substring(0, arg.length - 1) + arg = encodeURIComponent(arg) + url += `/?files=${arg}&` + } + + if (format !== null) { + url += `&format=${format}` + } + + window.open(url) +} + +export function getSettings () { + return new Promise((resolve, reject) => { + let request = new window.XMLHttpRequest() + request.open('GET', `${store.state.baseURL}/api/settings/`, true) + if (!store.state.noAuth) request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`) + + request.onload = () => { + switch (request.status) { + case 200: + resolve(JSON.parse(request.responseText)) + break + default: + reject(request.responseText) + break + } + } + request.onerror = (error) => reject(error) + request.send() + }) +} + +export function updateSettings (param, which) { + return new Promise((resolve, reject) => { + let data = { + what: 'settings', + which: which, + data: {} + } + + data.data[which] = param + + let request = new window.XMLHttpRequest() + request.open('PUT', `${store.state.baseURL}/api/settings/`, true) + if (!store.state.noAuth) request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`) + + request.onload = () => { + switch (request.status) { + case 200: + resolve() + break + default: + reject(request.responseText) + break + } + } + request.onerror = (error) => { reject(error) } + request.send(JSON.stringify(data)) + }) +} + +// USERS + +export function getUsers () { + return new Promise((resolve, reject) => { + let request = new window.XMLHttpRequest() + request.open('GET', `${store.state.baseURL}/api/users/`, true) + if (!store.state.noAuth) request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`) + + request.onload = () => { + switch (request.status) { + case 200: + resolve(JSON.parse(request.responseText)) + break + default: + reject(request.responseText) + break + } + } + request.onerror = (error) => reject(error) + request.send() + }) +} + +export function getUser (id) { + return new Promise((resolve, reject) => { + let request = new window.XMLHttpRequest() + request.open('GET', `${store.state.baseURL}/api/users/${id}`, true) + if (!store.state.noAuth) request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`) + + request.onload = () => { + switch (request.status) { + case 200: + resolve(JSON.parse(request.responseText)) + break + default: + reject(request.responseText) + break + } + } + request.onerror = (error) => reject(error) + request.send() + }) +} + +export function newUser (user) { + return new Promise((resolve, reject) => { + let request = new window.XMLHttpRequest() + request.open('POST', `${store.state.baseURL}/api/users/`, true) + if (!store.state.noAuth) request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`) + + request.onload = () => { + switch (request.status) { + case 201: + resolve(request.getResponseHeader('Location')) + break + default: + reject(request.responseText) + break + } + } + request.onerror = (error) => reject(error) + request.send(JSON.stringify({ + what: 'user', + which: 'new', + data: user + })) + }) +} + +export function updateUser (user, which) { + return new Promise((resolve, reject) => { + let request = new window.XMLHttpRequest() + request.open('PUT', `${store.state.baseURL}/api/users/${user.ID}`, true) + if (!store.state.noAuth) request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`) + + request.onload = () => { + switch (request.status) { + case 200: + resolve(request.getResponseHeader('Location')) + break + default: + reject(request.responseText) + break + } + } + request.onerror = (error) => reject(error) + request.send(JSON.stringify({ + what: 'user', + which: (typeof which === 'string') ? which : 'all', + data: user + })) + }) +} + +export function deleteUser (id) { + return new Promise((resolve, reject) => { + let request = new window.XMLHttpRequest() + request.open('DELETE', `${store.state.baseURL}/api/users/${id}`, true) + if (!store.state.noAuth) request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`) + + request.onload = () => { + switch (request.status) { + case 200: + resolve() + break + default: + reject(request.responseText) + break + } + } + request.onerror = (error) => reject(error) + request.send() + }) +} + +// SHARE + +export function getShare (url) { + url = removePrefix(url) + + return new Promise((resolve, reject) => { + let request = new window.XMLHttpRequest() + request.open('GET', `${store.state.baseURL}/api/share${url}`, true) + if (!store.state.noAuth) request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`) + + request.onload = () => { + if (request.status === 200) { + resolve(JSON.parse(request.responseText)) + } else { + reject(request.status) + } + } + + request.onerror = (error) => reject(error) + request.send() + }) +} + +export function deleteShare (hash) { + return new Promise((resolve, reject) => { + let request = new window.XMLHttpRequest() + request.open('DELETE', `${store.state.baseURL}/api/share/${hash}`, true) + if (!store.state.noAuth) request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`) + + request.onload = () => { + if (request.status === 200) { + resolve() + } else { + reject(request.status) + } + } + + request.onerror = (error) => reject(error) + request.send() + }) +} + +export function share (url, expires = '', unit = 'hours') { + url = removePrefix(url) + url = `${store.state.baseURL}/api/share${url}` + if (expires !== '') { + url += `?expires=${expires}&unit=${unit}` + } + + return new Promise((resolve, reject) => { + let request = new window.XMLHttpRequest() + request.open('POST', url, true) + if (!store.state.noAuth) request.setRequestHeader('Authorization', `Bearer ${store.state.jwt}`) + + request.onload = () => { + if (request.status === 200) { + resolve(JSON.parse(request.responseText)) + } else { + reject(request.responseStatus) + } + } + + request.onerror = (error) => reject(error) + request.send() + }) +} diff --git a/assets/src/utils/auth.js b/assets/src/utils/auth.js new file mode 100644 index 00000000..a5130c91 --- /dev/null +++ b/assets/src/utils/auth.js @@ -0,0 +1,69 @@ +import cookie from './cookie' +import store from '@/store' +import router from '@/router' +import { Base64 } from 'js-base64' + +function parseToken (token) { + let path = store.state.baseURL + if (path === '') path = '/' + document.cookie = `auth=${token}; max-age=86400; path=${path}` + let res = token.split('.') + let user = JSON.parse(Base64.decode(res[1])) + if (!user.commands) { + user.commands = [] + } + + store.commit('setJWT', token) + store.commit('setUser', user) +} + +function loggedIn () { + return new Promise((resolve, reject) => { + let request = new window.XMLHttpRequest() + request.open('GET', `${store.state.baseURL}/api/auth/renew`, true) + if (!store.state.noAuth) request.setRequestHeader('Authorization', `Bearer ${cookie('auth')}`) + + request.onload = () => { + if (request.status === 200) { + parseToken(request.responseText) + resolve() + } else { + reject(new Error(request.responseText)) + } + } + request.onerror = () => reject(new Error('Could not finish the request')) + request.send() + }) +} + +function login (user, password, captcha) { + let data = {username: user, password: password, recaptcha: captcha} + return new Promise((resolve, reject) => { + let request = new window.XMLHttpRequest() + request.open('POST', `${store.state.baseURL}/api/auth/get`, true) + + request.onload = () => { + if (request.status === 200) { + parseToken(request.responseText) + resolve() + } else { + reject(request.responseText) + } + } + request.onerror = () => reject(new Error('Could not finish the request')) + request.send(JSON.stringify(data)) + }) +} + +function logout () { + let path = store.state.baseURL + if (path === '') path = '/' + document.cookie = `auth='nothing'; max-age=0; path=${path}` + router.push({path: '/login'}) +} + +export default { + loggedIn: loggedIn, + login: login, + logout: logout +} diff --git a/assets/src/utils/buttons.js b/assets/src/utils/buttons.js new file mode 100644 index 00000000..0d266e2b --- /dev/null +++ b/assets/src/utils/buttons.js @@ -0,0 +1,66 @@ +function loading (button) { + let el = document.querySelector(`#${button}-button > i`) + + if (el === undefined || el === null) { + console.log('Error getting button ' + button) + return + } + + el.dataset.icon = el.innerHTML + el.style.opacity = 0 + + setTimeout(() => { + el.classList.add('spin') + el.innerHTML = 'autorenew' + el.style.opacity = 1 + }, 100) +} + +function done (button) { + let el = document.querySelector(`#${button}-button > i`) + + if (el === undefined || el === null) { + console.log('Error getting button ' + button) + return + } + + el.style.opacity = 0 + + setTimeout(() => { + el.classList.remove('spin') + el.innerHTML = el.dataset.icon + el.style.opacity = 1 + }, 100) +} + +function success (button) { + let el = document.querySelector(`#${button}-button > i`) + + if (el === undefined || el === null) { + console.log('Error getting button ' + button) + return + } + + el.style.opacity = 0 + + setTimeout(() => { + el.classList.remove('spin') + el.innerHTML = 'done' + el.style.opacity = 1 + + setTimeout(() => { + el.style.opacity = 0 + + setTimeout(() => { + el.innerHTML = el.dataset.icon + el.style.opacity = 1 + }, 100) + }, 500) + }, 100) +} + +export default { + loading, + done, + success +} diff --git a/assets/src/utils/codemirror.js b/assets/src/utils/codemirror.js new file mode 100644 index 00000000..e40ba58c --- /dev/null +++ b/assets/src/utils/codemirror.js @@ -0,0 +1,60 @@ +// Most of the code from this file comes from: +// https://github.com/codemirror/CodeMirror/blob/master/addon/mode/loadmode.js +import * as CodeMirror from 'codemirror' +import store from '@/store' + +// Make CodeMirror available globally so the modes' can register themselves. +window.CodeMirror = CodeMirror +CodeMirror.modeURL = store.state.baseURL + '/static/js/codemirror/mode/%N/%N.js' + +var loading = {} + +function splitCallback (cont, n) { + var countDown = n + return function () { + if (--countDown === 0) cont() + } +} + +function ensureDeps (mode, cont) { + var deps = CodeMirror.modes[mode].dependencies + if (!deps) return cont() + var missing = [] + for (var i = 0; i < deps.length; ++i) { + if (!CodeMirror.modes.hasOwnProperty(deps[i])) missing.push(deps[i]) + } + if (!missing.length) return cont() + var split = splitCallback(cont, missing.length) + for (i = 0; i < missing.length; ++i) CodeMirror.requireMode(missing[i], split) +} + +CodeMirror.requireMode = function (mode, cont) { + if (typeof mode !== 'string') mode = mode.name + if (CodeMirror.modes.hasOwnProperty(mode)) return ensureDeps(mode, cont) + if (loading.hasOwnProperty(mode)) return loading[mode].push(cont) + + var file = CodeMirror.modeURL.replace(/%N/g, mode) + + var script = document.createElement('script') + script.src = file + var others = document.getElementsByTagName('script')[0] + var list = loading[mode] = [cont] + + CodeMirror.on(script, 'load', function () { + ensureDeps(mode, function () { + for (var i = 0; i < list.length; ++i) list[i]() + }) + }) + + others.parentNode.insertBefore(script, others) +} + +CodeMirror.autoLoadMode = function (instance, mode) { + if (CodeMirror.modes.hasOwnProperty(mode)) return + + CodeMirror.requireMode(mode, function () { + instance.setOption('mode', mode) + }) +} + +export default CodeMirror diff --git a/assets/src/utils/cookie.js b/assets/src/utils/cookie.js new file mode 100644 index 00000000..5004b602 --- /dev/null +++ b/assets/src/utils/cookie.js @@ -0,0 +1,4 @@ +export default function (name) { + let re = new RegExp('(?:(?:^|.*;\\s*)' + name + '\\s*\\=\\s*([^;]*).*$)|^.*$') + return document.cookie.replace(re, '$1') +} diff --git a/assets/src/utils/css.js b/assets/src/utils/css.js new file mode 100644 index 00000000..15ab99fe --- /dev/null +++ b/assets/src/utils/css.js @@ -0,0 +1,28 @@ +export default function getRule (rules) { + for (let i = 0; i < rules.length; i++) { + rules[i] = rules[i].toLowerCase() + } + + let result = null + let find = Array.prototype.find + + find.call(document.styleSheets, styleSheet => { + result = find.call(styleSheet.cssRules, cssRule => { + let found = false + + if (cssRule instanceof window.CSSStyleRule) { + for (let i = 0; i < rules.length; i++) { + if (cssRule.selectorText.toLowerCase() === rules[i]) { + found = true + } + } + } + + return found + }) + + return result != null + }) + + return result +} diff --git a/assets/src/utils/url.js b/assets/src/utils/url.js new file mode 100644 index 00000000..2649a592 --- /dev/null +++ b/assets/src/utils/url.js @@ -0,0 +1,12 @@ +function removeLastDir (url) { + var arr = url.split('/') + if (arr.pop() === '') { + arr.pop() + } + + return arr.join('/') +} + +export default { + removeLastDir: removeLastDir +} diff --git a/assets/src/views/Files.vue b/assets/src/views/Files.vue new file mode 100644 index 00000000..10a2fa05 --- /dev/null +++ b/assets/src/views/Files.vue @@ -0,0 +1,231 @@ + + + diff --git a/assets/src/views/Layout.vue b/assets/src/views/Layout.vue new file mode 100644 index 00000000..d2bc6b9d --- /dev/null +++ b/assets/src/views/Layout.vue @@ -0,0 +1,43 @@ + + + diff --git a/assets/src/views/Login.vue b/assets/src/views/Login.vue new file mode 100644 index 00000000..39c4dfb3 --- /dev/null +++ b/assets/src/views/Login.vue @@ -0,0 +1,71 @@ + + + diff --git a/assets/src/views/Settings.vue b/assets/src/views/Settings.vue new file mode 100644 index 00000000..39db5de2 --- /dev/null +++ b/assets/src/views/Settings.vue @@ -0,0 +1,20 @@ + + + diff --git a/assets/src/views/errors/403.vue b/assets/src/views/errors/403.vue new file mode 100644 index 00000000..47c6c897 --- /dev/null +++ b/assets/src/views/errors/403.vue @@ -0,0 +1,13 @@ + + + + diff --git a/assets/src/views/errors/404.vue b/assets/src/views/errors/404.vue new file mode 100644 index 00000000..61dbe144 --- /dev/null +++ b/assets/src/views/errors/404.vue @@ -0,0 +1,13 @@ + + + + diff --git a/assets/src/views/errors/500.vue b/assets/src/views/errors/500.vue new file mode 100644 index 00000000..0bd86786 --- /dev/null +++ b/assets/src/views/errors/500.vue @@ -0,0 +1,13 @@ + + + + diff --git a/assets/src/views/settings/Global.vue b/assets/src/views/settings/Global.vue new file mode 100644 index 00000000..50a6bf30 --- /dev/null +++ b/assets/src/views/settings/Global.vue @@ -0,0 +1,187 @@ + + + diff --git a/assets/src/views/settings/Profile.vue b/assets/src/views/settings/Profile.vue new file mode 100644 index 00000000..bcf11738 --- /dev/null +++ b/assets/src/views/settings/Profile.vue @@ -0,0 +1,109 @@ + + + diff --git a/assets/src/views/settings/User.vue b/assets/src/views/settings/User.vue new file mode 100644 index 00000000..53a4175b --- /dev/null +++ b/assets/src/views/settings/User.vue @@ -0,0 +1,319 @@ + + + diff --git a/assets/src/views/settings/Users.vue b/assets/src/views/settings/Users.vue new file mode 100644 index 00000000..355aaaed --- /dev/null +++ b/assets/src/views/settings/Users.vue @@ -0,0 +1,48 @@ + + + diff --git a/assets/static/img/icons/android-chrome-192x192.png b/assets/static/img/icons/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..685cdea9d5cf74acf3f02f345faefceab921cf74 GIT binary patch literal 4299 zcmeH~cT`i^x5qC<1ws*}h~N+@0zpUufsoLfG{Jx%2%>}z3PA`(K!P+;M36F6K^)qQ zBcODp7Xguu^rC>2AX1cKfSea+y+7vt)_Q-w|K43^-@W$TpZ(qE+;#uh_W{AofQ#ca z2LwS}MuvJ84Bzz2*jN~M7v^jwhGTWpHr0lpR|&8K;t@v7P_F~B;XpnPC}sd` z5m0>%G@F1{8_;S8h!Ai-8Yuh@aDM}>R-pa{pi=?93@D@l)e4~10uW&Ul>qRiK(hs4 z3xH-LP^$!rSwN!!;7WjeEI>X2YSlo!7GSc0W*g98h_r$W?|?}MuzU~fJ^*4b&~5|f zUBGJ)Bus(7zkv2NF#a9P?SQ2{@bxDM9|IN3VCo0hJ^*y^>(XrpF8!cj9?Wb58XY+I zfwCpA_7hxw4{|?)l|A4;3T-an^CcX0f2FAOEs> z>GknV#mLRIuw4lUn@17Pc*SC24{JteSoLo=b18W;lAfiNlZSTR%Ey)J{ARH0SqndE zzwc!+HROKyfcu`~H-qC8&u21JQ>(AL8+v%a!d#Hdr<^6h#ksNjeS33f>qjEQMw2=+ zEDz)0X6J$>#HJYN%YL;Xr>H52sh!72s2DDK^T9JjP6`X=qV%;LE}xj2cXT>uG8N4P zN6X+O{XH=c_Ryq@rlv+_#^ieOi`1dPA{V{eyqccoLPLW?*Set$qpRb%+R$M;Ijq#A zl+2JmTVmR}Jz+UKSh)2E^ZJ3>l45v%aZt>Z`Sz9MK52PhUt`_EQDI4L%Fp>Jf!TZF@SSC4O+0L~a9y!~Lc)l>EN z2%5Rmj@}@7e5ug4j2pwKu_8h6QsR*1< zg6YRq)!sZN8dD(3%hEKV>32PZ@YnFP>SXY_L5-Z}MP6>zw(UY^gQsnEm=g>9?jBeu zD|-a+7K=KK6?k|qJcM78628c!@pwVHF>E)7+hY3<&NCqaqkej^2kFvW&!khc4tDD6 z_f`I^Mt@zMp6um1TNw*M0xy>&D3m}F56@45sGON^huOzR=5O*RR;Rna7&v$1W8kyg zqEMI)xThh%qUM5D7SD1;aj$B=FNwS_l1S24A(zFmXrEQiZ9a%z*jmlBJCj1vcK0d~ zH?UF3<%hNej<2U9KH3^QcMBEq_}Ip34jYSLdzPXWPUD8<&3NA5?~E)?k&JC}`tA0f z2oBLXO7d$N5N{)5NOOlQ;kYOhoA&`+xp}$K4!JR8v&6oP{v#Vkh&+0Xlg?k&6R(cy zL=0a#2Zh&-N6`{?IcVFH+5I8ei4IkVYDbIdDHp-0lwLncOl4C^sJZB4KqMQ&lWm(K z{xIxhGd7A^KJK1jKiz4wYY8{Qqc?GgZKh~qS$-8wE# z>EQiwB3|Drw|P~FVD`N6Fuj;&%GwdT7`bI#4mHI|uuw5`@3C2hkF^XJUK}~nIRk%C zPuY#-DO+cIkd#rXCfb^LA_AhGd`-{jBpd9rMHD-8)rn}gv(i4^fBI}z&nG?qjeM9) zjDte6na$G?p{<@mNyA8&JKt!$;rrXlS`8hq$e<9STnoNrk6 z&5efMJ+{y~9n5V$K7Hw+gX?LewLyt}BT>W+TXI9V7Vl0&TCA>Lu!oyQ4zL*;cuYRH zsnXhGSKV0eRN)lZP=9yzoJ>SX^%?$D@3^yjb0)(~A?!EV?k-J-%nC_Wtbdzcli2?j{iTp}3+fuXbNY+7*sXtksGR9^m~V2kZET@KaeRoO$i`mRkSO}6>;C3Sa)*Tc*ih_>@vD@46pr7o ziGnw5SsL%WBteURmwO@SNtC(4$;F7$EjcLl@{_(lF|6DuHPHs`!dXl)x26=l-=l1$ z266O5r2F|rXj@*SY2(1nf}xxdu2l__d*NitBGWmC3inov7S$A9d_LBnD0QMW>2(#au zwDX4?=LyoNB-Dc9nw&eU`locL3KJCmjsUwd5N&iS!AByZ%CS8C^EX`$nyLSQ{rOmY zl^B}uTXWC_I5b(dzOtwu#*hlZzM8G)Vv5~xt}9DEW5aRE+x|1m=ZnA`^HTv{!IkzP zaTp?g@)ciAk9Fffkg!R_nxVGTuIuZuz^YVFXMuhmdavlGUG1HFhNCf-C(W-uLMAbr z8glbo`=WNgzD(8n*ce6C_6bcPj7>{%?n@poozau`7XIDH^1&$ztAqFnZMRY!v(MW3 z6S~5@5anF>Aq&UC)h3^BZ^WU|zE=slcrGzyIJ+|l_dKcE)O6>1`9|@yN?#7^8&g9x zZzo*U#6Rna`Hu*3hA!-DqkXl|RgW}<;8 zYjN&SV?so$iEtqM;fRgCr=-vLJ*kO=Y;(%;I*-rSBwA!?g{XSr_C}!D=`S7YWQ4=VyC&7a>YD8(Zq}h!O&SJ)< zsxnq9rMy2@jn|F6eN25f?pQ59dl)zNvb!g(Z{tl}yH{q%<=KW@I*f0*u_c0TqPN`m zE}9-kUT%CJOYhEKZtRVt!#*xI4)zwLanQY?VoB1zgt-Z>#v>A=DO9 zJ}-xGn$QHP%XMuoL_=dUqnC3SeFN))LJ6tbdo*)4qcE>q*Fu>GjxMD{?bVD;gbL=% zsj_rNMCj_Ywup;;F%PKcJtLX$h>Zuv#m=2n+hYw*N4K>Obx(GT_G!Wi_>pbrBn+x) zwr{j!vU^BZtZWA`k>J~2OeDMDoqSyw4pKm&v2rNJ!dRk}@d`M+ zqLM5Mg-4;<;>3#nM}Zf~*~9hD|6Wizk}1q6xbUlkAIX&*Nc44qjJ$|$E~Z2`52u@O zWqGW;iX0BkXo-Ib2Vz+2>hF#q(#+pUw;%S9{>OV literal 0 HcmV?d00001 diff --git a/assets/static/img/icons/android-chrome-512x512.png b/assets/static/img/icons/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..be4f052601236f72b77a3c93cb6a347446d8e786 GIT binary patch literal 12300 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

hKa1i8VW< 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 literal 0 HcmV?d00001 diff --git a/assets/static/img/icons/apple-touch-icon-120x120.png b/assets/static/img/icons/apple-touch-icon-120x120.png new file mode 100644 index 0000000000000000000000000000000000000000..f204c14b893b4a521b59a1e0fe86bac74ac4ce4d GIT binary patch literal 2930 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 AL;wH) literal 0 HcmV?d00001 diff --git a/assets/static/img/icons/apple-touch-icon-180x180.png b/assets/static/img/icons/apple-touch-icon-180x180.png new file mode 100644 index 0000000000000000000000000000000000000000..8c3ee3a9efda885c1c31c1f82567ffb4f0db505b GIT binary patch literal 8893 zcmZ{qbx<75xAzxYd~qkZ2Nt&t1h>GVfe?Igx5WvB&4X)zpaFs3LnVzoh^EuyhdghPm?wJ@}Z8c&7dIA6dK&+vztdFi6|1Eex^i_5o zD1xrA9TcDn06<+5;XMoo-Nu0Ht0@AiCm0XW4Hg@9eJB7B#03C^g#!S0=&rB>0KiuW z064M&03ewF0F7r(yPgc%0JPRrQwBW#d*pYOq@sK9J=I^s0RV1`e+$NBk8vVeQAk5s z;bp+`X|7Ye*@Ex>+w!^os>O#j-^(>H>g>DkSuG z6Ye68D^@c=>9>DS*z-TvqXob*%u6Jt5Pm#H5i)QSy7?}|yt&%|h?(#F_&}c%Fb0=R zo0zT>oeJxJt-Q)si=XT(=Sk=(T1%4bPfI2drG8u|m2qXs(8GWEouwWajiQL&aR{45 z9wT{`@4WKEqb;f)QQDmTY6y%1Oy?hj64D&$hO|&V!Q32t;3^A@BV=T|NW^kL zq#`wu_{tZfNHMlsav$=xXV%4|q-`XN@nUDNO^i*Z&9J|L^G#zD^CIYEmoF*rkH<6O2?^c z6H#&t02k4MajtB;o`knP!NY2>6S!#^wjcH?`LZp{kKJ!2{!8M}>*Bz3TqZ^3=izLm zxzW6~E^kQ!=#%gHg&pe6qt`BqO4+?JTAw7}kl7lY6nNcK&gv?$_Be!juzP<}p5U6g z>vw;BcpPn}oE+niC5N#ZS4eFxHo$|zL<#%}ipk7fEAMxgE<29S!8!wm0s}}qxd|G4 z>%8NOhK3{&H2}dvDXFQTes^9c8`}vMwe!EoKkxmR`~)oHY%rY;YcMTULAJyuadQIf zWtA}n&v zM)70eWFeA+e5@BQIVxswHHPc>)mR|(01q9{1BrVyF}HlY~|lf!;sdII)TJW{SP z&WNfbyx|cM{muFO0-TKy9lF24gk0lsXu7^qOK?}wi?{spk!nGE5%(U~3R^|NLenIy z-#s_e?HhyqZrEK)Jj2hUq4hoW|`=z^3W)S=eK=c536FtvPUdVYqhx zJH#WoR+O61&^#ZJx?b;)v7$ zOxacuufhrwZEd-?2#vma|^mTJ@ou>#JI2k_xr}H;}U^sg{zPk(?+(EI7^v&#g28d7#VS}6oEfEw^eDP$sKP0t`zf-yFMz;heMYo|;bbjnA=C0YTlCIV^TGtbd{#F% z%xZ+Z(^|YMtqsSE{)Q2?fILxkIwZcO)ZAl4r4Ai*FMK1aq64C6G;)|DSM7&D3S1WI z3*U?6Og@u3+m&i7dQ$OG#O-huQ^kZ3;ShfXVKXQk`M!O}*^qQJ^!L?f7udnkP{@ek zTHYP+g8lslQ5F+5$(zsPp$SHnz^1@bvxpHYJTBIp7L$&q=)XD#F%L4N)fscgcgL9& ztqTNKdL~=S&79s}bg(Bp{#mUR^D%(NBt)i(SIP@vr0J1$O04MjSLdH}P8MLM9D9>X z_VO~y7qpSQ_Y*OlWqZcrX0}Ms2KBz9UiY99QM+K%+!bPxjVj?OH9r!(oH9A-c3 zjLhjTyLz*j9p&5vr@nF8yq@Ac_2~t_`9gDHT2RaWCE4b@Mdrj=mA>N*8D9pKa7_0n z{T%F2iW}Vgb|ZnVFWs?O^!|kb+rjg9uc1-NzzGk;wziXfx4cUhb%ly;?1#@~njQ*v zTCna9)#NFe9)NBPMu&tigXM5(>$3d5QuhI+Vz2DV%q5J24xGF5ux;ovAf|gGJz6Wd zaA5Uq)E>*T_eXWX(VEPIOetTrJGvr`D~NLyobs9368>sb&Sq=?WrJCnmxinC**%al zn*sw<4N5|9jV5ef8V z!r(7w{&8$LD?(0umx`)rlN3GhJnk!9dC9lwP~brGYol7Z@Ykxn06+&m|F&aqO6S$% zD(3d`A7ho>B`UJzbyi%xwKlQ^c5~9_B|NI<3U1jxbrQBg;!(1};w8Mjc-yNzY0igf z&IgRnQ*b%nve}dUe1{~)9Ib25h4$pbX|vxa8dPPX(eQJJ2yqe*b;n?b)r96&$qpt~ zW6{2pCBd1d3`tB?c$@suuT18TWY=dVG3gdDk>J8=gX{O0gx^Ppl+KqnI4>jnQraE5 z_oO%z3kR(QM;MHVTfqgVPsn^7eM56bF4GL>gX8?Zw%fX6#_u&>Q;++;Pz>thnS6*e zxl`R%6{iAqFpKXqQ@OA&VX@=;t z^r9DJ0Sul)Swlk@{3o8z1CJw}P$8qN5RTeD$iBN5p4YEz(sgo0(*X~x2P!_D_cHO; z`QLKq=Nwt7Z{#PU9{61+dY~#&Q-m#7$G-WmbwlSSliuGI88ET!%2PMfSb30~98O=e2Of+ou18ho4woZd;K2=B z^%0tO0dS^?iQ_+qeAuw^sLCrk#JyqWTZ&h`LD5CHVVwGN6zvNS+o9an^iK}>Pij8{ z^_%PU%=;^Gm82IJ2>nTVw?Y?Z3HzkG_WP{Y4uGHj(Id_*N5lZubNqB$0{l8t?x02{9pm^4@g+Ky8b~r{`Pit2*nrd|oqP3ZrXy2)+ZdPL)tZd%s z6yLV&ZEcYS{1NIDBi?AkRO8Io@KIyDR!P1xxkzHVedZe>aW7+IsUze;9N@&J!3)#Xm5JtM z@HMDs@b}P|Cv;B=Sf6re6UWnyu0OJWnLrdUw3P?d$6?X9RL zodrk!GVbTyAPDL{9G!M*xW`O zD=H^~c}}lUGX930^3CwWQ1rld_^hf+<`W;k7jG!$g?~-oR+@V1)=Z2prBo+IfB4zx zbg}Lxlv(IF;4GZ^ofbsmsHJVCRFn6yTob2%E63vzE(&torLlG+Cy!L1^EzJxO13EQ z)_n{XOHb~6_KM?~Rq9AeRFae#3ZY`Sg&vzO9{2<8PuGzfVDAe%tSl0 zNY33Pp!-AUO$!O_FGLkjnVeog-qG_`9?9K;$~HCCRaXZ|LM7=0C(~)-lFoQ@1Ih4p zpzD>MP8^Ip4@(d$tJF@pcPQuuhU{vjiVHeVSM5Uay!kmq$^~hZM=V}$0P@@Dl8p?A zE0m|?&E5mGA2vgQTt%I9;6;Fmfm$MrIen_*HSBaPA>7gj&i74;8ww)klHK0%bkw!c zGJCZ+%l|d?2kTDQ8d*VVh2reXevs?1Q@k|pmad%3lfOHkI_dZe zC~Bg96ex6f;^Edquogkd392aBglUy8`5ARC$D1=q31+*eoWUWJ&(j&>gMt-sO;$1| z103U5%=^RFs;Y2Ze|qT+t@=}hUF(%0wj?AZ*@*VVjA%aAhGM+xK);3uUet3%?GI2) z+?0Queu1y{GMxP4?V%$h~qn z{Hb>jeocJ(Bit}hrw!!hCa+d&Gu}a4an5l(fpu5-=3oc+WD^9oeVJFGbfe{AWTSn* zOlKwwG&eSOY%Y4GD0J}i<2iP4AKSUhSj?HZwDF46D%j(l=xJS}r!_arvC~)#XvwSR zJ!s~Yxew+lIRutkL|$I#P{P8u@v(Jyi_{&@O}#TO4flhRfM-cQx${`eM@EoK+HGm0 zQaxVooJYQyLETSn-5Fp)(}`6cl$fepn@OCRDo)!c0eWDMq$(P@&FwvSN|hk(6|P;L zOm8)hOD;%k?M!M!!7Q|^Tg43NIl`MZ9t8mzjMiijh(P8{HYZ{?B=&GpGj(~12DenC zVNu;YBk3}>$&X?|Lake*?REx;m7hD*P;oBbp|@xJgBTZP!uM~pJp4b7gryF#Y&hHu z>G3pUEU9X9OZJvm;w2p8GZ=Y@qg-5Sn@&|zzjk6cb4vQn`xvf$F`GxYNGKKwYd=F7 zXpL7_{iBIh^xU~Mg}*5tc-kvWq}Zg*;9}EY!#_ofr3QkHCq!0b?6WCyf9-?~FPq?> z^V7}YqWWLXuxo?3U2FRKrFWg6eJQChTw_H`mibm8-b|#qW#X`W2*80+hBZ4Ot9(G> za2wyY@e7#EIJ%F9O;P84;}i3LmbGSHQI)Gg1uXNlAC|`lMrY|ircM=4XG2g4MB6AF zW?vF|s2L_!Pb0(NR6eL`qitI~RUAJRF(7s{z}q)>lHKmrs)iVy9vI2mQLBkeXd;hU znPyrhe-6Q))M`}gXBVR%oz_sR`XF0nC-74_7AL32z48NMRthg7%B~a=bP~+7uytJI zxeT>@PyFpLFk$z_H*=ta@A7yg-S(MN{t5dz%2)YB8HQP^y~*EJXm1M-4WayEvZ#<# z?o1@8MZa?I^3>*3yE8fc z@s%NW)!!4K16h>IbWEDpW-*~gF9G%|FRw8xe2ZKJH@Gy$?&XO3eE8jcQwxyDG? zw=8V#I_k)`+rlItDE^X*$dN~sDcJQ&xcU^sWOgzit;ipa%e5kzqANp<96`$@9crx0pyXm}SWcXTP7Qy77!0_|E$K8D~6ZJ0XxKn@Tp=9R37UfyMr zmYK7O$Z1a?ErFh2ZG-6`mAr0Yvv7j(kUz1ENOhwHJg!DR5HppW{3?zs9hQrl4wf3C ztzYGWB`0d6G{FX9QC6Dr-IO!ng6$qXW!bZnT-ixQRR0|;;TSdLEJPruoJ-0^#=&7@>yyVhATUc~rA&6vL8Hi!rKkxz{EP2*o-bh-fUvRxy` zjJ7^IealGF?%j=TZke5X!A`r7okd@b7eejj2Qv`*%0KYXE6hkrual^9TYvZVPoTb+ z_K4E3M8*iJYIMZ5BUrv__KYzcDt)zJaUMk9I4b$?#Oia{SE(xHA|6S0akJ)7o!fd} z;2ORkk(VEWmoWVK&&L7~W3;`b-gh)picT#Pq?s@%|tvEjMWY)Yw6Vj!uOV-=(GKKb_1 z_o3CW&-C=RsWM5O14=P*2MWHx5gJxW$B&c6@|uJFSjvrcv4t#xP+o%iuKYZ%;GkcB z)h({Feo*NYnZV(OoMh&F6?4d?zz{j}?{&NlW8wx_I^6mrG)+bz9GQsL_Wu0}?nVU- zrb+e&_CPPCQnSbrd!F?j<#$xq>Eo!`@>X+{p>%iV^tE0$5;>p!^n3B?Xu*+v z<4Xb!o^i9b_|c(A1;&tENLowy)cgr8&I3*Wvop^Jewimfc)M_xScgFG`2<2_!{uoQ zKqWv;XynUmk_tq~yL9m45BM2SG(ieNFDYqtdsM`^DZLpk>V+7|WO8xB`%#5!@z1#_ zNJ8t?*U~1hc#7zv1;)Xy$f@+7H5eOx3hubILV=$zb?HjJbmGbNWR35b~MDc z-kNmzMGjmQ42G5H#b8O+Cbir)==x@)FGi^N&R0j6s*&~&myoH|D6lIsG-6%ygRhFF zwO<~}gbTO_HS)`hha7g!_twc#uxT^7aSWpuQswuIsJD)u+#HxXUK2CYJeJ<+d5hCR z;%G8wHWMB$+&>H-&0_HUn@)+Le>#{0>e*YF$Zf{OFyYvqrWVS+Y@2nz{B9!^DYYb2 z@r4z=SVZxm1Q>H9%`kP;-q>&Gu0?@U6ojgzYqV2mfO?9YVwtx_o*w(oJyP@K2&)xab6Ad>^Y5f7f5TzP`Hy` zf9)l16s-)K`kfd+c7wZFemsqECY|iYhkN*FbirzE^MbMVCfmx^)&Q>%HJF0y=rl(d zJb=gyJwG7@mrI*Qc{Y~7h3byQt-x+6WSie6~f{r%D6^$cqFNH2+U+A^9T$tji z!X++a_k>jJfzdWPtP@p>e8$4)TX{i^!Z}LpYK<)8C3M}38o?Hwh%+o^%-bs!`6B() zQY!(AmK6fJ!P%@zb9OMcyS$@F3IyJOQJhF$jPlQ-RwO{JM_s1&zWSGCYR1!y&_`W( zddid;qiD3vMpKTd@Vq{aBlQhiHAMz}J_MtoW~ir3RY0(PIjCS$-B%SZ`X^SvF6X&2 zzPhC?ao5{K1^y?(zo(tt&Jf!|2R9h?m&E9Q8^Fz!Z zsBA*X2Rz@$de zjo8`>N6fT+KFf6b>WTO7f;yh|N})QCp8y6foT8QEyp@Aus1{@uQVnr`_q;kL+I582 zH1&>PN3tS){oQ~&rvZn(2{wiI??RJtLO<`jVKa;ekeB1y(%CUn_4k?Qo^mMZP42ac zNj@v&XxIi;8>`dlz5UQHK-RYn4XQ$_ilvd;SH3pD)N;&h>!=#C2mBki4-I71YR?8s z9L&+9#yH1$PPn@79ce`D5_=Ok^h+U>*88L30hfW5F!fIC>NH=(k%VFH+;r(kc%zqb zfuUAh5F=J7?hS;rGGpv#nTaHS*`F{=MgP@t5SL>}ElgIhLH%qszr4U6m&IT%m@w(W zo=oP>)h4(wgEEMai+cQXt#y;vaU`2g5%--XRs(~=p5u`OQTp7+EGi7OK!f_wiR zY>PD>k-h<`h$~t(4NlWA9e@(PmhP;TqR{R)iHS5#w%QB>-?{jZTNSd^(U_eZ;%N66 zO`eNv`A<*MU29HKzDgoOCyk+Ns+rgi+mn~+vTZ}YsfWL1r*<$ID6S>h9H#aM&@a0 z*_4VYTlwil;HI(YFcCh^n@ao((55I-XIfkif^*3OKf6R;e}q}ju@5tqZKx&X5FCM~ zz9w4Ju;8L9c+`Fv>(fB_IXs%g(4X0Au$Yl5qjBIAB<0BD4c5!RIF3e9j?O_!_Nyvn z3BnSnKaZ@6^W7GS6@4T-!cL~mVtt*;p12V97YEDHq5#uf1y==3sSxUC_yN1Se+Ol8-Gj8a3=y=tYXou%JK*a6? zH|og=odJz4a4^tBSbu*CI93uyg4qY&J+l6mDgU|sfu@|4KJ1x@5&=1hP4RC%jc`k4 z4Jhs`izUryZ@x*?ThKl6(ICY;QxT_Osa`C+xP+pr#NNs8o72hqO_{$Y^Q*escZJ$e3c7{C$O^AdykI3P7J~_}S z8gm2v<2)`K$44JRyen4H+h3~IUL3=!dcr?5&x{eu^sRC>xW2PXSD|iKu)qY)U3XeP ztGa`C_<=9d*xgqUC4>^*9Gn8#ED$+?oDVYRn*Nc z6IjP+qNX25Tc$Amz9V@cR1$KLcIIt+*e3-czk(JgTXM|jm!u6538)|7`Syd^1pZR| z_7!x~RV)~$#j%iIncq-!$|K~CHAxsEGch=#J&HD$Crgf++8g@^$<#h!6HbrfLJ=)f z2GXm5sk7yq_>$Qhn|}$)UDrv8_O z;LoXw@R=Wyai(+d{cA7E0Ia1^P3_ed26Wv0(xY0Uwm(x_??QM)E&!e+GpnYa{wWSk zrECeo1fM;aRLJ5Qe(!6xt2aH3`Qi9THh>mZ$PNb3DujQfP|Y;>uB%LH#0)6VE z`?}bi7Eik$T-Y=1zS2|1;Jx?DmEY^7dl~xMS9$$1dhwEHV>|oHK(6w(6a+qpmT@P2 z-4NZ1L&>>Buxe`=OnTVDYG60?piRQ|rpOaUOy;wOAho<>#2DF3fzY*Xb_CEeFZ##g78_dBD3UhF> zabb}FOM;~Yq*>4*#RP=J1%yRd^n@i?9DRH|A%cSb{{CR6e`$0<(_jy8ht<@? zU&WV>zHZhKh_Z)`ubZ8_4+Nr%M&SVAlE)6g|Hb@wObEo$&dI^i2OumhLIUuPKr=M| zq4WQkS5CG*j{hRFm8^JZgzi5OsFRzWPoSqA;J>pH^mKQSt2fgAUpmm2XbK=KCM_*2 zB`zr`uG>l#iAG5NL&v}=$POT+sQ97q`3c%&^dBZeeGP!UldBzi_=0ZkKCT`Pg7z>! zCmRoUxZwYPFoM?Bwh}OFF_@UJw7s~vn7Fm1jg76Cji{)QjW|q5+8&Jd0HgEs8cchM PjsVb5(N?Zjw0ient#fwm literal 0 HcmV?d00001 diff --git a/assets/static/img/icons/apple-touch-icon-60x60.png b/assets/static/img/icons/apple-touch-icon-60x60.png new file mode 100644 index 0000000000000000000000000000000000000000..00f82e9432493a5e905484747f479148ccb79e8c GIT binary patch literal 1910 zcmdUui&xau7RL{fI3gr!f-=zMAs{I8fZsg$1@+_C(MG@HjaNV`8x3%scaL?L%?X}PO?C(C0 zb&7;x8_i9vO%X!oA;AF=Wb|Heit)mXgDam5uPXcmeh3*#m(Ge8k-1S?#72Llzicx~ zCU(-`2mwNw&Isk^BQ!%!<&Gef&Om4^5h1(^AuDao*>F>?N*!pt0mUW8-A5YhwB=HTWO%+5p02+Yhw{mdnd zyl$L`2#X}Ie;GqkqQ5rrY~0<T9`&94?Uz48tB3Lr*^(+olD9VosM}1?2{Kut4c?lDkW0dX8(ldcQ-Y8&GbF%I z6x?&7QWtlVZ}I&p38juAIq~D?!tNuMo8MLQFC#ZUqmw4D7FaIJ&rIg+KH_x1JS4Yg zYHt1T!EJIyRc);krBzs}uk4E~^mPlJ6J_rQxDhF2#aj(E1$0%^o#sLGC~n#HP*%q zwJKu69I<;gi zW95fMF8hB7s3{6`JYC-KZ6cPcYv-PA?l=%^_)O%`(N=ITp>%0c$zbu*ebZHDKgpSf z?S(fw-7N=yvvwDVHJzE8JkZBiQ1vq`njyaRt@`BxsZjswx5t3xZdWb|KTIS1{3v;5c8XWlNl9aSsU zTLj+i5B3KBaYy&S)TKM(ct-4Z89Twu@^|X6*fTr1c=^_n^;>q&e;Iv+?k0P!v$rx) z6O@1Xm69`_4p~ucdd`sOoc^66LQaj3BLe;?d*s+;T+(`*bH@DYB|26ctc_3zT%OvkUU6jsl#=F)hq*eQ`o zKQq_$0n)vhHhf^Uac5Io@7+(@+j_EjL⪙!QN+&(2&_qgZxo0XYb<1H4}G#=0{R9 z_ZY_~t2>Twplux&G`A#Rv_tI08*jAWIOEae7{Fya+@>7s$3RzdUDZy^<+y$)ZrClaf40iJ5FUz*Eg=os_Z|1PIJ(bwk}pd zkUz?a2#g_;#Dol&rpm~GJQz%lJA*V##AM?hUbrV~J%fQW7+u8<4gXc3PDxV9b^p7d z`Fb^#EC^cYkd`7Rc8ODEC`2t*$OK}AN}6oPrg3OocP~4#CFagxxidZN!kKJ4B|&I$ zI(^r!T{P7KO*%=_Qc@MS3MWZHw0c2Nq)b;!a6BMIny!{<2pkuZXc}TRKpXvU%!{5l zu9T@1N&+#xJeHx<0+O+MN$20p7F80VTtIpo?I|R(<|Ra+Qp*UPR)${eimuftcwa|{ z{Y^(8A}Pegyu6rP7Kg(UezU5OM3%jz6RFCSA%?$yd7bYBxfK14M$m7%1 z8e)5jf-V>DR7q1bY4ra*3|%5gVv8l17-M?LSuBht;Yg)PnAFpgA!UgfUUC{)K_mCK Tqo+bdc0eJ4VF7yo#Js-%tl&yN literal 0 HcmV?d00001 diff --git a/assets/static/img/icons/apple-touch-icon-76x76.png b/assets/static/img/icons/apple-touch-icon-76x76.png new file mode 100644 index 0000000000000000000000000000000000000000..d9cc0f35a3bf5f2d5fec3dfdb9caf319af228bab GIT binary patch literal 1977 zcmdUuiC0tC7RC<`wFu>AuK%pWbWKu#HE`s2IQNTDL zRiY>bs(ay4`V|!LjZs=%aiGkWv|6B(8u1tvo4!rX^GI)+ZBL{Ge+~=rC6;O@9)6?4F`ap1As})*Vp|VF&&%j#c{)c4g2B$$4G)- z9DtjSK>Tq?$b`gmkf?wgQz4QG$pw&B4jpTu^G)b-8@e>YEsbzPG9-TkH>=>5X1JvZ z+Gaq?chLC;+;|w0@}N^a#LFS^EOe@ab{C*a19WME&W&(uGxWU&V>M7Q2+Lo<`cW9z z1|Lkqsd=~n7avA5OzDB$lW=|kx;4Y>LHPR|oSughb5OSc2a5u-ursBi{yqT!{9}dP zu8belFQ#<*X5J?nhGrIwoKALhe&ApJvTXVGsyBN0yovV(y=%Unrr+@mc{c1Lti(B+ z@1~5_VIF!B+dY_k)vw13uwr?P=gxQlJ`Y}V{@(T0lsR<+EQ zFge-o4rV0JqlKZLGx;5UBFAh7=^=#UpT??YVvh~)oG5a9xqBicWn4_`;i$WRy{hdV zots+bij2HP`@+0^6HSzvOLh83-8E|E&MkI0+{IHz^>vo7fxCNa%e1UyY9;TgwHl8L z@0t{D`@=0Ds68^23i_vhE>$zC>@_t#)SRkLLNz0>8j%+4bv@c_lTl}R-qAesyXMCt z(B7e#VSiLcy^xz>sJz}&SazvS)h!^6ge0P}lDie-DwzU%(On@?tva0d=GOxzlaHQICIv@L(|`M_q5XNE`Xk?{2va(C;eY$WCY zT6`ydy}-3xu3E-%r)`rk2cY_AOfVBB^&~;neU~e5wNe|j#SvNA z_tsWEVy?5^aPxR!-4WiTEaRu;7SFXbsn^-)iMUxDZnmyIRNg8dE~2VmJDF0BceeJL zcD6l_PaEQ~dUzFC?ZTu!(|kYOH}Bg=@CMhWvwkZYzTm%$(CN#M^6^TpAX_V=SN?PU zn9=L$@t>Nsx^ack^pZ2=gsS}2Q-30vrxlN#w;3M1p{P*(vD(b>K_jVgecM%}o?|gHS0&KuKQo1{p+0AqBHc8tw~qn3PW#t}y%{I-g z(xF3p%Q6$YLdq0KpytPxv06(V?&ZFQ`%Ssc`Pd(8gSzcNBe^J_&Wqz?3D_Y-2U`Ri zBo2{6x1-VR$r}-bjv!4Z*A)GiKq8G43-<}*%po!c#K43|>LcTXw zDCX_8qTn6yR9l)A){>|Ti0M0sw^+hQ_s8(TU#lX-L=v^ z@Aw3WllcH)FtV>Wzr?13-kA#YX90mYijQrdAc;n!q(Xv#yHCuMM#mHWb1{U7h)4=I wg2W{eX#z5tM2>La@ghk)dwYaO<{~r!9#i14^~JU-I9Lb3a`R!9Gs0#60tLv6i~s-t literal 0 HcmV?d00001 diff --git a/assets/static/img/icons/apple-touch-icon.png b/assets/static/img/icons/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..685cdea9d5cf74acf3f02f345faefceab921cf74 GIT binary patch literal 4299 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 literal 0 HcmV?d00001 diff --git a/assets/static/img/icons/favicon-16x16.png b/assets/static/img/icons/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..8de7c05e09c2fe972e855eb61fe532a5f4e3fe88 GIT binary patch literal 918 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM%9|WRD45bDP46hOx7_4S6Fo+k-*%fF5lt>Hk z32_C|nw9@aKo$SBs{iY@|2LfUU$^bQ#j5{y`~N!}{%^DWzr)f0c1Ql(ANlWiUSRiH`Sg$ENc|+D8-oM?e3zm zIoq}Y$l)yTh%9DcP>%y)#`6aw`hbFso-U3d5|>l`-Gz=Q@ECJ42IW>YO!)NQU+=lA zd8QjL!wrK^o*kY2%*}2yLyUu%&v_ZK`RIAvipVy3s3f_D>*P;?b?1NEnX)^xb8OmJlYcmTk?KY6xl6g!X)R>r2<1_o9J z21mM;mZNCM%}>cptHiBg>$O?ZKn-pn8;bMOO3D+9QW-pR6Vp?D6Vo%3vlYzr%=IjE zEfs)Pn&=vs>KYm;1R9ztWR#Q?Sn2DRmzV2hf>Z-BP_w?G3KBtRyHWR&J6 zSy{Q{Czs}?=9O4k1pt*6GZ-%azgr(o4cJaAtBlml^o$Y)LrWumhN4!W8gV3ZplZT1 zQ%W*GN-nQaL{j3LnVVWtS&+&Ac9niXUb_9JFh4YNd_#b$7z|A;Ee$P9&CN{% zc8InCmGC2(6P#I<%3$E+G-Z+98=zDel2mArCqr6hPAbs*`nh=}Ir-`OX^CZ-$@zK3 z`iO|pPfAKLOH49JG%>VHGc`3aO)^hTPBBR~Ha18$O*F7f(*x?z1G=y9_|y=f4Gf;H KelF{r5}E)TExH@o}!et-Mk?lXjj z1li79JQE>gD+~@4#yu6-C?GX*>VCK)4mU#cdxKmHhcDC}(=NygF zI`!d}(`0Lc0yTBh(P?}zBR+UTB0}z)%`vU5De@pf7PEzc{u1_eP5#bJ^TX_nZL5r; zd@JIuE6<-5e=F>|xpnb9>-z$}-4mJh{6*r8>Yn;iPF>ZhR+ow4)(I0Qu{A|cCGx9A zeXF{Lx9e-Z=sk{ZI1^^qF15}4!7*WHmdK{@+GF=+;XBgGkZ;N0t`05p&lcIIJ1%0s z?!Mg@WNV6B9;0Mh^?8P_VqwR^BGz~~*mM>xDJhT~leCXT)Q5}HeLS~YKCkJv-tB~f zk_}sQ22WCMi<|Qe1K*;gvUH&F>ADL-_a0T=`TIVrY;1MK&%`Waza|`~Oh7dA!-Ep!`}s#A8PP=~t^g8$GtS z|8bVV$u_??Yr}$eaoNy=mS%ytrc|%^qa&=s z)V+_QFMG2~HW}NCO%1-OTfJk7TOS_UX?!#`(nIShEckTSWYnpqBa<%n)#DjCx*7-k zvbbS_NK7Hclw5g&5>LpBLS+#tc&AIKOs*G)OJjUQp>QdbEBjq5{w2`p6lztVYi4+Er>O}~nG6``Q7SAP< zlarH4YBP-oPLp&Au@ACFa6{y1c9g^=X=Ge(piZ8oQED+RHxx$`5w!y9$nP=lYI3=8 zN_A`;hNv8`xhNqMXB?*Z{LQRaE3h~-(((N=8ys<(f{4@_C6*GeMDKP*j@QQeRY!!p z=OdEf6r$2O94ec^VlhH5+MECRxl???)u~EE2?+T51aBB$ikPyrPAo(!^)@B``ecn3 z+op>ptEAi2a-BAj{LjIVWika*Dx*v3RE~zB~oN5Dbzg-97;?fGD6^G)a@; ze0TP?q=wMDo3nTJ%sF%a%^G@JEz@_?&Q{IV&8#hm5)-@{Gv!XV0_p$P$1k@{XbQ)| zz3?tfYY@YcLo;&{*Vs^dCwvL+7Yl%k92&IQN6Y_{5WcG&_uF0fUMD~dN6n~%HrH5F zOwGvONc*to{&L_xI0_KMk(<}RgZD(3B%b{9zWY$VN}lSlhGIB!^BR-d%eut)=p%W% z?yu+WpN|3JN*p;f%q8Z5ca-{Oj*OFj(SMJ9_7JBU%Ar9U^BBoLO)+c5d>QkH`dxhB z$e}?S{@7pQ<^84OFI~UV{VP2`rRO)_gQf0IzKA*p)cN=QeQTQaSIn*(xzgV)T0D4v E0J`IxjQ{`u literal 0 HcmV?d00001 diff --git a/assets/static/img/icons/msapplication-icon-144x144.png b/assets/static/img/icons/msapplication-icon-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..a7db463fe7640580ee18526375c15995b5338abd GIT binary patch literal 3515 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 NAZxrGuFT9U`5!5klC}T< literal 0 HcmV?d00001 diff --git a/assets/static/img/icons/mstile-150x150.png b/assets/static/img/icons/mstile-150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..8515f250ea71c08ab0d7a74abbd58ce4cf5c6760 GIT binary patch literal 3668 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 literal 0 HcmV?d00001 diff --git a/assets/static/manifest.json b/assets/static/manifest.json new file mode 100644 index 00000000..9d5b3577 --- /dev/null +++ b/assets/static/manifest.json @@ -0,0 +1,20 @@ +{ + "name": "File Browser", + "short_name": "File Browser", + "icons": [ + { + "src": "{{ .BaseURL }}/static/img/icons/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "{{ .BaseURL }}/static/img/icons/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "start_url": "{{ .BaseURL }}/", + "display": "standalone", + "background_color": "#ffffff", + "theme_color": "#2979ff" +} diff --git a/assets/static/share/404.html b/assets/static/share/404.html new file mode 100644 index 00000000..53359493 --- /dev/null +++ b/assets/static/share/404.html @@ -0,0 +1,50 @@ + + + + + + + File Browser + + + + + + + + + + + + + + + + +

404 Not Found

+ + diff --git a/assets/static/share/index.html b/assets/static/share/index.html new file mode 100644 index 00000000..b1f410cb --- /dev/null +++ b/assets/static/share/index.html @@ -0,0 +1,86 @@ + + + + + + + {{ .File.Name }} + + + + + + + + + + + + + + + + + +
Download {{ if .File.IsDir }}Folder{{ else }}File{{ end }}
+
+ {{ if .File.IsDir -}} + + + + + {{ else -}} + + + + + {{ end -}} +

{{ .File.Name }}

+
+
+ + diff --git a/package.json b/package.json new file mode 100644 index 00000000..ca9bee2a --- /dev/null +++ b/package.json @@ -0,0 +1,88 @@ +{ + "name": "filebrowser-vue", + "version": "1.0.0", + "author": "File Browser contributors", + "contributors": [ + "Henrique Dias " + ], + "scripts": { + "dev": "node ./assets/build/dev.js", + "build": "node ./assets/build/build.js", + "lint": "eslint --ext .js,.vue assets/src" + }, + "dependencies": { + "clipboard": "^1.7.1", + "codemirror": "^5.31.0", + "filesize": "^3.5.11", + "js-base64": "^2.4.0", + "moment": "^2.19.2", + "normalize.css": "^7.0.0", + "noty": "^3.2.0-beta", + "vue": "^2.5.8", + "vue-i18n": "^7.3.4", + "vue-router": "^3.0.1", + "vuex": "^3.0.1" + }, + "devDependencies": { + "autoprefixer": "^7.1.6", + "babel-core": "^6.26.0", + "babel-eslint": "^8.0.2", + "babel-loader": "^7.1.2", + "babel-plugin-transform-runtime": "^6.23.0", + "babel-preset-env": "^1.6.1", + "babel-preset-stage-2": "^6.24.1", + "babel-register": "^6.26.0", + "chalk": "^2.3.0", + "connect-history-api-fallback": "^1.5.0", + "copy-webpack-plugin": "^4.2.1", + "css-loader": "^0.28.7", + "eslint": "^4.15.0", + "eslint-config-standard": "^11.0.0-beta.0", + "eslint-friendly-formatter": "^3.0.0", + "eslint-loader": "^1.9.0", + "eslint-plugin-html": "^4.0.0", + "eslint-plugin-import": "^2.8.0", + "eslint-plugin-node": "^5.2.1", + "eslint-plugin-promise": "^3.6.0", + "eslint-plugin-standard": "^3.0.1", + "eventsource-polyfill": "^0.9.6", + "express": "^4.16.2", + "extract-text-webpack-plugin": "^3.0.2", + "file-loader": "^1.1.5", + "friendly-errors-webpack-plugin": "^1.6.1", + "html-webpack-plugin": "^2.30.1", + "http-proxy-middleware": "^0.17.4", + "opn": "^5.1.0", + "optimize-css-assets-webpack-plugin": "^3.2.0", + "ora": "^1.3.0", + "rimraf": "^2.6.2", + "semver": "^5.4.1", + "shelljs": "^0.8.1", + "sw-precache-webpack-plugin": "^0.11.4", + "uglify-js": "^3.1.10", + "url-loader": "^0.6.2", + "vue-loader": "^14.0.3", + "vue-style-loader": "^3.0.3", + "vue-template-compiler": "^2.5.8", + "webpack": "^3.8.1", + "webpack-bundle-analyzer": "^2.9.1", + "webpack-dev-middleware": "^2.0.4", + "webpack-hot-middleware": "^2.20.0", + "webpack-merge": "^4.1.1", + "yml-loader": "^2.1.0" + }, + "engines": { + "node": ">= 4.0.0", + "npm": ">= 3.0.0" + }, + "postcss": { + "plugins": { + "autoprefixer": {} + } + }, + "browserslist": [ + "> 1%", + "last 2 versions", + "not ie <= 8" + ] +} From 1f4d0cc3cdbfd350f000d3792929df49b93ddcbb Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Thu, 1 Feb 2018 12:40:20 +0000 Subject: [PATCH 0002/1487] docs: update --- CONTRIBUTING.md | 10 +++++----- assets/index.html | 5 +++++ assets/src/components/Sidebar.vue | 2 +- assets/src/main.js | 2 +- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2b7e1bab..b238a4ba 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,13 +2,13 @@ If you want to contribute or want to build the code from source, you will need to have the most recent version of Go and, if you want to change the static assets (JS, CSS, ...), Node.js installed on your computer. To start developing, you just need to do the following: -1. `go get github.com/hacdias/filemanager/cmd/filemanager` -2. `cd $GOPATH/src/github.com/hacdias/filemanager` +1. `go get github.com/filebrowser/filebrowser/cmd/filebrowser` +2. `cd $GOPATH/src/github.com/filebrowser/filebrowser` 3. `npm install` 4. `npm run dev` - regenerates the static assets automatically -5. `go install github.com/hacdias/filemanager/cmd/filemanager` -6. Execute `$GOPATH/bin/filemanager` +5. `go install github.com/filebrowser/filebrowser/cmd/filebrowser` +6. Execute `$GOPATH/bin/filebrowser` The steps 3 and 4 are only required **if you want to develop the front-end**. Otherwise, you can ignore them. Before pulling, if you made any change on assets folder, you must run the `build.sh` script on the root of this repository. -If you are using this as a Caddy plugin, you should use its [official instructions for plugins](https://github.com/mholt/caddy/wiki/Extending-Caddy#2-plug-in-your-plugin) and import `github.com/hacdias/filemanager/caddy/filemanager`. +If you are using this as a Caddy plugin, you should use its [official instructions for plugins](https://github.com/mholt/caddy/wiki/Extending-Caddy#2-plug-in-your-plugin) and import `github.com/filebrowser/caddy/filemanager`. diff --git a/assets/index.html b/assets/index.html index 8abc3097..d2746211 100644 --- a/assets/index.html +++ b/assets/index.html @@ -4,15 +4,19 @@ + + + File Browser + @@ -22,6 +26,7 @@ + diff --git a/assets/src/components/Sidebar.vue b/assets/src/components/Sidebar.vue index 6c18d1c3..0d754952 100644 --- a/assets/src/components/Sidebar.vue +++ b/assets/src/components/Sidebar.vue @@ -59,7 +59,7 @@

- File Browser v{{ version }} + File Browser v{{ version }} {{ $t('sidebar.help') }}

diff --git a/assets/src/main.js b/assets/src/main.js index b071129c..b0053253 100644 --- a/assets/src/main.js +++ b/assets/src/main.js @@ -32,7 +32,7 @@ Vue.prototype.$showError = function (error) { timeout: null, buttons: [ Noty.button(i18n.t('buttons.reportIssue'), '', function () { - window.open('https://github.com/hacdias/filemanager/issues/new') + window.open('https://github.com/filebrowser/filebrowser/issues/new') }), Noty.button(i18n.t('buttons.close'), '', function () { n.close() From 0595638228022aa16c92407e2f1a12ab620a5654 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Thu, 1 Feb 2018 14:43:54 +0000 Subject: [PATCH 0003/1487] chore: add circle --- .circleci/config.yml | 22 ++ .gitignore | 70 +++++- .travis.yml | 22 -- CODE_OF_CONDUCT.md | 46 ---- CONTRIBUTING.md | 14 -- LICENSE | 202 ++++++++++++++++++ LICENSE.md | 201 ----------------- assets/build/check-versions.js | 48 ----- {assets/build => build}/build.js | 2 - {assets/build => build}/config.js | 0 {assets/build => build}/dev.js | 2 - {assets/build => build}/service-worker-dev.js | 0 .../build => build}/service-worker-prod.js | 0 {assets/build => build}/utils.js | 0 {assets/build => build}/vue-loader.conf.js | 0 {assets/build => build}/webpack.base.conf.js | 2 +- {assets/build => build}/webpack.dev.conf.js | 2 +- {assets/build => build}/webpack.prod.conf.js | 2 +- assets/index.html => index.html | 0 package.json | 12 +- {assets/src => src}/App.vue | 0 .../assets/fonts/material/icons.woff2 | Bin .../fonts/roboto/medium-cyrillic-ext.woff2 | Bin .../assets/fonts/roboto/medium-cyrillic.woff2 | Bin .../fonts/roboto/medium-greek-ext.woff2 | Bin .../assets/fonts/roboto/medium-greek.woff2 | Bin .../fonts/roboto/medium-latin-ext.woff2 | Bin .../assets/fonts/roboto/medium-latin.woff2 | Bin .../fonts/roboto/medium-vietnamese.woff2 | Bin .../fonts/roboto/normal-cyrillic-ext.woff2 | Bin .../assets/fonts/roboto/normal-cyrillic.woff2 | Bin .../fonts/roboto/normal-greek-ext.woff2 | Bin .../assets/fonts/roboto/normal-greek.woff2 | Bin .../fonts/roboto/normal-latin-ext.woff2 | Bin .../assets/fonts/roboto/normal-latin.woff2 | Bin .../fonts/roboto/normal-vietnamese.woff2 | Bin {assets/src => src}/assets/logo.svg | 0 {assets/src => src}/components/Header.vue | 0 {assets/src => src}/components/Languages.vue | 0 {assets/src => src}/components/Search.vue | 0 {assets/src => src}/components/Sidebar.vue | 0 .../src => src}/components/buttons/Copy.vue | 0 .../src => src}/components/buttons/Delete.vue | 0 .../components/buttons/Download.vue | 0 .../src => src}/components/buttons/Info.vue | 0 .../src => src}/components/buttons/Move.vue | 0 .../src => src}/components/buttons/Rename.vue | 0 .../components/buttons/Schedule.vue | 0 .../src => src}/components/buttons/Share.vue | 0 .../components/buttons/SwitchView.vue | 0 .../src => src}/components/buttons/Upload.vue | 0 .../src => src}/components/files/Editor.vue | 0 .../src => src}/components/files/Listing.vue | 0 .../components/files/ListingItem.vue | 0 .../src => src}/components/files/Preview.vue | 0 .../src => src}/components/prompts/Copy.vue | 0 .../src => src}/components/prompts/Delete.vue | 0 .../components/prompts/Download.vue | 0 .../components/prompts/FileList.vue | 0 .../src => src}/components/prompts/Help.vue | 0 .../src => src}/components/prompts/Info.vue | 0 .../src => src}/components/prompts/Move.vue | 0 .../components/prompts/NewArchetype.vue | 0 .../src => src}/components/prompts/NewDir.vue | 0 .../components/prompts/NewFile.vue | 0 .../components/prompts/Prompts.vue | 0 .../src => src}/components/prompts/Rename.vue | 0 .../components/prompts/Replace.vue | 0 .../components/prompts/Schedule.vue | 0 .../src => src}/components/prompts/Share.vue | 0 {assets/src => src}/css/base.css | 0 {assets/src => src}/css/dashboard.css | 0 {assets/src => src}/css/editor.css | 0 {assets/src => src}/css/fonts.css | 0 {assets/src => src}/css/header.css | 0 {assets/src => src}/css/listing.css | 0 {assets/src => src}/css/login.css | 0 {assets/src => src}/css/mobile.css | 0 {assets/src => src}/css/styles.css | 0 {assets/src => src}/i18n/en.yaml | 0 {assets/src => src}/i18n/es.yaml | 0 {assets/src => src}/i18n/fr.yaml | 0 {assets/src => src}/i18n/index.js | 0 {assets/src => src}/i18n/ja.yaml | 0 {assets/src => src}/i18n/pt.yaml | 0 {assets/src => src}/i18n/zh-cn.yaml | 0 {assets/src => src}/i18n/zh-tw.yaml | 0 {assets/src => src}/main.js | 0 {assets/src => src}/router/index.js | 0 {assets/src => src}/store/getters.js | 0 {assets/src => src}/store/index.js | 0 {assets/src => src}/store/mutations.js | 0 {assets/src => src}/utils/api.js | 0 {assets/src => src}/utils/auth.js | 0 {assets/src => src}/utils/buttons.js | 0 {assets/src => src}/utils/codemirror.js | 0 {assets/src => src}/utils/cookie.js | 0 {assets/src => src}/utils/css.js | 0 {assets/src => src}/utils/url.js | 0 {assets/src => src}/views/Files.vue | 0 {assets/src => src}/views/Layout.vue | 0 {assets/src => src}/views/Login.vue | 0 {assets/src => src}/views/Settings.vue | 0 {assets/src => src}/views/errors/403.vue | 0 {assets/src => src}/views/errors/404.vue | 0 {assets/src => src}/views/errors/500.vue | 0 {assets/src => src}/views/settings/Global.vue | 0 .../src => src}/views/settings/Profile.vue | 0 {assets/src => src}/views/settings/User.vue | 0 {assets/src => src}/views/settings/Users.vue | 0 .../img/icons/android-chrome-192x192.png | Bin .../img/icons/android-chrome-512x512.png | Bin .../img/icons/apple-touch-icon-120x120.png | Bin .../img/icons/apple-touch-icon-152x152.png | Bin .../img/icons/apple-touch-icon-180x180.png | Bin .../img/icons/apple-touch-icon-60x60.png | Bin .../img/icons/apple-touch-icon-76x76.png | Bin .../img/icons/apple-touch-icon.png | Bin .../img/icons/favicon-16x16.png | Bin .../img/icons/favicon-32x32.png | Bin .../static => static}/img/icons/favicon.ico | Bin .../img/icons/msapplication-icon-144x144.png | Bin .../img/icons/mstile-150x150.png | Bin {assets/static => static}/manifest.json | 0 {assets/static => static}/share/404.html | 0 {assets/static => static}/share/index.html | 0 126 files changed, 293 insertions(+), 354 deletions(-) create mode 100644 .circleci/config.yml delete mode 100644 .travis.yml delete mode 100644 CODE_OF_CONDUCT.md delete mode 100644 CONTRIBUTING.md create mode 100644 LICENSE delete mode 100644 LICENSE.md delete mode 100644 assets/build/check-versions.js rename {assets/build => build}/build.js (95%) rename {assets/build => build}/config.js (100%) rename {assets/build => build}/dev.js (96%) rename {assets/build => build}/service-worker-dev.js (100%) rename {assets/build => build}/service-worker-prod.js (100%) rename {assets/build => build}/utils.js (100%) rename {assets/build => build}/vue-loader.conf.js (100%) rename {assets/build => build}/webpack.base.conf.js (97%) rename {assets/build => build}/webpack.dev.conf.js (98%) rename {assets/build => build}/webpack.prod.conf.js (99%) rename assets/index.html => index.html (100%) rename {assets/src => src}/App.vue (100%) rename {assets/src => src}/assets/fonts/material/icons.woff2 (100%) rename {assets/src => src}/assets/fonts/roboto/medium-cyrillic-ext.woff2 (100%) rename {assets/src => src}/assets/fonts/roboto/medium-cyrillic.woff2 (100%) rename {assets/src => src}/assets/fonts/roboto/medium-greek-ext.woff2 (100%) rename {assets/src => src}/assets/fonts/roboto/medium-greek.woff2 (100%) rename {assets/src => src}/assets/fonts/roboto/medium-latin-ext.woff2 (100%) rename {assets/src => src}/assets/fonts/roboto/medium-latin.woff2 (100%) rename {assets/src => src}/assets/fonts/roboto/medium-vietnamese.woff2 (100%) rename {assets/src => src}/assets/fonts/roboto/normal-cyrillic-ext.woff2 (100%) rename {assets/src => src}/assets/fonts/roboto/normal-cyrillic.woff2 (100%) rename {assets/src => src}/assets/fonts/roboto/normal-greek-ext.woff2 (100%) rename {assets/src => src}/assets/fonts/roboto/normal-greek.woff2 (100%) rename {assets/src => src}/assets/fonts/roboto/normal-latin-ext.woff2 (100%) rename {assets/src => src}/assets/fonts/roboto/normal-latin.woff2 (100%) rename {assets/src => src}/assets/fonts/roboto/normal-vietnamese.woff2 (100%) rename {assets/src => src}/assets/logo.svg (100%) rename {assets/src => src}/components/Header.vue (100%) rename {assets/src => src}/components/Languages.vue (100%) rename {assets/src => src}/components/Search.vue (100%) rename {assets/src => src}/components/Sidebar.vue (100%) rename {assets/src => src}/components/buttons/Copy.vue (100%) rename {assets/src => src}/components/buttons/Delete.vue (100%) rename {assets/src => src}/components/buttons/Download.vue (100%) rename {assets/src => src}/components/buttons/Info.vue (100%) rename {assets/src => src}/components/buttons/Move.vue (100%) rename {assets/src => src}/components/buttons/Rename.vue (100%) rename {assets/src => src}/components/buttons/Schedule.vue (100%) rename {assets/src => src}/components/buttons/Share.vue (100%) rename {assets/src => src}/components/buttons/SwitchView.vue (100%) rename {assets/src => src}/components/buttons/Upload.vue (100%) rename {assets/src => src}/components/files/Editor.vue (100%) rename {assets/src => src}/components/files/Listing.vue (100%) rename {assets/src => src}/components/files/ListingItem.vue (100%) rename {assets/src => src}/components/files/Preview.vue (100%) rename {assets/src => src}/components/prompts/Copy.vue (100%) rename {assets/src => src}/components/prompts/Delete.vue (100%) rename {assets/src => src}/components/prompts/Download.vue (100%) rename {assets/src => src}/components/prompts/FileList.vue (100%) rename {assets/src => src}/components/prompts/Help.vue (100%) rename {assets/src => src}/components/prompts/Info.vue (100%) rename {assets/src => src}/components/prompts/Move.vue (100%) rename {assets/src => src}/components/prompts/NewArchetype.vue (100%) rename {assets/src => src}/components/prompts/NewDir.vue (100%) rename {assets/src => src}/components/prompts/NewFile.vue (100%) rename {assets/src => src}/components/prompts/Prompts.vue (100%) rename {assets/src => src}/components/prompts/Rename.vue (100%) rename {assets/src => src}/components/prompts/Replace.vue (100%) rename {assets/src => src}/components/prompts/Schedule.vue (100%) rename {assets/src => src}/components/prompts/Share.vue (100%) rename {assets/src => src}/css/base.css (100%) rename {assets/src => src}/css/dashboard.css (100%) rename {assets/src => src}/css/editor.css (100%) rename {assets/src => src}/css/fonts.css (100%) rename {assets/src => src}/css/header.css (100%) rename {assets/src => src}/css/listing.css (100%) rename {assets/src => src}/css/login.css (100%) rename {assets/src => src}/css/mobile.css (100%) rename {assets/src => src}/css/styles.css (100%) rename {assets/src => src}/i18n/en.yaml (100%) rename {assets/src => src}/i18n/es.yaml (100%) rename {assets/src => src}/i18n/fr.yaml (100%) rename {assets/src => src}/i18n/index.js (100%) rename {assets/src => src}/i18n/ja.yaml (100%) rename {assets/src => src}/i18n/pt.yaml (100%) rename {assets/src => src}/i18n/zh-cn.yaml (100%) rename {assets/src => src}/i18n/zh-tw.yaml (100%) rename {assets/src => src}/main.js (100%) rename {assets/src => src}/router/index.js (100%) rename {assets/src => src}/store/getters.js (100%) rename {assets/src => src}/store/index.js (100%) rename {assets/src => src}/store/mutations.js (100%) rename {assets/src => src}/utils/api.js (100%) rename {assets/src => src}/utils/auth.js (100%) rename {assets/src => src}/utils/buttons.js (100%) rename {assets/src => src}/utils/codemirror.js (100%) rename {assets/src => src}/utils/cookie.js (100%) rename {assets/src => src}/utils/css.js (100%) rename {assets/src => src}/utils/url.js (100%) rename {assets/src => src}/views/Files.vue (100%) rename {assets/src => src}/views/Layout.vue (100%) rename {assets/src => src}/views/Login.vue (100%) rename {assets/src => src}/views/Settings.vue (100%) rename {assets/src => src}/views/errors/403.vue (100%) rename {assets/src => src}/views/errors/404.vue (100%) rename {assets/src => src}/views/errors/500.vue (100%) rename {assets/src => src}/views/settings/Global.vue (100%) rename {assets/src => src}/views/settings/Profile.vue (100%) rename {assets/src => src}/views/settings/User.vue (100%) rename {assets/src => src}/views/settings/Users.vue (100%) rename {assets/static => static}/img/icons/android-chrome-192x192.png (100%) rename {assets/static => static}/img/icons/android-chrome-512x512.png (100%) rename {assets/static => static}/img/icons/apple-touch-icon-120x120.png (100%) rename {assets/static => static}/img/icons/apple-touch-icon-152x152.png (100%) rename {assets/static => static}/img/icons/apple-touch-icon-180x180.png (100%) rename {assets/static => static}/img/icons/apple-touch-icon-60x60.png (100%) rename {assets/static => static}/img/icons/apple-touch-icon-76x76.png (100%) rename {assets/static => static}/img/icons/apple-touch-icon.png (100%) rename {assets/static => static}/img/icons/favicon-16x16.png (100%) rename {assets/static => static}/img/icons/favicon-32x32.png (100%) rename {assets/static => static}/img/icons/favicon.ico (100%) rename {assets/static => static}/img/icons/msapplication-icon-144x144.png (100%) rename {assets/static => static}/img/icons/mstile-150x150.png (100%) rename {assets/static => static}/manifest.json (100%) rename {assets/static => static}/share/404.html (100%) rename {assets/static => static}/share/index.html (100%) diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 00000000..f193814a --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,22 @@ +version: 2 +jobs: + build: + docker: + - image: circleci/node:9.5 + working_directory: ~/repo + + steps: + - checkout + - restore_cache: + keys: + - v1-dependencies-{{ checksum "package.json" }} + - v1-dependencies- + - run: yarn install + - save_cache: + paths: + - node_modules + key: v1-dependencies-{{ checksum "package.json" }} + + - run: | + yarn lint + yarn build diff --git a/.gitignore b/.gitignore index c4bbc189..4908e2d5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,12 +1,66 @@ -.DS_Store -node_modules/ -*/dist/* -*.db -*.db.lock +# Logs +logs +*.log npm-debug.log* yarn-debug.log* yarn-error.log* -.idea -.vscode + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Typescript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + +# next.js build output +.next + package-lock.json -yarn.lock \ No newline at end of file +yarn.lock + +dist/ \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 7092fe76..00000000 --- a/.travis.yml +++ /dev/null @@ -1,22 +0,0 @@ -language: go - -go: 1.x - -env: - - "PATH=/home/travis/gopath/bin:$PATH" - -install: - - go get ./... - # Install gometalinter and certain linters - - go get github.com/alecthomas/gometalinter - - go get github.com/client9/misspell/cmd/misspell - - go get github.com/gordonklaus/ineffassign - - go get golang.org/x/tools/cmd/goimports - - go get github.com/tsenart/deadcode - -script: - - gometalinter --disable-all -E gofmt -E misspell -E ineffassign -E goimports -E deadcode --exclude="rice-box.go" --tests ./... - - go test ./... -timeout 30s - -after_success: - - test -n "$TRAVIS_TAG" && curl -sL https://git.io/goreleaser | bash diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md deleted file mode 100644 index f0cc78e8..00000000 --- a/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,46 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at hacdias@gmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] - -[homepage]: http://contributor-covenant.org -[version]: http://contributor-covenant.org/version/1/4/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index b238a4ba..00000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,14 +0,0 @@ -# Contributing - -If you want to contribute or want to build the code from source, you will need to have the most recent version of Go and, if you want to change the static assets (JS, CSS, ...), Node.js installed on your computer. To start developing, you just need to do the following: - -1. `go get github.com/filebrowser/filebrowser/cmd/filebrowser` -2. `cd $GOPATH/src/github.com/filebrowser/filebrowser` -3. `npm install` -4. `npm run dev` - regenerates the static assets automatically -5. `go install github.com/filebrowser/filebrowser/cmd/filebrowser` -6. Execute `$GOPATH/bin/filebrowser` - -The steps 3 and 4 are only required **if you want to develop the front-end**. Otherwise, you can ignore them. Before pulling, if you made any change on assets folder, you must run the `build.sh` script on the root of this repository. - -If you are using this as a Caddy plugin, you should use its [official instructions for plugins](https://github.com/mholt/caddy/wiki/Extending-Caddy#2-plug-in-your-plugin) and import `github.com/filebrowser/caddy/filemanager`. diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..f9aa7c03 --- /dev/null +++ b/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2017 File Browser contributors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/LICENSE.md b/LICENSE.md deleted file mode 100644 index 5e0fd33c..00000000 --- a/LICENSE.md +++ /dev/null @@ -1,201 +0,0 @@ -Apache License -Version 2.0, January 2004 -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, -and distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by -the copyright owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all -other entities that control, are controlled by, or are under common -control with that entity. For the purposes of this definition, -"control" means (i) the power, direct or indirect, to cause the -direction or management of such entity, whether by contract or -otherwise, or (ii) ownership of fifty percent (50%) or more of the -outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity -exercising permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, -including but not limited to software source code, documentation -source, and configuration files. - -"Object" form shall mean any form resulting from mechanical -transformation or translation of a Source form, including but -not limited to compiled object code, generated documentation, -and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or -Object form, made available under the License, as indicated by a -copyright notice that is included in or attached to the work -(an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object -form, that is based on (or derived from) the Work and for which the -editorial revisions, annotations, elaborations, or other modifications -represent, as a whole, an original work of authorship. For the purposes -of this License, Derivative Works shall not include works that remain -separable from, or merely link (or bind by name) to the interfaces of, -the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including -the original version of the Work and any modifications or additions -to that Work or Derivative Works thereof, that is intentionally -submitted to Licensor for inclusion in the Work by the copyright owner -or by an individual or Legal Entity authorized to submit on behalf of -the copyright owner. For the purposes of this definition, "submitted" -means any form of electronic, verbal, or written communication sent -to the Licensor or its representatives, including but not limited to -communication on electronic mailing lists, source code control systems, -and issue tracking systems that are managed by, or on behalf of, the -Licensor for the purpose of discussing and improving the Work, but -excluding communication that is conspicuously marked or otherwise -designated in writing by the copyright owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity -on behalf of whom a Contribution has been received by Licensor and -subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of -this License, each Contributor hereby grants to You a perpetual, -worldwide, non-exclusive, no-charge, royalty-free, irrevocable -copyright license to reproduce, prepare Derivative Works of, -publicly display, publicly perform, sublicense, and distribute the -Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of -this License, each Contributor hereby grants to You a perpetual, -worldwide, non-exclusive, no-charge, royalty-free, irrevocable -(except as stated in this section) patent license to make, have made, -use, offer to sell, sell, import, and otherwise transfer the Work, -where such license applies only to those patent claims licensable -by such Contributor that are necessarily infringed by their -Contribution(s) alone or by combination of their Contribution(s) -with the Work to which such Contribution(s) was submitted. If You -institute patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Work -or a Contribution incorporated within the Work constitutes direct -or contributory patent infringement, then any patent licenses -granted to You under this License for that Work shall terminate -as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the -Work or Derivative Works thereof in any medium, with or without -modifications, and in Source or Object form, provided that You -meet the following conditions: - -(a) You must give any other recipients of the Work or -Derivative Works a copy of this License; and - -(b) You must cause any modified files to carry prominent notices -stating that You changed the files; and - -(c) You must retain, in the Source form of any Derivative Works -that You distribute, all copyright, patent, trademark, and -attribution notices from the Source form of the Work, -excluding those notices that do not pertain to any part of -the Derivative Works; and - -(d) If the Work includes a "NOTICE" text file as part of its -distribution, then any Derivative Works that You distribute must -include a readable copy of the attribution notices contained -within such NOTICE file, excluding those notices that do not -pertain to any part of the Derivative Works, in at least one -of the following places: within a NOTICE text file distributed -as part of the Derivative Works; within the Source form or -documentation, if provided along with the Derivative Works; or, -within a display generated by the Derivative Works, if and -wherever such third-party notices normally appear. The contents -of the NOTICE file are for informational purposes only and -do not modify the License. You may add Your own attribution -notices within Derivative Works that You distribute, alongside -or as an addendum to the NOTICE text from the Work, provided -that such additional attribution notices cannot be construed -as modifying the License. - -You may add Your own copyright statement to Your modifications and -may provide additional or different license terms and conditions -for use, reproduction, or distribution of Your modifications, or -for any such Derivative Works as a whole, provided Your use, -reproduction, and distribution of the Work otherwise complies with -the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, -any Contribution intentionally submitted for inclusion in the Work -by You to the Licensor shall be under the terms and conditions of -this License, without any additional terms or conditions. -Notwithstanding the above, nothing herein shall supersede or modify -the terms of any separate license agreement you may have executed -with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade -names, trademarks, service marks, or product names of the Licensor, -except as required for reasonable and customary use in describing the -origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or -agreed to in writing, Licensor provides the Work (and each -Contributor provides its Contributions) on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -implied, including, without limitation, any warranties or conditions -of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A -PARTICULAR PURPOSE. You are solely responsible for determining the -appropriateness of using or redistributing the Work and assume any -risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, -whether in tort (including negligence), contract, or otherwise, -unless required by applicable law (such as deliberate and grossly -negligent acts) or agreed to in writing, shall any Contributor be -liable to You for damages, including any direct, indirect, special, -incidental, or consequential damages of any character arising as a -result of this License or out of the use or inability to use the -Work (including but not limited to damages for loss of goodwill, -work stoppage, computer failure or malfunction, or any and all -other commercial damages or losses), even if such Contributor -has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing -the Work or Derivative Works thereof, You may choose to offer, -and charge a fee for, acceptance of support, warranty, indemnity, -or other liability obligations and/or rights consistent with this -License. However, in accepting such obligations, You may act only -on Your own behalf and on Your sole responsibility, not on behalf -of any other Contributor, and only if You agree to indemnify, -defend, and hold each Contributor harmless for any liability -incurred by, or claims asserted against, such Contributor by reason -of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - -To apply the Apache License to your work, attach the following -boilerplate notice, with the fields enclosed by brackets "{}" -replaced with your own identifying information. (Don't include -the brackets!) The text should be enclosed in the appropriate -comment syntax for the file format. We also recommend that a -file or class name and description of purpose be included on the -same "printed page" as the copyright notice for easier -identification within third-party archives. - -Copyright {yyyy} {name of copyright owner} - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/assets/build/check-versions.js b/assets/build/check-versions.js deleted file mode 100644 index f9133e24..00000000 --- a/assets/build/check-versions.js +++ /dev/null @@ -1,48 +0,0 @@ -var chalk = require('chalk') -var semver = require('semver') -var packageConfig = require('../../package.json') -var shell = require('shelljs') -function exec (cmd) { - return require('child_process').execSync(cmd).toString().trim() -} - -var versionRequirements = [ - { - name: 'node', - currentVersion: semver.clean(process.version), - versionRequirement: packageConfig.engines.node - } -] - -if (shell.which('npm')) { - versionRequirements.push({ - name: 'npm', - currentVersion: exec('npm --version'), - versionRequirement: packageConfig.engines.npm - }) -} - -module.exports = function () { - var warnings = [] - for (var i = 0; i < versionRequirements.length; i++) { - var mod = versionRequirements[i] - if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) { - warnings.push(mod.name + ': ' + - chalk.red(mod.currentVersion) + ' should be ' + - chalk.green(mod.versionRequirement) - ) - } - } - - if (warnings.length) { - console.log('') - console.log(chalk.yellow('To use this template, you must update following to modules:')) - console.log() - for (var i = 0; i < warnings.length; i++) { - var warning = warnings[i] - console.log(' ' + warning) - } - console.log() - process.exit(1) - } -} diff --git a/assets/build/build.js b/build/build.js similarity index 95% rename from assets/build/build.js rename to build/build.js index c7c0fbdb..46f904d6 100644 --- a/assets/build/build.js +++ b/build/build.js @@ -1,5 +1,3 @@ -require('./check-versions')() - process.env.NODE_ENV = 'production' var ora = require('ora') diff --git a/assets/build/config.js b/build/config.js similarity index 100% rename from assets/build/config.js rename to build/config.js diff --git a/assets/build/dev.js b/build/dev.js similarity index 96% rename from assets/build/dev.js rename to build/dev.js index 9b42a437..12bc7989 100644 --- a/assets/build/dev.js +++ b/build/dev.js @@ -1,5 +1,3 @@ -require('./check-versions')() - process.env.NODE_ENV = 'development' var rm = require('rimraf') diff --git a/assets/build/service-worker-dev.js b/build/service-worker-dev.js similarity index 100% rename from assets/build/service-worker-dev.js rename to build/service-worker-dev.js diff --git a/assets/build/service-worker-prod.js b/build/service-worker-prod.js similarity index 100% rename from assets/build/service-worker-prod.js rename to build/service-worker-prod.js diff --git a/assets/build/utils.js b/build/utils.js similarity index 100% rename from assets/build/utils.js rename to build/utils.js diff --git a/assets/build/vue-loader.conf.js b/build/vue-loader.conf.js similarity index 100% rename from assets/build/vue-loader.conf.js rename to build/vue-loader.conf.js diff --git a/assets/build/webpack.base.conf.js b/build/webpack.base.conf.js similarity index 97% rename from assets/build/webpack.base.conf.js rename to build/webpack.base.conf.js index f8188022..79b5663b 100644 --- a/assets/build/webpack.base.conf.js +++ b/build/webpack.base.conf.js @@ -9,7 +9,7 @@ function resolve (dir) { module.exports = { entry: { - app: './assets/src/main.js' + app: './src/main.js' }, output: { path: config.assetsRoot, diff --git a/assets/build/webpack.dev.conf.js b/build/webpack.dev.conf.js similarity index 98% rename from assets/build/webpack.dev.conf.js rename to build/webpack.dev.conf.js index dd75ac4e..6497edea 100644 --- a/assets/build/webpack.dev.conf.js +++ b/build/webpack.dev.conf.js @@ -39,7 +39,7 @@ module.exports = merge(baseWebpackConfig, { // see https://github.com/ampedandwired/html-webpack-plugin new HtmlWebpackPlugin({ filename: config.index, - template: 'assets/index.html', + template: './index.html', inject: true, // necessary to consistently work with multiple chunks via CommonsChunkPlugin chunksSortMode: 'dependency', diff --git a/assets/build/webpack.prod.conf.js b/build/webpack.prod.conf.js similarity index 99% rename from assets/build/webpack.prod.conf.js rename to build/webpack.prod.conf.js index bf992924..7b4b21c4 100644 --- a/assets/build/webpack.prod.conf.js +++ b/build/webpack.prod.conf.js @@ -72,7 +72,7 @@ var webpackConfig = merge(baseWebpackConfig, { // see https://github.com/ampedandwired/html-webpack-plugin new HtmlWebpackPlugin({ filename: config.index, - template: 'assets/index.html', + template: './index.html', inject: true, minify: { removeComments: true, diff --git a/assets/index.html b/index.html similarity index 100% rename from assets/index.html rename to index.html diff --git a/package.json b/package.json index ca9bee2a..3620934f 100644 --- a/package.json +++ b/package.json @@ -1,14 +1,14 @@ { - "name": "filebrowser-vue", + "name": "filebrowser-frontend", "version": "1.0.0", "author": "File Browser contributors", "contributors": [ "Henrique Dias " ], "scripts": { - "dev": "node ./assets/build/dev.js", - "build": "node ./assets/build/build.js", - "lint": "eslint --ext .js,.vue assets/src" + "dev": "node ./build/dev.js", + "build": "node ./build/build.js", + "lint": "eslint --ext .js,.vue src" }, "dependencies": { "clipboard": "^1.7.1", @@ -71,10 +71,6 @@ "webpack-merge": "^4.1.1", "yml-loader": "^2.1.0" }, - "engines": { - "node": ">= 4.0.0", - "npm": ">= 3.0.0" - }, "postcss": { "plugins": { "autoprefixer": {} diff --git a/assets/src/App.vue b/src/App.vue similarity index 100% rename from assets/src/App.vue rename to src/App.vue diff --git a/assets/src/assets/fonts/material/icons.woff2 b/src/assets/fonts/material/icons.woff2 similarity index 100% rename from assets/src/assets/fonts/material/icons.woff2 rename to src/assets/fonts/material/icons.woff2 diff --git a/assets/src/assets/fonts/roboto/medium-cyrillic-ext.woff2 b/src/assets/fonts/roboto/medium-cyrillic-ext.woff2 similarity index 100% rename from assets/src/assets/fonts/roboto/medium-cyrillic-ext.woff2 rename to src/assets/fonts/roboto/medium-cyrillic-ext.woff2 diff --git a/assets/src/assets/fonts/roboto/medium-cyrillic.woff2 b/src/assets/fonts/roboto/medium-cyrillic.woff2 similarity index 100% rename from assets/src/assets/fonts/roboto/medium-cyrillic.woff2 rename to src/assets/fonts/roboto/medium-cyrillic.woff2 diff --git a/assets/src/assets/fonts/roboto/medium-greek-ext.woff2 b/src/assets/fonts/roboto/medium-greek-ext.woff2 similarity index 100% rename from assets/src/assets/fonts/roboto/medium-greek-ext.woff2 rename to src/assets/fonts/roboto/medium-greek-ext.woff2 diff --git a/assets/src/assets/fonts/roboto/medium-greek.woff2 b/src/assets/fonts/roboto/medium-greek.woff2 similarity index 100% rename from assets/src/assets/fonts/roboto/medium-greek.woff2 rename to src/assets/fonts/roboto/medium-greek.woff2 diff --git a/assets/src/assets/fonts/roboto/medium-latin-ext.woff2 b/src/assets/fonts/roboto/medium-latin-ext.woff2 similarity index 100% rename from assets/src/assets/fonts/roboto/medium-latin-ext.woff2 rename to src/assets/fonts/roboto/medium-latin-ext.woff2 diff --git a/assets/src/assets/fonts/roboto/medium-latin.woff2 b/src/assets/fonts/roboto/medium-latin.woff2 similarity index 100% rename from assets/src/assets/fonts/roboto/medium-latin.woff2 rename to src/assets/fonts/roboto/medium-latin.woff2 diff --git a/assets/src/assets/fonts/roboto/medium-vietnamese.woff2 b/src/assets/fonts/roboto/medium-vietnamese.woff2 similarity index 100% rename from assets/src/assets/fonts/roboto/medium-vietnamese.woff2 rename to src/assets/fonts/roboto/medium-vietnamese.woff2 diff --git a/assets/src/assets/fonts/roboto/normal-cyrillic-ext.woff2 b/src/assets/fonts/roboto/normal-cyrillic-ext.woff2 similarity index 100% rename from assets/src/assets/fonts/roboto/normal-cyrillic-ext.woff2 rename to src/assets/fonts/roboto/normal-cyrillic-ext.woff2 diff --git a/assets/src/assets/fonts/roboto/normal-cyrillic.woff2 b/src/assets/fonts/roboto/normal-cyrillic.woff2 similarity index 100% rename from assets/src/assets/fonts/roboto/normal-cyrillic.woff2 rename to src/assets/fonts/roboto/normal-cyrillic.woff2 diff --git a/assets/src/assets/fonts/roboto/normal-greek-ext.woff2 b/src/assets/fonts/roboto/normal-greek-ext.woff2 similarity index 100% rename from assets/src/assets/fonts/roboto/normal-greek-ext.woff2 rename to src/assets/fonts/roboto/normal-greek-ext.woff2 diff --git a/assets/src/assets/fonts/roboto/normal-greek.woff2 b/src/assets/fonts/roboto/normal-greek.woff2 similarity index 100% rename from assets/src/assets/fonts/roboto/normal-greek.woff2 rename to src/assets/fonts/roboto/normal-greek.woff2 diff --git a/assets/src/assets/fonts/roboto/normal-latin-ext.woff2 b/src/assets/fonts/roboto/normal-latin-ext.woff2 similarity index 100% rename from assets/src/assets/fonts/roboto/normal-latin-ext.woff2 rename to src/assets/fonts/roboto/normal-latin-ext.woff2 diff --git a/assets/src/assets/fonts/roboto/normal-latin.woff2 b/src/assets/fonts/roboto/normal-latin.woff2 similarity index 100% rename from assets/src/assets/fonts/roboto/normal-latin.woff2 rename to src/assets/fonts/roboto/normal-latin.woff2 diff --git a/assets/src/assets/fonts/roboto/normal-vietnamese.woff2 b/src/assets/fonts/roboto/normal-vietnamese.woff2 similarity index 100% rename from assets/src/assets/fonts/roboto/normal-vietnamese.woff2 rename to src/assets/fonts/roboto/normal-vietnamese.woff2 diff --git a/assets/src/assets/logo.svg b/src/assets/logo.svg similarity index 100% rename from assets/src/assets/logo.svg rename to src/assets/logo.svg diff --git a/assets/src/components/Header.vue b/src/components/Header.vue similarity index 100% rename from assets/src/components/Header.vue rename to src/components/Header.vue diff --git a/assets/src/components/Languages.vue b/src/components/Languages.vue similarity index 100% rename from assets/src/components/Languages.vue rename to src/components/Languages.vue diff --git a/assets/src/components/Search.vue b/src/components/Search.vue similarity index 100% rename from assets/src/components/Search.vue rename to src/components/Search.vue diff --git a/assets/src/components/Sidebar.vue b/src/components/Sidebar.vue similarity index 100% rename from assets/src/components/Sidebar.vue rename to src/components/Sidebar.vue diff --git a/assets/src/components/buttons/Copy.vue b/src/components/buttons/Copy.vue similarity index 100% rename from assets/src/components/buttons/Copy.vue rename to src/components/buttons/Copy.vue diff --git a/assets/src/components/buttons/Delete.vue b/src/components/buttons/Delete.vue similarity index 100% rename from assets/src/components/buttons/Delete.vue rename to src/components/buttons/Delete.vue diff --git a/assets/src/components/buttons/Download.vue b/src/components/buttons/Download.vue similarity index 100% rename from assets/src/components/buttons/Download.vue rename to src/components/buttons/Download.vue diff --git a/assets/src/components/buttons/Info.vue b/src/components/buttons/Info.vue similarity index 100% rename from assets/src/components/buttons/Info.vue rename to src/components/buttons/Info.vue diff --git a/assets/src/components/buttons/Move.vue b/src/components/buttons/Move.vue similarity index 100% rename from assets/src/components/buttons/Move.vue rename to src/components/buttons/Move.vue diff --git a/assets/src/components/buttons/Rename.vue b/src/components/buttons/Rename.vue similarity index 100% rename from assets/src/components/buttons/Rename.vue rename to src/components/buttons/Rename.vue diff --git a/assets/src/components/buttons/Schedule.vue b/src/components/buttons/Schedule.vue similarity index 100% rename from assets/src/components/buttons/Schedule.vue rename to src/components/buttons/Schedule.vue diff --git a/assets/src/components/buttons/Share.vue b/src/components/buttons/Share.vue similarity index 100% rename from assets/src/components/buttons/Share.vue rename to src/components/buttons/Share.vue diff --git a/assets/src/components/buttons/SwitchView.vue b/src/components/buttons/SwitchView.vue similarity index 100% rename from assets/src/components/buttons/SwitchView.vue rename to src/components/buttons/SwitchView.vue diff --git a/assets/src/components/buttons/Upload.vue b/src/components/buttons/Upload.vue similarity index 100% rename from assets/src/components/buttons/Upload.vue rename to src/components/buttons/Upload.vue diff --git a/assets/src/components/files/Editor.vue b/src/components/files/Editor.vue similarity index 100% rename from assets/src/components/files/Editor.vue rename to src/components/files/Editor.vue diff --git a/assets/src/components/files/Listing.vue b/src/components/files/Listing.vue similarity index 100% rename from assets/src/components/files/Listing.vue rename to src/components/files/Listing.vue diff --git a/assets/src/components/files/ListingItem.vue b/src/components/files/ListingItem.vue similarity index 100% rename from assets/src/components/files/ListingItem.vue rename to src/components/files/ListingItem.vue diff --git a/assets/src/components/files/Preview.vue b/src/components/files/Preview.vue similarity index 100% rename from assets/src/components/files/Preview.vue rename to src/components/files/Preview.vue diff --git a/assets/src/components/prompts/Copy.vue b/src/components/prompts/Copy.vue similarity index 100% rename from assets/src/components/prompts/Copy.vue rename to src/components/prompts/Copy.vue diff --git a/assets/src/components/prompts/Delete.vue b/src/components/prompts/Delete.vue similarity index 100% rename from assets/src/components/prompts/Delete.vue rename to src/components/prompts/Delete.vue diff --git a/assets/src/components/prompts/Download.vue b/src/components/prompts/Download.vue similarity index 100% rename from assets/src/components/prompts/Download.vue rename to src/components/prompts/Download.vue diff --git a/assets/src/components/prompts/FileList.vue b/src/components/prompts/FileList.vue similarity index 100% rename from assets/src/components/prompts/FileList.vue rename to src/components/prompts/FileList.vue diff --git a/assets/src/components/prompts/Help.vue b/src/components/prompts/Help.vue similarity index 100% rename from assets/src/components/prompts/Help.vue rename to src/components/prompts/Help.vue diff --git a/assets/src/components/prompts/Info.vue b/src/components/prompts/Info.vue similarity index 100% rename from assets/src/components/prompts/Info.vue rename to src/components/prompts/Info.vue diff --git a/assets/src/components/prompts/Move.vue b/src/components/prompts/Move.vue similarity index 100% rename from assets/src/components/prompts/Move.vue rename to src/components/prompts/Move.vue diff --git a/assets/src/components/prompts/NewArchetype.vue b/src/components/prompts/NewArchetype.vue similarity index 100% rename from assets/src/components/prompts/NewArchetype.vue rename to src/components/prompts/NewArchetype.vue diff --git a/assets/src/components/prompts/NewDir.vue b/src/components/prompts/NewDir.vue similarity index 100% rename from assets/src/components/prompts/NewDir.vue rename to src/components/prompts/NewDir.vue diff --git a/assets/src/components/prompts/NewFile.vue b/src/components/prompts/NewFile.vue similarity index 100% rename from assets/src/components/prompts/NewFile.vue rename to src/components/prompts/NewFile.vue diff --git a/assets/src/components/prompts/Prompts.vue b/src/components/prompts/Prompts.vue similarity index 100% rename from assets/src/components/prompts/Prompts.vue rename to src/components/prompts/Prompts.vue diff --git a/assets/src/components/prompts/Rename.vue b/src/components/prompts/Rename.vue similarity index 100% rename from assets/src/components/prompts/Rename.vue rename to src/components/prompts/Rename.vue diff --git a/assets/src/components/prompts/Replace.vue b/src/components/prompts/Replace.vue similarity index 100% rename from assets/src/components/prompts/Replace.vue rename to src/components/prompts/Replace.vue diff --git a/assets/src/components/prompts/Schedule.vue b/src/components/prompts/Schedule.vue similarity index 100% rename from assets/src/components/prompts/Schedule.vue rename to src/components/prompts/Schedule.vue diff --git a/assets/src/components/prompts/Share.vue b/src/components/prompts/Share.vue similarity index 100% rename from assets/src/components/prompts/Share.vue rename to src/components/prompts/Share.vue diff --git a/assets/src/css/base.css b/src/css/base.css similarity index 100% rename from assets/src/css/base.css rename to src/css/base.css diff --git a/assets/src/css/dashboard.css b/src/css/dashboard.css similarity index 100% rename from assets/src/css/dashboard.css rename to src/css/dashboard.css diff --git a/assets/src/css/editor.css b/src/css/editor.css similarity index 100% rename from assets/src/css/editor.css rename to src/css/editor.css diff --git a/assets/src/css/fonts.css b/src/css/fonts.css similarity index 100% rename from assets/src/css/fonts.css rename to src/css/fonts.css diff --git a/assets/src/css/header.css b/src/css/header.css similarity index 100% rename from assets/src/css/header.css rename to src/css/header.css diff --git a/assets/src/css/listing.css b/src/css/listing.css similarity index 100% rename from assets/src/css/listing.css rename to src/css/listing.css diff --git a/assets/src/css/login.css b/src/css/login.css similarity index 100% rename from assets/src/css/login.css rename to src/css/login.css diff --git a/assets/src/css/mobile.css b/src/css/mobile.css similarity index 100% rename from assets/src/css/mobile.css rename to src/css/mobile.css diff --git a/assets/src/css/styles.css b/src/css/styles.css similarity index 100% rename from assets/src/css/styles.css rename to src/css/styles.css diff --git a/assets/src/i18n/en.yaml b/src/i18n/en.yaml similarity index 100% rename from assets/src/i18n/en.yaml rename to src/i18n/en.yaml diff --git a/assets/src/i18n/es.yaml b/src/i18n/es.yaml similarity index 100% rename from assets/src/i18n/es.yaml rename to src/i18n/es.yaml diff --git a/assets/src/i18n/fr.yaml b/src/i18n/fr.yaml similarity index 100% rename from assets/src/i18n/fr.yaml rename to src/i18n/fr.yaml diff --git a/assets/src/i18n/index.js b/src/i18n/index.js similarity index 100% rename from assets/src/i18n/index.js rename to src/i18n/index.js diff --git a/assets/src/i18n/ja.yaml b/src/i18n/ja.yaml similarity index 100% rename from assets/src/i18n/ja.yaml rename to src/i18n/ja.yaml diff --git a/assets/src/i18n/pt.yaml b/src/i18n/pt.yaml similarity index 100% rename from assets/src/i18n/pt.yaml rename to src/i18n/pt.yaml diff --git a/assets/src/i18n/zh-cn.yaml b/src/i18n/zh-cn.yaml similarity index 100% rename from assets/src/i18n/zh-cn.yaml rename to src/i18n/zh-cn.yaml diff --git a/assets/src/i18n/zh-tw.yaml b/src/i18n/zh-tw.yaml similarity index 100% rename from assets/src/i18n/zh-tw.yaml rename to src/i18n/zh-tw.yaml diff --git a/assets/src/main.js b/src/main.js similarity index 100% rename from assets/src/main.js rename to src/main.js diff --git a/assets/src/router/index.js b/src/router/index.js similarity index 100% rename from assets/src/router/index.js rename to src/router/index.js diff --git a/assets/src/store/getters.js b/src/store/getters.js similarity index 100% rename from assets/src/store/getters.js rename to src/store/getters.js diff --git a/assets/src/store/index.js b/src/store/index.js similarity index 100% rename from assets/src/store/index.js rename to src/store/index.js diff --git a/assets/src/store/mutations.js b/src/store/mutations.js similarity index 100% rename from assets/src/store/mutations.js rename to src/store/mutations.js diff --git a/assets/src/utils/api.js b/src/utils/api.js similarity index 100% rename from assets/src/utils/api.js rename to src/utils/api.js diff --git a/assets/src/utils/auth.js b/src/utils/auth.js similarity index 100% rename from assets/src/utils/auth.js rename to src/utils/auth.js diff --git a/assets/src/utils/buttons.js b/src/utils/buttons.js similarity index 100% rename from assets/src/utils/buttons.js rename to src/utils/buttons.js diff --git a/assets/src/utils/codemirror.js b/src/utils/codemirror.js similarity index 100% rename from assets/src/utils/codemirror.js rename to src/utils/codemirror.js diff --git a/assets/src/utils/cookie.js b/src/utils/cookie.js similarity index 100% rename from assets/src/utils/cookie.js rename to src/utils/cookie.js diff --git a/assets/src/utils/css.js b/src/utils/css.js similarity index 100% rename from assets/src/utils/css.js rename to src/utils/css.js diff --git a/assets/src/utils/url.js b/src/utils/url.js similarity index 100% rename from assets/src/utils/url.js rename to src/utils/url.js diff --git a/assets/src/views/Files.vue b/src/views/Files.vue similarity index 100% rename from assets/src/views/Files.vue rename to src/views/Files.vue diff --git a/assets/src/views/Layout.vue b/src/views/Layout.vue similarity index 100% rename from assets/src/views/Layout.vue rename to src/views/Layout.vue diff --git a/assets/src/views/Login.vue b/src/views/Login.vue similarity index 100% rename from assets/src/views/Login.vue rename to src/views/Login.vue diff --git a/assets/src/views/Settings.vue b/src/views/Settings.vue similarity index 100% rename from assets/src/views/Settings.vue rename to src/views/Settings.vue diff --git a/assets/src/views/errors/403.vue b/src/views/errors/403.vue similarity index 100% rename from assets/src/views/errors/403.vue rename to src/views/errors/403.vue diff --git a/assets/src/views/errors/404.vue b/src/views/errors/404.vue similarity index 100% rename from assets/src/views/errors/404.vue rename to src/views/errors/404.vue diff --git a/assets/src/views/errors/500.vue b/src/views/errors/500.vue similarity index 100% rename from assets/src/views/errors/500.vue rename to src/views/errors/500.vue diff --git a/assets/src/views/settings/Global.vue b/src/views/settings/Global.vue similarity index 100% rename from assets/src/views/settings/Global.vue rename to src/views/settings/Global.vue diff --git a/assets/src/views/settings/Profile.vue b/src/views/settings/Profile.vue similarity index 100% rename from assets/src/views/settings/Profile.vue rename to src/views/settings/Profile.vue diff --git a/assets/src/views/settings/User.vue b/src/views/settings/User.vue similarity index 100% rename from assets/src/views/settings/User.vue rename to src/views/settings/User.vue diff --git a/assets/src/views/settings/Users.vue b/src/views/settings/Users.vue similarity index 100% rename from assets/src/views/settings/Users.vue rename to src/views/settings/Users.vue diff --git a/assets/static/img/icons/android-chrome-192x192.png b/static/img/icons/android-chrome-192x192.png similarity index 100% rename from assets/static/img/icons/android-chrome-192x192.png rename to static/img/icons/android-chrome-192x192.png diff --git a/assets/static/img/icons/android-chrome-512x512.png b/static/img/icons/android-chrome-512x512.png similarity index 100% rename from assets/static/img/icons/android-chrome-512x512.png rename to static/img/icons/android-chrome-512x512.png diff --git a/assets/static/img/icons/apple-touch-icon-120x120.png b/static/img/icons/apple-touch-icon-120x120.png similarity index 100% rename from assets/static/img/icons/apple-touch-icon-120x120.png rename to static/img/icons/apple-touch-icon-120x120.png diff --git a/assets/static/img/icons/apple-touch-icon-152x152.png b/static/img/icons/apple-touch-icon-152x152.png similarity index 100% rename from assets/static/img/icons/apple-touch-icon-152x152.png rename to static/img/icons/apple-touch-icon-152x152.png diff --git a/assets/static/img/icons/apple-touch-icon-180x180.png b/static/img/icons/apple-touch-icon-180x180.png similarity index 100% rename from assets/static/img/icons/apple-touch-icon-180x180.png rename to static/img/icons/apple-touch-icon-180x180.png diff --git a/assets/static/img/icons/apple-touch-icon-60x60.png b/static/img/icons/apple-touch-icon-60x60.png similarity index 100% rename from assets/static/img/icons/apple-touch-icon-60x60.png rename to static/img/icons/apple-touch-icon-60x60.png diff --git a/assets/static/img/icons/apple-touch-icon-76x76.png b/static/img/icons/apple-touch-icon-76x76.png similarity index 100% rename from assets/static/img/icons/apple-touch-icon-76x76.png rename to static/img/icons/apple-touch-icon-76x76.png diff --git a/assets/static/img/icons/apple-touch-icon.png b/static/img/icons/apple-touch-icon.png similarity index 100% rename from assets/static/img/icons/apple-touch-icon.png rename to static/img/icons/apple-touch-icon.png diff --git a/assets/static/img/icons/favicon-16x16.png b/static/img/icons/favicon-16x16.png similarity index 100% rename from assets/static/img/icons/favicon-16x16.png rename to static/img/icons/favicon-16x16.png diff --git a/assets/static/img/icons/favicon-32x32.png b/static/img/icons/favicon-32x32.png similarity index 100% rename from assets/static/img/icons/favicon-32x32.png rename to static/img/icons/favicon-32x32.png diff --git a/assets/static/img/icons/favicon.ico b/static/img/icons/favicon.ico similarity index 100% rename from assets/static/img/icons/favicon.ico rename to static/img/icons/favicon.ico diff --git a/assets/static/img/icons/msapplication-icon-144x144.png b/static/img/icons/msapplication-icon-144x144.png similarity index 100% rename from assets/static/img/icons/msapplication-icon-144x144.png rename to static/img/icons/msapplication-icon-144x144.png diff --git a/assets/static/img/icons/mstile-150x150.png b/static/img/icons/mstile-150x150.png similarity index 100% rename from assets/static/img/icons/mstile-150x150.png rename to static/img/icons/mstile-150x150.png diff --git a/assets/static/manifest.json b/static/manifest.json similarity index 100% rename from assets/static/manifest.json rename to static/manifest.json diff --git a/assets/static/share/404.html b/static/share/404.html similarity index 100% rename from assets/static/share/404.html rename to static/share/404.html diff --git a/assets/static/share/index.html b/static/share/index.html similarity index 100% rename from assets/static/share/index.html rename to static/share/index.html From 9ca02c90edb58d206b927606e5bd9c0ccc2a43ae Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Thu, 1 Feb 2018 14:46:05 +0000 Subject: [PATCH 0004/1487] chore: fix ci --- .circleci/config.yml | 2 +- LICENSE | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index f193814a..35f851f1 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 jobs: build: docker: - - image: circleci/node:9.5 + - image: circleci/node:9.4 working_directory: ~/repo steps: diff --git a/LICENSE b/LICENSE index f9aa7c03..6011a2a4 100644 --- a/LICENSE +++ b/LICENSE @@ -187,7 +187,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2017 File Browser contributors + Copyright 2018 File Browser contributors Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. From ebdf5a0601a42f9c5dc8609a65c4b49fdcefe0ce Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Thu, 1 Feb 2018 14:50:48 +0000 Subject: [PATCH 0005/1487] docs: update readme --- README.md | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 73012ccc..587e5646 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,25 @@ -# filemanager +# File Browser Front-end -TODO +[![CircleCI](https://img.shields.io/circleci/project/github/filebrowser/frontend.svg?style=flat-square)](https://circleci.com/gh/filebrowser/frontend) +[![npm](https://img.shields.io/npm/v/filebrowser-frontend.svg)]() +[![standard-readme compliant](https://img.shields.io/badge/readme%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/RichardLitt/standard-readme) + +> This is an example file with default selections. + +## Install + +``` +npm install filebrowser-frontend +``` + +## Usage + +This package is not prepared to be used by other projects than [File Browser](https://github.com/filebrowser/filebrowser) itself. + +## Contribute + +Check the [community repository](https://github.com/filebrowser/community) for more information. + +## License + +[Apache 2.0](./LICENSE) File Browser Contributors From 2d5e97e1408c5ee30a2b1e5664986c6e9176bf94 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Thu, 1 Feb 2018 14:51:07 +0000 Subject: [PATCH 0006/1487] docs: fix npm badge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 587e5646..68068b71 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # File Browser Front-end [![CircleCI](https://img.shields.io/circleci/project/github/filebrowser/frontend.svg?style=flat-square)](https://circleci.com/gh/filebrowser/frontend) -[![npm](https://img.shields.io/npm/v/filebrowser-frontend.svg)]() +[![npm](https://img.shields.io/npm/v/filebrowser-frontend.svg?style=flat-square)]() [![standard-readme compliant](https://img.shields.io/badge/readme%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/RichardLitt/standard-readme) > This is an example file with default selections. From a49fb208850b038252ed88f300251e9e17ca99d9 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Thu, 1 Feb 2018 14:52:51 +0000 Subject: [PATCH 0007/1487] chore: add npmignore --- .npmignore | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .npmignore diff --git a/.npmignore b/.npmignore new file mode 100644 index 00000000..6cf2a6ef --- /dev/null +++ b/.npmignore @@ -0,0 +1,6 @@ +.* +static/ +src/ +.circleci/ +build/ +index.html From a7e4596e97f21a5e3b232d7739436e20fc2ff2d5 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Thu, 1 Feb 2018 14:57:55 +0000 Subject: [PATCH 0008/1487] chore: bump version --- .npmignore | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.npmignore b/.npmignore index 6cf2a6ef..bbf2c8e4 100644 --- a/.npmignore +++ b/.npmignore @@ -3,4 +3,4 @@ static/ src/ .circleci/ build/ -index.html +/index.html diff --git a/package.json b/package.json index 3620934f..52425c6c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "filebrowser-frontend", - "version": "1.0.0", + "version": "1.0.1", "author": "File Browser contributors", "contributors": [ "Henrique Dias " From 8c60cc70848ebb56e023a9c7719ac122c6ccd136 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Thu, 1 Feb 2018 15:30:19 +0000 Subject: [PATCH 0009/1487] fix: notification style --- src/css/styles.css | 1 + 1 file changed, 1 insertion(+) diff --git a/src/css/styles.css b/src/css/styles.css index 69335280..a61aa317 100644 --- a/src/css/styles.css +++ b/src/css/styles.css @@ -1,5 +1,6 @@ @import "~normalize.css/normalize.css"; @import "~noty/lib/noty.css"; +@import "~noty/lib/themes/mint.css"; @import "./fonts.css"; @import "./base.css"; @import "./header.css"; From 02f6b0ec61bed7cd569222a870e49e7c3a4fd591 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Thu, 1 Feb 2018 15:30:34 +0000 Subject: [PATCH 0010/1487] chore: bump version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 52425c6c..9e399a0c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "filebrowser-frontend", - "version": "1.0.1", + "version": "1.0.2", "author": "File Browser contributors", "contributors": [ "Henrique Dias " From a78e1d504b71c940056b3ce1d8aab0f45530f901 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Sat, 3 Feb 2018 00:11:19 +0100 Subject: [PATCH 0011/1487] =?UTF-8?q?feat:=20add=20German=20translation?= =?UTF-8?q?=C2=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Languages.vue | 1 + src/i18n/de.yaml | 199 +++++++++++++++++++++++++++++++++++ src/i18n/en.yaml | 1 + src/i18n/es.yaml | 2 +- src/i18n/fr.yaml | 1 + src/i18n/index.js | 7 +- src/i18n/ja.yaml | 1 + src/i18n/zh-cn.yaml | 1 + src/i18n/zh-tw.yaml | 1 + 9 files changed, 212 insertions(+), 2 deletions(-) create mode 100644 src/i18n/de.yaml diff --git a/src/components/Languages.vue b/src/components/Languages.vue index e40a634d..3e27d6ca 100644 --- a/src/components/Languages.vue +++ b/src/components/Languages.vue @@ -7,6 +7,7 @@ + diff --git a/src/i18n/de.yaml b/src/i18n/de.yaml new file mode 100644 index 00000000..306c28af --- /dev/null +++ b/src/i18n/de.yaml @@ -0,0 +1,199 @@ +permanent: Permanent +buttons: + cancel: Abbrechen + close: Schließen + copy: Kopieren + copyFile: Kopiere Datei + copyToClipboard: In Zwischenablage kopieren + create: Neu + delete: Löschen + download: Downloaden + info: Info + more: mehr + move: Verschieben + moveFile: Verschiebe Datei + new: Neu + next: nächste + ok: OK + replace: Ersetzen + previous: vorherige + rename: umbenennen + reportIssue: Fehler melden + save: Speichern + search: Suchen + select: Auswählen + share: Teilen + publish: Veröffentlichen + selectMultiple: Mehrfachauswahl + schedule: Planung + switchView: Ansicht wechseln + toggleSidebar: Seitenleiste anzeigen + update: Update + upload: Upload + permalink: permanenten Verweis anzeigen +success: + linkCopied: Verweis wurde kopiert ! +errors: + forbidden: Sie verfügen nicht über die nötigen Rechte! + internal: Etwas ist schief gelaufen. + notFound: Dieser Ort kann nicht angezeigt werden. +files: + folders: Ordner + files: Dateien + body: Body + clear: Clear + closePreview: Vorschau schließen + home: Home + lastModified: zuletzt verändert + loading: Lade... + lonely: Hier scheint nichts zu sein... + metadata: Metadaten + multipleSelectionEnabled: Mehrfachauswahl ausgewählt + name: Name + size: Größe + sortByName: Nach Namen sortieren + sortBySize: Nach Größe sortieren + sortByLastModified: Nach Änderungsdatum sortieren +help: + click: wähle Datei oder Ordner + ctrl: + click: markiere mehrere Dateien oder Ordner + f: öffnet eine neue Suche + s: speichert eine Datei oder einen Ordner am akutellen Ort + del: löscht die ausgewählten Elemente + doubleClick: öffnet eine Datei oder einen Ordner + esc: Auswahl zurücksetzen und/oder Dialog schließen + f1: diese Informationsseite + f2: Datei umbenennen + help: Hilfe +login: + password: Passwort + submit: Login + username: Benutzername + wrongCredentials: Falsche Zugangsdaten +prompts: + copy: Kopieren + copyMessage: 'Wählen Sie einen Zielort zum Kopieren:' + currentlyNavigating: 'Aktueller Ort:' + deleteMessageMultiple: Sind Sie sicher, dass Sie {count} Datei(en) löschen möchten? + deleteMessageSingle: Sind Sie sicher, dass Sie diesen Ordner/diese Datei löschen möchten? + deleteTitle: Lösche Dateien + displayName: 'Display Name:' + download: Lade Dateien + downloadMessage: Wählen Sie ein Format zum downloaden aus. + error: Etwas ist schief gelaufen + fileInfo: Dateiinformation + filesSelected: "{count} Dateien ausgewählt." + lastModified: Zuletzt geändert + move: Verschieben + moveMessage: 'Choose new house for your file(s)/folder(s):' + newDir: Neuer Ordner + newDirMessage: Geben Sie den Namen des neuen Ordners an. + newFile: Neue Datei + newFileMessage: Geben Sie den Namen der neuen Datei an. + numberDirs: Anzahl der Ordner + numberFiles: Anzahl der Dateien + replace: Ersetzen + replaceMessage: > + Eine der Datei mit dem gleichen Namen, wie die Sie hochladen wollen, + existiert bereits. Soll die vorhandene Datei ersetzt werden ? + rename: Umbenennen + renameMessage: Fügen Sie einen Namen ein für + show: Anzeigen + size: Größe + schedule: Plan + scheduleMessage: Wählen Sie ein Datum und eine Zeit für die Veröffentlichung dieses Beitrags. + newArchetype: Erstelle neuen Beitrag auf dem Archetyp. Ihre Datei wird im Inhalteordner erstellt. +settings: + admin: Admin + administrator: Administrator + allowCommands: Befehle ausführen + allowEdit: Bearbeiten, Umbenennen und Löschen von Dateien oder Ordnern + allowNew: Erstellen neuer Dateien und Ordner + allowPublish: Veröffentlichen von neuen Beiträgen und Seiten + avoidChanges: "(leer lassen um Änderungen zu vermeiden)" + changePassword: Ändere das Passwort + commands: Befehle + commandsHelp: > + Hier können Befehle benannt werden, die bei Ereignissen ausgeführt werden. + Man schreibt einen Befehl pro Zeile. Wenn ein Befehl einen Dateinamen benötigt, wie vor oder + nach dem Speichern, ist die Umgebungsvariable "FILE" mit dem Pfad der Datei verfügbar. + commandsUpdated: Befehle aktualisiert! + customStylesheet: Individuelles Stylesheet + examples: Beispiele + globalSettings: Globale Einstellungen + language: Sprache + lockPassword: Verhindere, dass der Benutzer sein Passwort ändert + newPassword: Ihr neues Passwort. + newPasswordConfirm: Bestätigen Sie Ihr neues Passwort + newUser: Neuer Benutzer + password: Passwort + passwordUpdated: Passwort aktualisiert! + permissions: Berechtigungen + permissionsHelp: > + Sie können einem Benutzer Administratorrechte einräumen oder die Berechtigunen individuell festlegen. + Wenn Sie "Administrator" auswählen, werden alle anderen Rechte automatisch vergeben. + Die Nutzerverwaltung kann nur durch einen Administrator erfolgen. + profileSettings: Profileinstellungen + ruleExample1: > + Verhindert den Zugang zu dot Dateien (dot Files, wie .git, .gitignore) in allen Ordnern + ruleExample2: blockiert den Zugang auf Dateien mit dem Namen Caddyfile in der Wurzel/Basis des scopes. + rules: Regeln + rulesHelp1: > + Hier können Sie erlaubte und verbotene Aktionen für einen einzelnen Benutzer festlegen. + Bockierte Dateien werden nicht im Listing angezeigt und sind nicht erreichbar für den Nutzer. + Wir unterstützen reguläre Ausdrücke (Regex) und Pfade die relativ zum Benutzerordner sind. + rulesHelp2: > + Jede Regel hat seine eigene Zeile und beginnt mit dem Schlüsselwort {0} oder {1}. + Wenn ein regulärer Ausdruck verwendet wird folgt {2} mit dem Ausdruck oder dem Pfad. + scope: Scope + settingsUpdated: Einstellungen aktualisiert! + user: Benutzer + userCommands: Befehle + userCommandsHelp: > + Eine Liste, mit einem Leerzeichen als Trennung, mit den für diesen Nutzer verfügbaren Befehlen. + Example: + userCreated: Benutzer angelegt! + userDeleted: Benutzer gelöscht! + userManagement: Benutzerverwaltung + username: Nutzername + users: Nutzer + userUpdated: Benutzer aktualisiert! +sidebar: + help: Hilfe + logout: Logout + myFiles: Meine Dateien + newFile: Neue Datei + newFolder: Neuer Ordner + settings: Einstellungen + siteSettings: Seiteneinstellungen + hugoNew: Hugo Neu + preview: Vorschau +search: + images: Bilder + music: Musik + pdf: PDF + pressToExecute: Drücken Sie Enter zum Ausführen. + pressToSearch: Drücken Sie Enter zum Suchen. + search: Suche... + searchOrCommand: Suche oder führe Befehl aus... + searchOrSupportedCommand: 'Suche oder nutze eines Ihrer verfügbaren Befehle:' + type: Tippen und mit Enter bestätigen zum Suchen. + types: Typen + video: Video + writeToSearch: Hier schreiben zum Suchen +languages: + en: English + fr: Français + pt: Português + ja: 日本語 + zhCN: 中文 (简体) + zhTW: 中文 (繁體) + es: Español + de: Deutsch +time: + unit: Zeiteinheit + seconds: Sekunden + minutes: Minuten + hours: Stunden + days: Tage diff --git a/src/i18n/en.yaml b/src/i18n/en.yaml index 1b3ec70e..0e2459d8 100644 --- a/src/i18n/en.yaml +++ b/src/i18n/en.yaml @@ -193,6 +193,7 @@ languages: zhCN: 中文 (简体) zhTW: 中文 (繁體) es: Español + de: Deutsch time: unit: Time Unit seconds: Seconds diff --git a/src/i18n/es.yaml b/src/i18n/es.yaml index 78e875f1..8fbc2d45 100644 --- a/src/i18n/es.yaml +++ b/src/i18n/es.yaml @@ -193,7 +193,7 @@ languages: ja: 日本語 zhCN: 中文 (简体) zhTW: 中文 (繁體) - + de: Deutsch time: unit: Unidad seconds: Segundos diff --git a/src/i18n/fr.yaml b/src/i18n/fr.yaml index 5d94d5a7..de5c19fd 100644 --- a/src/i18n/fr.yaml +++ b/src/i18n/fr.yaml @@ -186,6 +186,7 @@ languages: zhCN: 中文 (简体) zhTW: 中文 (繁體) es: Español + de: Deutsch time: unit: Unité de temps seconds: Secondes diff --git a/src/i18n/index.js b/src/i18n/index.js index 7ce5ffe5..789a9533 100644 --- a/src/i18n/index.js +++ b/src/i18n/index.js @@ -7,6 +7,7 @@ import ja from './ja.yaml' import zhCN from './zh-cn.yaml' import zhTW from './zh-tw.yaml' import es from './es.yaml' +import de from './de.yaml' Vue.use(VueI18n) @@ -37,6 +38,9 @@ export function detectLocale () { case /^es.*/i.test(locale): locale = 'es' break + case /^de.*/i.test(locale): + locale = 'de' + break default: locale = 'en' } @@ -54,7 +58,8 @@ const i18n = new VueI18n({ 'ja': ja, 'zh-cn': zhCN, 'zh-tw': zhTW, - 'es': es + 'es': es, + 'de': de } }) diff --git a/src/i18n/ja.yaml b/src/i18n/ja.yaml index c3d7f3a5..e0348fa3 100644 --- a/src/i18n/ja.yaml +++ b/src/i18n/ja.yaml @@ -193,6 +193,7 @@ languages: zhCN: 中文 (简体) zhTW: 中文 (繁體) es: Español + de: Deutsch time: unit: 時間単位 seconds: 秒 diff --git a/src/i18n/zh-cn.yaml b/src/i18n/zh-cn.yaml index 8ffbaf7e..f28d0d80 100644 --- a/src/i18n/zh-cn.yaml +++ b/src/i18n/zh-cn.yaml @@ -191,6 +191,7 @@ languages: zhCN: 中文 (简体) zhTW: 中文 (繁體) es: Español + de: Deutsch time: unit: 时间单位 seconds: 秒 diff --git a/src/i18n/zh-tw.yaml b/src/i18n/zh-tw.yaml index 2c32caea..5b7b6e28 100644 --- a/src/i18n/zh-tw.yaml +++ b/src/i18n/zh-tw.yaml @@ -191,6 +191,7 @@ languages: zhCN: 中文 (简体) zhTW: 中文 (繁體) es: Español + de: Deutsch time: unit: 時間單位 seconds: 秒 From 441639a8d5fe8a1139f3f8cd1c3985ba79ae45ca Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 3 Feb 2018 00:13:08 +0100 Subject: [PATCH 0012/1487] chore: bump version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9e399a0c..ae6a915a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "filebrowser-frontend", - "version": "1.0.2", + "version": "1.0.3", "author": "File Browser contributors", "contributors": [ "Henrique Dias " From cb7fa99fd3199376eb2f94f31e3d621d0ba7a777 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 24 Feb 2018 08:40:46 +0000 Subject: [PATCH 0013/1487] fix: select last item on mobile --- src/css/mobile.css | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/css/mobile.css b/src/css/mobile.css index 05d4d46b..2d1e4346 100644 --- a/src/css/mobile.css +++ b/src/css/mobile.css @@ -12,6 +12,9 @@ } @media (max-width: 736px) { + body { + padding-bottom: 5em; + } #more { display: inherit } From 2ca22656d64cfaa0a9e34e0aeafb1e3eb3fac26b Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 24 Feb 2018 08:42:08 +0000 Subject: [PATCH 0014/1487] chore: bump version to 1.0.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ae6a915a..8eb823bb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "filebrowser-frontend", - "version": "1.0.3", + "version": "1.0.4", "author": "File Browser contributors", "contributors": [ "Henrique Dias " From fe829aa850b702588ccf92dbec370cedd3fd88a0 Mon Sep 17 00:00:00 2001 From: Equim Date: Sun, 25 Feb 2018 01:29:45 +0800 Subject: [PATCH 0015/1487] build: also uglify service worker --- build/service-worker-prod.js | 4 ++-- build/webpack.prod.conf.js | 12 ++++++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/build/service-worker-prod.js b/build/service-worker-prod.js index 1179ec20..8b8493e6 100644 --- a/build/service-worker-prod.js +++ b/build/service-worker-prod.js @@ -4,7 +4,7 @@ // Check to make sure service workers are supported in the current browser, // and that the current page is accessed from a secure origin. Using a // service worker from an insecure origin will trigger JS console errors. - const isLocalhost = Boolean(window.location.hostname === 'localhost' || + var isLocalhost = Boolean(window.location.hostname === 'localhost' || // [::1] is the IPv6 localhost address. window.location.hostname === '[::1]' || // 127.0.0.1/8 is considered localhost for IPv4. @@ -26,7 +26,7 @@ // i.e. whether there's an existing service worker. if (navigator.serviceWorker.controller) { // The updatefound event implies that registration.installing is set - const installingWorker = registration.installing; + var installingWorker = registration.installing; installingWorker.onstatechange = function() { switch (installingWorker.state) { diff --git a/build/webpack.prod.conf.js b/build/webpack.prod.conf.js index 7b4b21c4..9751b880 100644 --- a/build/webpack.prod.conf.js +++ b/build/webpack.prod.conf.js @@ -84,8 +84,16 @@ var webpackConfig = merge(baseWebpackConfig, { }, // necessary to consistently work with multiple chunks via CommonsChunkPlugin chunksSortMode: 'dependency', - serviceWorkerLoader: `` + serviceWorkerLoader: (() => { + let sw = fs.readFileSync(path.join(__dirname, './service-worker-prod.js'), 'utf-8') + + let result = UglifyJS.minify(sw) + if (result.error == null) { + sw = result.code + } + + return '' + })() }), // split vendor js into its own file new webpack.optimize.CommonsChunkPlugin({ From 8a764ceb67b98c7983c00f757b30c18e8a11cd88 Mon Sep 17 00:00:00 2001 From: Equim Date: Wed, 28 Feb 2018 01:08:14 +0800 Subject: [PATCH 0016/1487] feat: varied recaptcha host --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index d2746211..cd8446db 100644 --- a/index.html +++ b/index.html @@ -34,7 +34,7 @@ {{ if .ReCaptcha -}} - + {{ end }} <% for (var chunk of webpack.chunks) { From 0af5e07eed984f8c15267434c2e03b1ad8822ea4 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Tue, 27 Feb 2018 17:09:18 +0000 Subject: [PATCH 0017/1487] chore: bump version to 1.1.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8eb823bb..b68a4b3b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "filebrowser-frontend", - "version": "1.0.4", + "version": "1.1.0", "author": "File Browser contributors", "contributors": [ "Henrique Dias " From 56ec440272b2f6781ccdbd756ba9d3b01ca4acc5 Mon Sep 17 00:00:00 2001 From: Equim Date: Wed, 28 Feb 2018 13:51:52 +0800 Subject: [PATCH 0018/1487] i18n: zh: minor fix --- src/i18n/zh-cn.yaml | 2 +- src/i18n/zh-tw.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/zh-cn.yaml b/src/i18n/zh-cn.yaml index f28d0d80..52ef8682 100644 --- a/src/i18n/zh-cn.yaml +++ b/src/i18n/zh-cn.yaml @@ -35,7 +35,7 @@ success: linkCopied: 链接已复制! errors: forbidden: 你被禁止访问。 - internal: 内部出现麻烦了。 + internal: 服务器出了点问题。 notFound: 找不到文件。 files: folders: 文件夹 diff --git a/src/i18n/zh-tw.yaml b/src/i18n/zh-tw.yaml index 5b7b6e28..07607848 100644 --- a/src/i18n/zh-tw.yaml +++ b/src/i18n/zh-tw.yaml @@ -35,7 +35,7 @@ success: linkCopied: 連結已複製! errors: forbidden: 你被禁止存取。 - internal: 內部出現麻煩了。 + internal: 伺服器出了點問題。 notFound: 找不到檔案。 files: folders: 資料夾 From 325e6e0904fca138165ff86c0cd198264b20b9a3 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 10 Mar 2018 13:19:52 +0000 Subject: [PATCH 0019/1487] chore: bump version to 1.2.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b68a4b3b..dee9313b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "filebrowser-frontend", - "version": "1.1.0", + "version": "1.2.0", "author": "File Browser contributors", "contributors": [ "Henrique Dias " From 4c30b2c665801bafead37fa89712202eac6d0e26 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sun, 1 Apr 2018 11:49:59 +0100 Subject: [PATCH 0020/1487] chore: update dependencies (#6) --- package.json | 72 ++++++++++++++++++++++++++-------------------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/package.json b/package.json index dee9313b..c25453d6 100644 --- a/package.json +++ b/package.json @@ -11,64 +11,64 @@ "lint": "eslint --ext .js,.vue src" }, "dependencies": { - "clipboard": "^1.7.1", - "codemirror": "^5.31.0", - "filesize": "^3.5.11", - "js-base64": "^2.4.0", - "moment": "^2.19.2", - "normalize.css": "^7.0.0", + "clipboard": "^2.0.0", + "codemirror": "^5.36.0", + "filesize": "^3.6.1", + "js-base64": "^2.4.3", + "moment": "^2.22.0", + "normalize.css": "^8.0.0", "noty": "^3.2.0-beta", - "vue": "^2.5.8", - "vue-i18n": "^7.3.4", + "vue": "^2.5.16", + "vue-i18n": "^7.6.0", "vue-router": "^3.0.1", "vuex": "^3.0.1" }, "devDependencies": { - "autoprefixer": "^7.1.6", + "autoprefixer": "^8.2.0", "babel-core": "^6.26.0", - "babel-eslint": "^8.0.2", - "babel-loader": "^7.1.2", + "babel-eslint": "^8.2.2", + "babel-loader": "^7.1.4", "babel-plugin-transform-runtime": "^6.23.0", "babel-preset-env": "^1.6.1", "babel-preset-stage-2": "^6.24.1", "babel-register": "^6.26.0", - "chalk": "^2.3.0", + "chalk": "^2.3.2", "connect-history-api-fallback": "^1.5.0", - "copy-webpack-plugin": "^4.2.1", - "css-loader": "^0.28.7", - "eslint": "^4.15.0", - "eslint-config-standard": "^11.0.0-beta.0", - "eslint-friendly-formatter": "^3.0.0", - "eslint-loader": "^1.9.0", - "eslint-plugin-html": "^4.0.0", - "eslint-plugin-import": "^2.8.0", - "eslint-plugin-node": "^5.2.1", - "eslint-plugin-promise": "^3.6.0", + "copy-webpack-plugin": "^4.5.1", + "css-loader": "^0.28.11", + "eslint": "^4.19.1", + "eslint-config-standard": "^11.0.0", + "eslint-friendly-formatter": "^4.0.0", + "eslint-loader": "^2.0.0", + "eslint-plugin-html": "^4.0.2", + "eslint-plugin-import": "^2.10.0", + "eslint-plugin-node": "^6.0.1", + "eslint-plugin-promise": "^3.7.0", "eslint-plugin-standard": "^3.0.1", "eventsource-polyfill": "^0.9.6", - "express": "^4.16.2", + "express": "^4.16.3", "extract-text-webpack-plugin": "^3.0.2", - "file-loader": "^1.1.5", + "file-loader": "^1.1.11", "friendly-errors-webpack-plugin": "^1.6.1", "html-webpack-plugin": "^2.30.1", - "http-proxy-middleware": "^0.17.4", - "opn": "^5.1.0", + "http-proxy-middleware": "^0.18.0", + "opn": "^5.3.0", "optimize-css-assets-webpack-plugin": "^3.2.0", - "ora": "^1.3.0", + "ora": "^2.0.0", "rimraf": "^2.6.2", - "semver": "^5.4.1", + "semver": "^5.5.0", "shelljs": "^0.8.1", - "sw-precache-webpack-plugin": "^0.11.4", + "sw-precache-webpack-plugin": "^0.11.5", "uglify-js": "^3.1.10", - "url-loader": "^0.6.2", - "vue-loader": "^14.0.3", - "vue-style-loader": "^3.0.3", - "vue-template-compiler": "^2.5.8", + "url-loader": "^1.0.1", + "vue-loader": "^14.2.2", + "vue-style-loader": "^4.1.0", + "vue-template-compiler": "^2.5.16", "webpack": "^3.8.1", - "webpack-bundle-analyzer": "^2.9.1", + "webpack-bundle-analyzer": "^2.11.1", "webpack-dev-middleware": "^2.0.4", - "webpack-hot-middleware": "^2.20.0", - "webpack-merge": "^4.1.1", + "webpack-hot-middleware": "^2.21.2", + "webpack-merge": "^4.1.2", "yml-loader": "^2.1.0" }, "postcss": { From 390c53097f76fe33ae596cf7b56200000b825987 Mon Sep 17 00:00:00 2001 From: 1138-4EB <1138-4EB@users.noreply.github.com> Date: Mon, 23 Apr 2018 21:21:36 +0200 Subject: [PATCH 0021/1487] fix filebrowser/filebrowser#312, use prefix $ for commands (#7) --- src/components/Search.vue | 62 ++++++++++++++++++++++++--------------- src/i18n/en.yaml | 6 ++-- 2 files changed, 42 insertions(+), 26 deletions(-) diff --git a/src/components/Search.vue b/src/components/Search.vue index b5b434f3..62593101 100644 --- a/src/components/Search.vue +++ b/src/components/Search.vue @@ -125,7 +125,7 @@ export default { computed: { ...mapState(['user', 'show']), // Placeholder value. - placeholder: function () { + placeholder () { if (this.user.allowCommands && this.user.commands.length > 0) { return this.$t('search.searchOrCommand') } @@ -134,7 +134,7 @@ export default { }, // The text that is shown on the results' box while // there is no search result or command output to show. - text: function () { + text () { if (this.ongoing) { return '' } @@ -144,17 +144,27 @@ export default { return `${this.$t('search.searchOrSupportedCommand')} ${this.user.commands.join(', ')}.` } - this.$t('search.type') + this.$t('search.typeSearch') } - if (!this.supported() || !this.user.allowCommands) { + if (!(this.value[0] === '$') || !this.user.allowCommands) { return this.$t('search.pressToSearch') } else { + if (this.command.length === 0) { + return this.$t('search.typeCommand') + } + if (!this.supported()) { + return this.$t('search.notSupportedCommand') + } return this.$t('search.pressToExecute') } + }, + // The command, without the leading symbol ('$') with or without a following space (' ') + command () { + return this.value[1] === ' ' ? this.value.slice(2) : this.value.slice(1) } }, - mounted: function () { + mounted () { // Gets the result div which will be scrollable. this.scrollable = document.querySelector('#search #result') @@ -181,14 +191,15 @@ export default { }, // Checks if the current input is a supported command. supported () { - let pieces = this.value.split(' ') - - for (let i = 0; i < this.user.commands.length; i++) { - if (pieces[0] === this.user.commands[i]) { - return true + let cmd = this.command.split(' ')[0] + let cl = this.user.commands.length + if (cl !== 0) { + for (let i = 0; i < cl; i++) { + if (cmd.match(this.user.commands[i])) { + return true + } } } - return false }, // Initializes the search with a default value. @@ -227,19 +238,22 @@ export default { } // In case of being a command. - if (this.supported() && this.user.allowCommands) { - api.command(path, this.value, - (event) => { - this.commands.push(event.data) - this.scrollable.scrollTop = this.scrollable.scrollHeight - }, - (event) => { - this.reload = true - this.ongoing = false - this.scrollable.scrollTop = this.scrollable.scrollHeight - } - ) - + if (this.value[0] === '$') { + if (this.supported() && this.user.allowCommands) { + api.command(path, this.command, + (event) => { + this.commands.push(event.data) + this.scrollable.scrollTop = this.scrollable.scrollHeight + }, + (event) => { + this.reload = true + this.ongoing = false + this.scrollable.scrollTop = this.scrollable.scrollHeight + } + ) + return + } + this.ongoing = false return } diff --git a/src/i18n/en.yaml b/src/i18n/en.yaml index 0e2459d8..932d70e7 100644 --- a/src/i18n/en.yaml +++ b/src/i18n/en.yaml @@ -175,13 +175,15 @@ sidebar: search: images: Images music: Music + notSupportedCommand: This is a not supported command. pdf: PDF pressToExecute: Press enter to execute. pressToSearch: Press enter to search. search: Search... searchOrCommand: Search or execute a command... - searchOrSupportedCommand: 'Search or use one of your supported commands:' - type: Type and press enter to search. + searchOrSupportedCommand: 'Search or prepend ''$'' and use one of your supported commands:' + typeCommand: Type and press enter to execute. + typeSearch: Type and press enter to search. types: Types video: Video writeToSearch: Write here to search From a10f286f0ff42c4db56a8857c2c47f3473547af8 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Mon, 23 Apr 2018 20:22:43 +0100 Subject: [PATCH 0022/1487] chore: update version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c25453d6..c6050eef 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "filebrowser-frontend", - "version": "1.2.0", + "version": "1.3.0", "author": "File Browser contributors", "contributors": [ "Henrique Dias " From d3e363a4d508d3f1c0dd9243047d1de58eaddc12 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sun, 20 May 2018 12:44:06 +0100 Subject: [PATCH 0023/1487] fix: material in TTF and EOT (#8) Fixes https://github.com/filebrowser/filebrowser/issues/404. --- src/assets/fonts/material/icons.eot | Bin 0 -> 143258 bytes src/assets/fonts/material/icons.ttf | Bin 0 -> 128180 bytes src/assets/fonts/material/icons.woff | Bin 0 -> 57620 bytes src/assets/fonts/material/icons.woff2 | Bin 47620 -> 44300 bytes src/css/fonts.css | 6 +++++- 5 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 src/assets/fonts/material/icons.eot create mode 100644 src/assets/fonts/material/icons.ttf create mode 100644 src/assets/fonts/material/icons.woff diff --git a/src/assets/fonts/material/icons.eot b/src/assets/fonts/material/icons.eot new file mode 100644 index 0000000000000000000000000000000000000000..70508ebabc9992e64f1314f866b2d7ab90438c58 GIT binary patch literal 143258 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 Hzx)3OGG_Ot literal 0 HcmV?d00001 diff --git a/src/assets/fonts/material/icons.ttf b/src/assets/fonts/material/icons.ttf new file mode 100644 index 0000000000000000000000000000000000000000..7015564ad166a3e9d88c82f17829f0cc01ebe29a GIT binary patch literal 128180 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 ohyj3!`#ee%L;DTjx@8!5k5~VH0QmdE^#A|> literal 0 HcmV?d00001 diff --git a/src/assets/fonts/material/icons.woff b/src/assets/fonts/material/icons.woff new file mode 100644 index 0000000000000000000000000000000000000000..b648a3eea2d16b6ce783906d6b7d5f251b9eb56c GIT binary patch literal 57620 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

wF7DI|Kx|V1sBQ9FYs>m5C)C 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 BJ$(QG literal 0 HcmV?d00001 diff --git a/src/assets/fonts/material/icons.woff2 b/src/assets/fonts/material/icons.woff2 index 05a8ab5d2e69c71d6e69bdafbf1601dd5dff2b07..9fa211252080046a23b2449dbdced6abc2b0bb34 100644 GIT binary patch literal 44300 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 QW8}wPUeo^@jR61v08@RD2LJ#7 literal 47620 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

dwtib={~_1^@O~rS8<3sA|t04JLL!-NxZX$5n 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

MOQ9ju8O#jB4RxdN~9kw5@Or zCuy$z0PsXiCTbm(WbhkXIu#IUt^&0OL=;W?VS-`d?rKzrVhqhzF=mB}LP2k*z7!bp z2mmnAc)?tPZtnyx7kDKAp4qK*D4ukz^V2~^j)NV2mz`RAd5fSpjd226J?{-hS~0qi zsu;QXIrL^sfx}fGPfp2RRjTt66}rA-q_`%yE@FBbNe}=}nH7GF34xpd+HFPjwSeZ7 znRU}S5CCK&B5@Btb0G`{_zkD4m>|ANlEaI-^tKWpWJn*`vCuan6-G+fU5Gg+Cz7?Q zxTz8dz9c-T6X-K!|8La15P*A9u2*;j%>@nzkJg4e%)EuD(Jr8hDJWn>OiWK66F~+j zGPK|d4!Rb2o@pzy8e#zfBp6C1ux z{D9D2#Q4pN;RfHVslO5-yq5rnvO%N!c8F1 Date: Sun, 20 May 2018 13:02:09 +0100 Subject: [PATCH 0024/1487] chore: bump version 1.4.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c6050eef..aeb113ed 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "filebrowser-frontend", - "version": "1.3.0", + "version": "1.4.0", "author": "File Browser contributors", "contributors": [ "Henrique Dias " From 294efef38c4481249114bf9c5706f712809b0563 Mon Sep 17 00:00:00 2001 From: 1138-4EB <1138-4EB@users.noreply.github.com> Date: Tue, 26 Jun 2018 17:12:12 +0100 Subject: [PATCH 0025/1487] update icon/favicon (#9) Related to filebrowser/filebrowser#417, filebrowser/filebrowser#433 and filebrowser/filebrowser#436. I used https://realfavicongenerator.net to generate multiple favicon files of the new design by @timonss in different formats. These are the previews: ![android](https://user-images.githubusercontent.com/6628437/41185230-25aa4292-6b7e-11e8-9bb4-714c443eeefb.png) ![ios](https://user-images.githubusercontent.com/6628437/41185232-2733a9be-6b7e-11e8-97f6-ae8915f21980.png) ![safari](https://user-images.githubusercontent.com/6628437/41185235-28bed84e-6b7e-11e8-9b45-95a227bebbe4.png) ![win](https://user-images.githubusercontent.com/6628437/41185237-2a379904-6b7e-11e8-918d-ea600d8704a4.png) --- src/assets/logo.svg | 150 +++++++++++++++++- static/img/icons/android-chrome-192x192.png | Bin 4299 -> 9367 bytes static/img/icons/android-chrome-512x512.png | Bin 12300 -> 23072 bytes static/img/icons/apple-touch-icon-120x120.png | Bin 2930 -> 0 bytes static/img/icons/apple-touch-icon-152x152.png | Bin 3723 -> 0 bytes static/img/icons/apple-touch-icon-180x180.png | Bin 8893 -> 0 bytes static/img/icons/apple-touch-icon-60x60.png | Bin 1910 -> 0 bytes static/img/icons/apple-touch-icon-76x76.png | Bin 1977 -> 0 bytes static/img/icons/apple-touch-icon.png | Bin 4299 -> 7420 bytes static/img/icons/browserconfig.xml | 9 ++ static/img/icons/favicon-16x16.png | Bin 918 -> 843 bytes static/img/icons/favicon-32x32.png | Bin 1645 -> 1250 bytes static/img/icons/favicon.ico | Bin 1150 -> 15086 bytes .../img/icons/msapplication-icon-144x144.png | Bin 3515 -> 0 bytes static/img/icons/mstile-144x144.png | Bin 0 -> 7213 bytes static/img/icons/mstile-150x150.png | Bin 3668 -> 7022 bytes static/img/icons/mstile-310x150.png | Bin 0 -> 7644 bytes static/img/icons/mstile-310x310.png | Bin 0 -> 14508 bytes static/img/icons/mstile-70x70.png | Bin 0 -> 5005 bytes static/img/icons/safari-pinned-tab.svg | 42 +++++ static/manifest.json | 2 +- static/share/404.html | 8 +- static/share/index.html | 8 +- 23 files changed, 206 insertions(+), 13 deletions(-) delete mode 100644 static/img/icons/apple-touch-icon-120x120.png delete mode 100644 static/img/icons/apple-touch-icon-152x152.png delete mode 100644 static/img/icons/apple-touch-icon-180x180.png delete mode 100644 static/img/icons/apple-touch-icon-60x60.png delete mode 100644 static/img/icons/apple-touch-icon-76x76.png create mode 100644 static/img/icons/browserconfig.xml delete mode 100644 static/img/icons/msapplication-icon-144x144.png create mode 100644 static/img/icons/mstile-144x144.png create mode 100644 static/img/icons/mstile-310x150.png create mode 100644 static/img/icons/mstile-310x310.png create mode 100644 static/img/icons/mstile-70x70.png create mode 100644 static/img/icons/safari-pinned-tab.svg diff --git a/src/assets/logo.svg b/src/assets/logo.svg index 62e6798a..5e78eccf 100644 --- a/src/assets/logo.svg +++ b/src/assets/logo.svg @@ -1,5 +1,147 @@ - - - - + +image/svg+xml + + + + \ No newline at end of file diff --git a/static/img/icons/android-chrome-192x192.png b/static/img/icons/android-chrome-192x192.png index 685cdea9d5cf74acf3f02f345faefceab921cf74..e9131e42a46292f0c302a0ec1d490da84773a053 100644 GIT binary patch literal 9367 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℘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
w= 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 literal 4299 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 diff --git a/static/img/icons/android-chrome-512x512.png b/static/img/icons/android-chrome-512x512.png index be4f052601236f72b77a3c93cb6a347446d8e786..d4d3f2e2d78204548458e2fd806fa9a0d4a8edd0 100644 GIT binary patch literal 23072 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

hKa1i8VW< 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 diff --git a/static/img/icons/apple-touch-icon-120x120.png b/static/img/icons/apple-touch-icon-120x120.png deleted file mode 100644 index f204c14b893b4a521b59a1e0fe86bac74ac4ce4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2930 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 AL;wH) diff --git a/static/img/icons/apple-touch-icon-180x180.png b/static/img/icons/apple-touch-icon-180x180.png deleted file mode 100644 index 8c3ee3a9efda885c1c31c1f82567ffb4f0db505b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8893 zcmZ{qbx<75xAzxYd~qkZ2Nt&t1h>GVfe?Igx5WvB&4X)zpaFs3LnVzoh^EuyhdghPm?wJ@}Z8c&7dIA6dK&+vztdFi6|1Eex^i_5o zD1xrA9TcDn06<+5;XMoo-Nu0Ht0@AiCm0XW4Hg@9eJB7B#03C^g#!S0=&rB>0KiuW z064M&03ewF0F7r(yPgc%0JPRrQwBW#d*pYOq@sK9J=I^s0RV1`e+$NBk8vVeQAk5s z;bp+`X|7Ye*@Ex>+w!^os>O#j-^(>H>g>DkSuG z6Ye68D^@c=>9>DS*z-TvqXob*%u6Jt5Pm#H5i)QSy7?}|yt&%|h?(#F_&}c%Fb0=R zo0zT>oeJxJt-Q)si=XT(=Sk=(T1%4bPfI2drG8u|m2qXs(8GWEouwWajiQL&aR{45 z9wT{`@4WKEqb;f)QQDmTY6y%1Oy?hj64D&$hO|&V!Q32t;3^A@BV=T|NW^kL zq#`wu_{tZfNHMlsav$=xXV%4|q-`XN@nUDNO^i*Z&9J|L^G#zD^CIYEmoF*rkH<6O2?^c z6H#&t02k4MajtB;o`knP!NY2>6S!#^wjcH?`LZp{kKJ!2{!8M}>*Bz3TqZ^3=izLm zxzW6~E^kQ!=#%gHg&pe6qt`BqO4+?JTAw7}kl7lY6nNcK&gv?$_Be!juzP<}p5U6g z>vw;BcpPn}oE+niC5N#ZS4eFxHo$|zL<#%}ipk7fEAMxgE<29S!8!wm0s}}qxd|G4 z>%8NOhK3{&H2}dvDXFQTes^9c8`}vMwe!EoKkxmR`~)oHY%rY;YcMTULAJyuadQIf zWtA}n&v zM)70eWFeA+e5@BQIVxswHHPc>)mR|(01q9{1BrVyF}HlY~|lf!;sdII)TJW{SP z&WNfbyx|cM{muFO0-TKy9lF24gk0lsXu7^qOK?}wi?{spk!nGE5%(U~3R^|NLenIy z-#s_e?HhyqZrEK)Jj2hUq4hoW|`=z^3W)S=eK=c536FtvPUdVYqhx zJH#WoR+O61&^#ZJx?b;)v7$ zOxacuufhrwZEd-?2#vma|^mTJ@ou>#JI2k_xr}H;}U^sg{zPk(?+(EI7^v&#g28d7#VS}6oEfEw^eDP$sKP0t`zf-yFMz;heMYo|;bbjnA=C0YTlCIV^TGtbd{#F% z%xZ+Z(^|YMtqsSE{)Q2?fILxkIwZcO)ZAl4r4Ai*FMK1aq64C6G;)|DSM7&D3S1WI z3*U?6Og@u3+m&i7dQ$OG#O-huQ^kZ3;ShfXVKXQk`M!O}*^qQJ^!L?f7udnkP{@ek zTHYP+g8lslQ5F+5$(zsPp$SHnz^1@bvxpHYJTBIp7L$&q=)XD#F%L4N)fscgcgL9& ztqTNKdL~=S&79s}bg(Bp{#mUR^D%(NBt)i(SIP@vr0J1$O04MjSLdH}P8MLM9D9>X z_VO~y7qpSQ_Y*OlWqZcrX0}Ms2KBz9UiY99QM+K%+!bPxjVj?OH9r!(oH9A-c3 zjLhjTyLz*j9p&5vr@nF8yq@Ac_2~t_`9gDHT2RaWCE4b@Mdrj=mA>N*8D9pKa7_0n z{T%F2iW}Vgb|ZnVFWs?O^!|kb+rjg9uc1-NzzGk;wziXfx4cUhb%ly;?1#@~njQ*v zTCna9)#NFe9)NBPMu&tigXM5(>$3d5QuhI+Vz2DV%q5J24xGF5ux;ovAf|gGJz6Wd zaA5Uq)E>*T_eXWX(VEPIOetTrJGvr`D~NLyobs9368>sb&Sq=?WrJCnmxinC**%al zn*sw<4N5|9jV5ef8V z!r(7w{&8$LD?(0umx`)rlN3GhJnk!9dC9lwP~brGYol7Z@Ykxn06+&m|F&aqO6S$% zD(3d`A7ho>B`UJzbyi%xwKlQ^c5~9_B|NI<3U1jxbrQBg;!(1};w8Mjc-yNzY0igf z&IgRnQ*b%nve}dUe1{~)9Ib25h4$pbX|vxa8dPPX(eQJJ2yqe*b;n?b)r96&$qpt~ zW6{2pCBd1d3`tB?c$@suuT18TWY=dVG3gdDk>J8=gX{O0gx^Ppl+KqnI4>jnQraE5 z_oO%z3kR(QM;MHVTfqgVPsn^7eM56bF4GL>gX8?Zw%fX6#_u&>Q;++;Pz>thnS6*e zxl`R%6{iAqFpKXqQ@OA&VX@=;t z^r9DJ0Sul)Swlk@{3o8z1CJw}P$8qN5RTeD$iBN5p4YEz(sgo0(*X~x2P!_D_cHO; z`QLKq=Nwt7Z{#PU9{61+dY~#&Q-m#7$G-WmbwlSSliuGI88ET!%2PMfSb30~98O=e2Of+ou18ho4woZd;K2=B z^%0tO0dS^?iQ_+qeAuw^sLCrk#JyqWTZ&h`LD5CHVVwGN6zvNS+o9an^iK}>Pij8{ z^_%PU%=;^Gm82IJ2>nTVw?Y?Z3HzkG_WP{Y4uGHj(Id_*N5lZubNqB$0{l8t?x02{9pm^4@g+Ky8b~r{`Pit2*nrd|oqP3ZrXy2)+ZdPL)tZd%s z6yLV&ZEcYS{1NIDBi?AkRO8Io@KIyDR!P1xxkzHVedZe>aW7+IsUze;9N@&J!3)#Xm5JtM z@HMDs@b}P|Cv;B=Sf6re6UWnyu0OJWnLrdUw3P?d$6?X9RL zodrk!GVbTyAPDL{9G!M*xW`O zD=H^~c}}lUGX930^3CwWQ1rld_^hf+<`W;k7jG!$g?~-oR+@V1)=Z2prBo+IfB4zx zbg}Lxlv(IF;4GZ^ofbsmsHJVCRFn6yTob2%E63vzE(&torLlG+Cy!L1^EzJxO13EQ z)_n{XOHb~6_KM?~Rq9AeRFae#3ZY`Sg&vzO9{2<8PuGzfVDAe%tSl0 zNY33Pp!-AUO$!O_FGLkjnVeog-qG_`9?9K;$~HCCRaXZ|LM7=0C(~)-lFoQ@1Ih4p zpzD>MP8^Ip4@(d$tJF@pcPQuuhU{vjiVHeVSM5Uay!kmq$^~hZM=V}$0P@@Dl8p?A zE0m|?&E5mGA2vgQTt%I9;6;Fmfm$MrIen_*HSBaPA>7gj&i74;8ww)klHK0%bkw!c zGJCZ+%l|d?2kTDQ8d*VVh2reXevs?1Q@k|pmad%3lfOHkI_dZe zC~Bg96ex6f;^Edquogkd392aBglUy8`5ARC$D1=q31+*eoWUWJ&(j&>gMt-sO;$1| z103U5%=^RFs;Y2Ze|qT+t@=}hUF(%0wj?AZ*@*VVjA%aAhGM+xK);3uUet3%?GI2) z+?0Queu1y{GMxP4?V%$h~qn z{Hb>jeocJ(Bit}hrw!!hCa+d&Gu}a4an5l(fpu5-=3oc+WD^9oeVJFGbfe{AWTSn* zOlKwwG&eSOY%Y4GD0J}i<2iP4AKSUhSj?HZwDF46D%j(l=xJS}r!_arvC~)#XvwSR zJ!s~Yxew+lIRutkL|$I#P{P8u@v(Jyi_{&@O}#TO4flhRfM-cQx${`eM@EoK+HGm0 zQaxVooJYQyLETSn-5Fp)(}`6cl$fepn@OCRDo)!c0eWDMq$(P@&FwvSN|hk(6|P;L zOm8)hOD;%k?M!M!!7Q|^Tg43NIl`MZ9t8mzjMiijh(P8{HYZ{?B=&GpGj(~12DenC zVNu;YBk3}>$&X?|Lake*?REx;m7hD*P;oBbp|@xJgBTZP!uM~pJp4b7gryF#Y&hHu z>G3pUEU9X9OZJvm;w2p8GZ=Y@qg-5Sn@&|zzjk6cb4vQn`xvf$F`GxYNGKKwYd=F7 zXpL7_{iBIh^xU~Mg}*5tc-kvWq}Zg*;9}EY!#_ofr3QkHCq!0b?6WCyf9-?~FPq?> z^V7}YqWWLXuxo?3U2FRKrFWg6eJQChTw_H`mibm8-b|#qW#X`W2*80+hBZ4Ot9(G> za2wyY@e7#EIJ%F9O;P84;}i3LmbGSHQI)Gg1uXNlAC|`lMrY|ircM=4XG2g4MB6AF zW?vF|s2L_!Pb0(NR6eL`qitI~RUAJRF(7s{z}q)>lHKmrs)iVy9vI2mQLBkeXd;hU znPyrhe-6Q))M`}gXBVR%oz_sR`XF0nC-74_7AL32z48NMRthg7%B~a=bP~+7uytJI zxeT>@PyFpLFk$z_H*=ta@A7yg-S(MN{t5dz%2)YB8HQP^y~*EJXm1M-4WayEvZ#<# z?o1@8MZa?I^3>*3yE8fc z@s%NW)!!4K16h>IbWEDpW-*~gF9G%|FRw8xe2ZKJH@Gy$?&XO3eE8jcQwxyDG? zw=8V#I_k)`+rlItDE^X*$dN~sDcJQ&xcU^sWOgzit;ipa%e5kzqANp<96`$@9crx0pyXm}SWcXTP7Qy77!0_|E$K8D~6ZJ0XxKn@Tp=9R37UfyMr zmYK7O$Z1a?ErFh2ZG-6`mAr0Yvv7j(kUz1ENOhwHJg!DR5HppW{3?zs9hQrl4wf3C ztzYGWB`0d6G{FX9QC6Dr-IO!ng6$qXW!bZnT-ixQRR0|;;TSdLEJPruoJ-0^#=&7@>yyVhATUc~rA&6vL8Hi!rKkxz{EP2*o-bh-fUvRxy` zjJ7^IealGF?%j=TZke5X!A`r7okd@b7eejj2Qv`*%0KYXE6hkrual^9TYvZVPoTb+ z_K4E3M8*iJYIMZ5BUrv__KYzcDt)zJaUMk9I4b$?#Oia{SE(xHA|6S0akJ)7o!fd} z;2ORkk(VEWmoWVK&&L7~W3;`b-gh)picT#Pq?s@%|tvEjMWY)Yw6Vj!uOV-=(GKKb_1 z_o3CW&-C=RsWM5O14=P*2MWHx5gJxW$B&c6@|uJFSjvrcv4t#xP+o%iuKYZ%;GkcB z)h({Feo*NYnZV(OoMh&F6?4d?zz{j}?{&NlW8wx_I^6mrG)+bz9GQsL_Wu0}?nVU- zrb+e&_CPPCQnSbrd!F?j<#$xq>Eo!`@>X+{p>%iV^tE0$5;>p!^n3B?Xu*+v z<4Xb!o^i9b_|c(A1;&tENLowy)cgr8&I3*Wvop^Jewimfc)M_xScgFG`2<2_!{uoQ zKqWv;XynUmk_tq~yL9m45BM2SG(ieNFDYqtdsM`^DZLpk>V+7|WO8xB`%#5!@z1#_ zNJ8t?*U~1hc#7zv1;)Xy$f@+7H5eOx3hubILV=$zb?HjJbmGbNWR35b~MDc z-kNmzMGjmQ42G5H#b8O+Cbir)==x@)FGi^N&R0j6s*&~&myoH|D6lIsG-6%ygRhFF zwO<~}gbTO_HS)`hha7g!_twc#uxT^7aSWpuQswuIsJD)u+#HxXUK2CYJeJ<+d5hCR z;%G8wHWMB$+&>H-&0_HUn@)+Le>#{0>e*YF$Zf{OFyYvqrWVS+Y@2nz{B9!^DYYb2 z@r4z=SVZxm1Q>H9%`kP;-q>&Gu0?@U6ojgzYqV2mfO?9YVwtx_o*w(oJyP@K2&)xab6Ad>^Y5f7f5TzP`Hy` zf9)l16s-)K`kfd+c7wZFemsqECY|iYhkN*FbirzE^MbMVCfmx^)&Q>%HJF0y=rl(d zJb=gyJwG7@mrI*Qc{Y~7h3byQt-x+6WSie6~f{r%D6^$cqFNH2+U+A^9T$tji z!X++a_k>jJfzdWPtP@p>e8$4)TX{i^!Z}LpYK<)8C3M}38o?Hwh%+o^%-bs!`6B() zQY!(AmK6fJ!P%@zb9OMcyS$@F3IyJOQJhF$jPlQ-RwO{JM_s1&zWSGCYR1!y&_`W( zddid;qiD3vMpKTd@Vq{aBlQhiHAMz}J_MtoW~ir3RY0(PIjCS$-B%SZ`X^SvF6X&2 zzPhC?ao5{K1^y?(zo(tt&Jf!|2R9h?m&E9Q8^Fz!Z zsBA*X2Rz@$de zjo8`>N6fT+KFf6b>WTO7f;yh|N})QCp8y6foT8QEyp@Aus1{@uQVnr`_q;kL+I582 zH1&>PN3tS){oQ~&rvZn(2{wiI??RJtLO<`jVKa;ekeB1y(%CUn_4k?Qo^mMZP42ac zNj@v&XxIi;8>`dlz5UQHK-RYn4XQ$_ilvd;SH3pD)N;&h>!=#C2mBki4-I71YR?8s z9L&+9#yH1$PPn@79ce`D5_=Ok^h+U>*88L30hfW5F!fIC>NH=(k%VFH+;r(kc%zqb zfuUAh5F=J7?hS;rGGpv#nTaHS*`F{=MgP@t5SL>}ElgIhLH%qszr4U6m&IT%m@w(W zo=oP>)h4(wgEEMai+cQXt#y;vaU`2g5%--XRs(~=p5u`OQTp7+EGi7OK!f_wiR zY>PD>k-h<`h$~t(4NlWA9e@(PmhP;TqR{R)iHS5#w%QB>-?{jZTNSd^(U_eZ;%N66 zO`eNv`A<*MU29HKzDgoOCyk+Ns+rgi+mn~+vTZ}YsfWL1r*<$ID6S>h9H#aM&@a0 z*_4VYTlwil;HI(YFcCh^n@ao((55I-XIfkif^*3OKf6R;e}q}ju@5tqZKx&X5FCM~ zz9w4Ju;8L9c+`Fv>(fB_IXs%g(4X0Au$Yl5qjBIAB<0BD4c5!RIF3e9j?O_!_Nyvn z3BnSnKaZ@6^W7GS6@4T-!cL~mVtt*;p12V97YEDHq5#uf1y==3sSxUC_yN1Se+Ol8-Gj8a3=y=tYXou%JK*a6? zH|og=odJz4a4^tBSbu*CI93uyg4qY&J+l6mDgU|sfu@|4KJ1x@5&=1hP4RC%jc`k4 z4Jhs`izUryZ@x*?ThKl6(ICY;QxT_Osa`C+xP+pr#NNs8o72hqO_{$Y^Q*escZJ$e3c7{C$O^AdykI3P7J~_}S z8gm2v<2)`K$44JRyen4H+h3~IUL3=!dcr?5&x{eu^sRC>xW2PXSD|iKu)qY)U3XeP ztGa`C_<=9d*xgqUC4>^*9Gn8#ED$+?oDVYRn*Nc z6IjP+qNX25Tc$Amz9V@cR1$KLcIIt+*e3-czk(JgTXM|jm!u6538)|7`Syd^1pZR| z_7!x~RV)~$#j%iIncq-!$|K~CHAxsEGch=#J&HD$Crgf++8g@^$<#h!6HbrfLJ=)f z2GXm5sk7yq_>$Qhn|}$)UDrv8_O z;LoXw@R=Wyai(+d{cA7E0Ia1^P3_ed26Wv0(xY0Uwm(x_??QM)E&!e+GpnYa{wWSk zrECeo1fM;aRLJ5Qe(!6xt2aH3`Qi9THh>mZ$PNb3DujQfP|Y;>uB%LH#0)6VE z`?}bi7Eik$T-Y=1zS2|1;Jx?DmEY^7dl~xMS9$$1dhwEHV>|oHK(6w(6a+qpmT@P2 z-4NZ1L&>>Buxe`=OnTVDYG60?piRQ|rpOaUOy;wOAho<>#2DF3fzY*Xb_CEeFZ##g78_dBD3UhF> zabb}FOM;~Yq*>4*#RP=J1%yRd^n@i?9DRH|A%cSb{{CR6e`$0<(_jy8ht<@? zU&WV>zHZhKh_Z)`ubZ8_4+Nr%M&SVAlE)6g|Hb@wObEo$&dI^i2OumhLIUuPKr=M| zq4WQkS5CG*j{hRFm8^JZgzi5OsFRzWPoSqA;J>pH^mKQSt2fgAUpmm2XbK=KCM_*2 zB`zr`uG>l#iAG5NL&v}=$POT+sQ97q`3c%&^dBZeeGP!UldBzi_=0ZkKCT`Pg7z>! zCmRoUxZwYPFoM?Bwh}OFF_@UJw7s~vn7Fm1jg76Cji{)QjW|q5+8&Jd0HgEs8cchM PjsVb5(N?Zjw0ient#fwm diff --git a/static/img/icons/apple-touch-icon-60x60.png b/static/img/icons/apple-touch-icon-60x60.png deleted file mode 100644 index 00f82e9432493a5e905484747f479148ccb79e8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1910 zcmdUui&xau7RL{fI3gr!f-=zMAs{I8fZsg$1@+_C(MG@HjaNV`8x3%scaL?L%?X}PO?C(C0 zb&7;x8_i9vO%X!oA;AF=Wb|Heit)mXgDam5uPXcmeh3*#m(Ge8k-1S?#72Llzicx~ zCU(-`2mwNw&Isk^BQ!%!<&Gef&Om4^5h1(^AuDao*>F>?N*!pt0mUW8-A5YhwB=HTWO%+5p02+Yhw{mdnd zyl$L`2#X}Ie;GqkqQ5rrY~0<T9`&94?Uz48tB3Lr*^(+olD9VosM}1?2{Kut4c?lDkW0dX8(ldcQ-Y8&GbF%I z6x?&7QWtlVZ}I&p38juAIq~D?!tNuMo8MLQFC#ZUqmw4D7FaIJ&rIg+KH_x1JS4Yg zYHt1T!EJIyRc);krBzs}uk4E~^mPlJ6J_rQxDhF2#aj(E1$0%^o#sLGC~n#HP*%q zwJKu69I<;gi zW95fMF8hB7s3{6`JYC-KZ6cPcYv-PA?l=%^_)O%`(N=ITp>%0c$zbu*ebZHDKgpSf z?S(fw-7N=yvvwDVHJzE8JkZBiQ1vq`njyaRt@`BxsZjswx5t3xZdWb|KTIS1{3v;5c8XWlNl9aSsU zTLj+i5B3KBaYy&S)TKM(ct-4Z89Twu@^|X6*fTr1c=^_n^;>q&e;Iv+?k0P!v$rx) z6O@1Xm69`_4p~ucdd`sOoc^66LQaj3BLe;?d*s+;T+(`*bH@DYB|26ctc_3zT%OvkUU6jsl#=F)hq*eQ`o zKQq_$0n)vhHhf^Uac5Io@7+(@+j_EjL⪙!QN+&(2&_qgZxo0XYb<1H4}G#=0{R9 z_ZY_~t2>Twplux&G`A#Rv_tI08*jAWIOEae7{Fya+@>7s$3RzdUDZy^<+y$)ZrClaf40iJ5FUz*Eg=os_Z|1PIJ(bwk}pd zkUz?a2#g_;#Dol&rpm~GJQz%lJA*V##AM?hUbrV~J%fQW7+u8<4gXc3PDxV9b^p7d z`Fb^#EC^cYkd`7Rc8ODEC`2t*$OK}AN}6oPrg3OocP~4#CFagxxidZN!kKJ4B|&I$ zI(^r!T{P7KO*%=_Qc@MS3MWZHw0c2Nq)b;!a6BMIny!{<2pkuZXc}TRKpXvU%!{5l zu9T@1N&+#xJeHx<0+O+MN$20p7F80VTtIpo?I|R(<|Ra+Qp*UPR)${eimuftcwa|{ z{Y^(8A}Pegyu6rP7Kg(UezU5OM3%jz6RFCSA%?$yd7bYBxfK14M$m7%1 z8e)5jf-V>DR7q1bY4ra*3|%5gVv8l17-M?LSuBht;Yg)PnAFpgA!UgfUUC{)K_mCK Tqo+bdc0eJ4VF7yo#Js-%tl&yN diff --git a/static/img/icons/apple-touch-icon-76x76.png b/static/img/icons/apple-touch-icon-76x76.png deleted file mode 100644 index d9cc0f35a3bf5f2d5fec3dfdb9caf319af228bab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1977 zcmdUuiC0tC7RC<`wFu>AuK%pWbWKu#HE`s2IQNTDL zRiY>bs(ay4`V|!LjZs=%aiGkWv|6B(8u1tvo4!rX^GI)+ZBL{Ge+~=rC6;O@9)6?4F`ap1As})*Vp|VF&&%j#c{)c4g2B$$4G)- z9DtjSK>Tq?$b`gmkf?wgQz4QG$pw&B4jpTu^G)b-8@e>YEsbzPG9-TkH>=>5X1JvZ z+Gaq?chLC;+;|w0@}N^a#LFS^EOe@ab{C*a19WME&W&(uGxWU&V>M7Q2+Lo<`cW9z z1|Lkqsd=~n7avA5OzDB$lW=|kx;4Y>LHPR|oSughb5OSc2a5u-ursBi{yqT!{9}dP zu8belFQ#<*X5J?nhGrIwoKALhe&ApJvTXVGsyBN0yovV(y=%Unrr+@mc{c1Lti(B+ z@1~5_VIF!B+dY_k)vw13uwr?P=gxQlJ`Y}V{@(T0lsR<+EQ zFge-o4rV0JqlKZLGx;5UBFAh7=^=#UpT??YVvh~)oG5a9xqBicWn4_`;i$WRy{hdV zots+bij2HP`@+0^6HSzvOLh83-8E|E&MkI0+{IHz^>vo7fxCNa%e1UyY9;TgwHl8L z@0t{D`@=0Ds68^23i_vhE>$zC>@_t#)SRkLLNz0>8j%+4bv@c_lTl}R-qAesyXMCt z(B7e#VSiLcy^xz>sJz}&SazvS)h!^6ge0P}lDie-DwzU%(On@?tva0d=GOxzlaHQICIv@L(|`M_q5XNE`Xk?{2va(C;eY$WCY zT6`ydy}-3xu3E-%r)`rk2cY_AOfVBB^&~;neU~e5wNe|j#SvNA z_tsWEVy?5^aPxR!-4WiTEaRu;7SFXbsn^-)iMUxDZnmyIRNg8dE~2VmJDF0BceeJL zcD6l_PaEQ~dUzFC?ZTu!(|kYOH}Bg=@CMhWvwkZYzTm%$(CN#M^6^TpAX_V=SN?PU zn9=L$@t>Nsx^ack^pZ2=gsS}2Q-30vrxlN#w;3M1p{P*(vD(b>K_jVgecM%}o?|gHS0&KuKQo1{p+0AqBHc8tw~qn3PW#t}y%{I-g z(xF3p%Q6$YLdq0KpytPxv06(V?&ZFQ`%Ssc`Pd(8gSzcNBe^J_&Wqz?3D_Y-2U`Ri zBo2{6x1-VR$r}-bjv!4Z*A)GiKq8G43-<}*%po!c#K43|>LcTXw zDCX_8qTn6yR9l)A){>|Ti0M0sw^+hQ_s8(TU#lX-L=v^ z@Aw3WllcH)FtV>Wzr?13-kA#YX90mYijQrdAc;n!q(Xv#yHCuMM#mHWb1{U7h)4=I wg2W{eX#z5tM2>La@ghk)dwYaO<{~r!9#i14^~JU-I9Lb3a`R!9Gs0#60tLv6i~s-t diff --git a/static/img/icons/apple-touch-icon.png b/static/img/icons/apple-touch-icon.png index 685cdea9d5cf74acf3f02f345faefceab921cf74..7ea77eb8453243b2e11858ef62ca076be342a11c 100644 GIT binary patch literal 7420 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 G1^+L{eFRzn literal 4299 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 diff --git a/static/img/icons/browserconfig.xml b/static/img/icons/browserconfig.xml new file mode 100644 index 00000000..7f82fb31 --- /dev/null +++ b/static/img/icons/browserconfig.xml @@ -0,0 +1,9 @@ + + + + + + #455a64 + + + diff --git a/static/img/icons/favicon-16x16.png b/static/img/icons/favicon-16x16.png index 8de7c05e09c2fe972e855eb61fe532a5f4e3fe88..b02a47ffca4473521e7cfe01021301839ee60eab 100644 GIT binary patch delta 762 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 BkmCRV literal 1150 zcmbu8txf|`5QV3KP+LWU!%;{ObqE5~!aJa`I0yy>zB~oN5Dbzg-97;?fGD6^G)a@; ze0TP?q=wMDo3nTJ%sF%a%^G@JEz@_?&Q{IV&8#hm5)-@{Gv!XV0_p$P$1k@{XbQ)| zz3?tfYY@YcLo;&{*Vs^dCwvL+7Yl%k92&IQN6Y_{5WcG&_uF0fUMD~dN6n~%HrH5F zOwGvONc*to{&L_xI0_KMk(<}RgZD(3B%b{9zWY$VN}lSlhGIB!^BR-d%eut)=p%W% z?yu+WpN|3JN*p;f%q8Z5ca-{Oj*OFj(SMJ9_7JBU%Ar9U^BBoLO)+c5d>QkH`dxhB z$e}?S{@7pQ<^84OFI~UV{VP2`rRO)_gQf0IzKA*p)cN=QeQTQaSIn*(xzgV)T0D4v E0J`IxjQ{`u diff --git a/static/img/icons/msapplication-icon-144x144.png b/static/img/icons/msapplication-icon-144x144.png deleted file mode 100644 index a7db463fe7640580ee18526375c15995b5338abd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3515 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 NAZxrGuFT9U`5!5klC}T< diff --git a/static/img/icons/mstile-144x144.png b/static/img/icons/mstile-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..0c2745c0b3e960416cfe8ac74a787b136f6b8fbe GIT binary patch literal 7213 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 G;(q{r`0%*^ literal 0 HcmV?d00001 diff --git a/static/img/icons/mstile-150x150.png b/static/img/icons/mstile-150x150.png index 8515f250ea71c08ab0d7a74abbd58ce4cf5c6760..7130a1e36b733c50556c7563149b9c3a22a58897 100644 GIT binary patch literal 7022 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 diff --git a/static/img/icons/mstile-310x150.png b/static/img/icons/mstile-310x150.png new file mode 100644 index 0000000000000000000000000000000000000000..6e0dc0a1fcef6451f75332f1256535c282e43f2c GIT binary patch literal 7644 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 Fe*x!?AjSXy literal 0 HcmV?d00001 diff --git a/static/img/icons/mstile-310x310.png b/static/img/icons/mstile-310x310.png new file mode 100644 index 0000000000000000000000000000000000000000..56d4963a632d9354efb1859ffaecf892b0abc74e GIT binary patch literal 14508 zcmeIZc{tSX_dl*A)nrTdH40fq_H4<{h_W-yP)P>aV(ddnC|h9D6H@au$=rm-ds&HH%B-@A0+Z$SqGGh-T>KoJ_6$Kf(jMFI|#GeiINIM7yE(<-P_4lw_BtX-x_2TKY@tJU(k#Q3x65@Sy_AF z*1~9UT?FRvtq$#jtA;MEO%W6)sno~4Gp)$ckc~GxM9R!LAl3i<_diwxkF6YoIcRcZ z3gmnvuu29hdS>z1HJuygNixRKx(Z#K#xiE{H5nE)OE`-$+hTFclDGK?OEq@W%lu>h z@_AbFdGDi4XEMrWf@{P^JlFc7x)NgOMTw;eAv$sVXQjxm{f1+|B4>|R zKlkZ|zTEsd5N=}Jjdm%{W7Uh!aCF;1(8naK!d&##O443jD(8k&!wA9+WdZGeZZsXk z@*I*h^rD&Xdth)v5}^s^*ivwdaG#{mkodw?jDO^5C*8gofwrN{cA-gx#+@1Qm_1?O zi*jPBj~~jmrlc;8E`!`8Vz0uw6szMC8iMdEX1`zi2Y3291`HKR8TithIIw(UF)V7B z5NzrlJTdyVF=@)I27Zlw(cN(8XXS&Be#SJ64DEC%A#zNtA$*FM+jr(ks#VF0U0m^` zj<9&qIe3=9gj8bcLS^9!5P?38dlW1Z&2Zs2Jq^Rf z%=bwbTk1p$`XV7JL_hV_643&-PCB9_*{Pw7YaI;J5Cp>nGv9ACCN|dE5a|0XyD$?^ zGi-DU?jtmKrIs2I<7GQYCYmtFtfh(rhtDN6^1@J;WoZ;8@SPt^zKeM7w0?ABYX2Hd z>nZ4CdUA|A)JbB(I@qY6ONEa#M3DnX2Yooiyx;bTV7 zL=w1yG_B2)V%bx+k&v%TFmWaLsFSy?cO3=(*hCE{&x;@_J1|FA@hz1;MhFTrQ@Wh7DpA6sd89$Nwm zG&1ud!o|p(q?#NV?Dwf#V&pmCWo>>^*Gqx!A}?pY*T;URTIFJQz|ygo*(L@dmyij4 z8RdA_V;OwybXRqN2k6D%V)T-wEJwjk^0odJb15aVmZcs)D+|8^t=O_49&5iG_)=wl z8dJf%xP^B;t*s``r);^j_OkJunf33nP_)QO=|O`qG&T)8{9WLH8}hmIAfQ?-_M}+| zVyf9(yrx%RzBt^9<2VMqWc)68Nxc&svw~PT#nh-J2~FMXb!0T8Di9kWhjnl=*mwZ% ze+}hRHP4XKeW9ZEGRG{X_AG2UuwZMSK()(9V+ho1&OPraH@jkWEbN)YsR*d+r=#~d z-Ac+l@Y^H)xQkLpXabj%>ynoG4MO&hiyAK-C^*@wj|M(`u@e| zX$1?46CEa1MqOJLxmdr2$_M$tOb;|YkBI=!>pLg2e^IP-+D|I7gVXsyl3X@dpv32a z?tX9PNARj?uxkjdgbPHjb41KWD9}Pl=sx(Vpo9Ai5sWd z>AplF<0IB2lYKHMaFL~OTf(y+@xuS({Sh_##g)|BzwsH>*(7C~1{ z<@k2&?C}*{6$jF*sHGmwf^`7~V@hgjrV!G<#4<3B;=+B?J$f_RQqNCaYHI;w?S1F@ z+uxeHX+J7|S_4ILvw&^2RUGD?r{m4Umn*n;hi~a4;E6aQQhD!0oyXtm7ck4fm4Yc` zI{l-Xi5i}ig!A!a9!=ZqxsNonW2c~PP!Iz$VW@x$L&bR4$uzm2h7`N|=oy~ZL0;t^ zyLmp8Dgxh4F7<{PKZU(i7|Qa(5CKGn9VBE(3>;LfPd7h_WukNLlERP9RBsN0w3e== zq4V)gz za*eEZRi^IZ=Km_evP0?PpJhyLUm#OL-FybC@Dd4$GDJ(sc>%?S;~sp=7X2FWkFs)F@7j+y=`Ennf7KI=mdRnx|Ud!>d9RW*DF9m%6Ib^5WSWsUVSP7_1?-bG4hx|(S8F@74IH%%p zzkKZQPLfKsI2dlC;*h2z)Y#J#SFdl9;vU#KW~je=aDH}L?lpGs-~*~EQeVHx_ltV= z+_9k-z%MTYzdRqkWGdjqBxPu%gm^fX^n3quj_FwrY^jG*pdd#GscAqF{<%E{r2xzo z0}eoT6uI}^&44)Ff zuTuRU=+cZ;zPml0nT+4nER~Dj*gu^!3_^>~JX7rN3m&W!EEB2giR|;0g_?{KG>lB` zbjH$|@7FD~Zk|7$$^D>JPQicjMb=Gy733hBH9SO+B`oiS1W4|70j-HV%{>4x- zxHpZu&`#;O^T;CD;pPP`$Wp$X>E5-L<B!77(s( zt8hlvP`Ly;>^VNcIkG$#`!)N1C#Fq@fbJ83gWB6=X1juhM zJxiRKYs|jnOzw=v#It{?W0J;UZXzX;H?u%CzOHU}C)D2}JOZS0{^B@=XNhrMlYYpL&%-jnWt|8l59;LOkjL8Sgf6R8f5;~oQ$(wC zlsB<1Bu3< z6MR7{YWrKSJeUqUJ+U?k?r^#HH@9mU2*l}foDomIbE2w;fXeN_N0~mPjWw#6b;{z6 zMRr4uKm5|a;3qiblYP4Fu7Fgu?^;}jI5O1hPm%gUA7Mn>>UK0sti{*EWDf~e9*5#C zMtp5zEgfsL$}JZm~@S zJ&Nz~>RCo22K8re0iVADy!ilSYGO}q-jw>rcV`EV(JeLAGSU{ebvBpD+oH>tzGgqB zFlb9>NwQoebqKqXoYM57VMTJ=!6XN|Z5>a|&PCXgUfQaFI+FTBIi$zN?R}4I`2*~| zY8>;Jhc8UPzr$tMm&CS85*;kYR3IOzOFwz4>#3;?GWGAnc_x07Jqnac*t-%4{jHR0 z;V9I8{cyi)`N6#u%h1`Tk`|*6E+kj5rHXpy`-j6(5$%q=47p9(N05xT8?9F?M(`+M8%`J7_(0oQK$`nK2u! z%}|cOEiFx_y6(+>v^zYEZFw5_V;8+-a%oF+V~24wKJI6-MlYMgQ01DS@)_I*Zq?T7Va1Lk4C!)DRK1#T&m z6~%T``=M4+a2E=BA#X3Jz$oh-H57xFpguhc79=DWgO4Vt8UOH$UiW-rjWk3$i5@s@ zY3_AAvl?tvJJ2mMEE?QU|MXnhv2uIQA7y_}PbD-JEMxxOrTVT~ z-hEo6?#*oLy_qJnQ$Akcs@UZhow`kHtX%yXhsBk{l}PRW7Szpv{teFg4~CHkLG~n~ z+T26kX9?X?E;}O&4b!G|E^K7j5}f3q6C_;U7VXn*BA&XbX}xM+ZD3p_Xq`w%VpI>7 zyc#p~w9}ebVB+JicNEzWkL@2*JETc}BkCO$hu!gZo-jyofJZ|~eRM=V3)y@@egYZQ zIb~Yc5HXeLyY{vC-uuO-7}DOT^4hrXYDOJpOI@#8It33dLVKZJ&Gx8nbQm~%0#zJ3Nes-)?R5Mf@~Kg!wWQix zD(;0~!)B+5g2+9lgPkopLaWC*Qr%aAJ$g#{%52kF!&}u>AC)d2pa1fFLJ7Ap;6L#6?cm}#I zBV0id6q&qzW(0GIg;uubm~YjL+oZX>P9Q0i3*%Nk+-B!nFKtx-Jkw9ZeKW}zU)qJY zaUE-Nh%Bj4CQs3)ZFI~BpWJ>nlFO3e)7@QSCEz){&9#9whu<&0(*+|<3t~K;4wv0` z%TBe>fvbzVajJf{E@H`e)KCV5>3>7^8y>st?Yc47yS3%fg_hx+#m6l?yu71-{?t!!4+J^5W!2BR*wOBR%0>(%Zw<`#yS)z$;Y%h| z{tNFs@JdC?CgVS!L!MnX8sVDOp?{b&$%0@`-4M4_axHZX5DF1wEzfq{UH>@(Zl<**=ZekLcYx#a0ZAI5L=&8b ztnQSJ1t|c@ar{}06{e*nkjSDhcJB0!Q_tp`spbIZ$fTcX2GqN6X|-+()weaQF-rBR z`tu~~Hk1pWlYu|_bQ=B$79?pSp4PWSSswXpTct(W>li7+ZwqYMOOFzB9fj%zPpFB9 zd5@LMEaed)Cfn+=vqNlW=olCnBW5Z}1Lj<^Xe)F*pO^!e_LaOv+)>jAY?OC;K^Z<4 z>4ZWVJkz=`dTrrGaesCo4@6!LbS5KIIIAy(K@i@R_<7@=U4Hgk0{a+@cv`3WQqQ-) zUb3Vo>MV#^i<>aYqv18%o+>1g>Ab$4 z7TFbU?Z!WLI~UsviYVq!f(KGR-0Y6;+{jsdwA;d;rD6<`shPs;q(*-6O*i)XfQCbLY zNZ)D80vi-sm=fzWk^b1x%uRLKw(|9LFNU?RxlMW|Dgx~K^!M#CQJ~89ejeQs3=`y6g^i@kLfduXl=syN|Eg0a%!t_z z8DK}>LdxA^v3Kv^*Kx?tM?3d@Yku^Ij|R-l#aCQ2c%fgQY#z)6LGkYI@1rN*xDO;x z{e6_PHgW7aI4rSiflB^AER^Uwj`e?nm(K91GVWa@qp*styl?l=G%vv_f-L4l>8C_K zygr?L)<5C#pwqpl>+d5kKAI!#8g$E-&$#)%U*~;i{ZHg$;Ira^{!EKrrV#|rbX~IK z@|Js*1Ubm!`W*K^A@9$H!w`;*zOH|*-^LjRVXp0*d^7OhYhGcT5djU@J?nBS5Yl@t zWL{joSpUn4h4(^z&RW?RHn7gn^BAM#sW9!S|9#rqDQfG<$yaxpLhlIu-fh;~*nLV> z|KCI@fFF9l00z79wXN-Om|*&^3O|`v1cIIh_#(ZyWx*0r1oS|!x|UM|gG8H^GxKN7 zcK-bq#d(b$PP$-IlLmxUs68n>q&#|e{<{i|0Wk6{oVXoDQFUoXXoz~|Sy;qLdZs_i zh|kg-|5EZ38=c6|-_x!!6D_(q>Sq}kif@Un>`c_B+e2}*k99ns(5}B_#6SiyoKjSN zwxMR~9@PSxwzGTK^xq?fqs~N0>yuCfzol<9hZ2H14U@u9$&;g8?ye!Hv& z_c#V>sWj*>MNx5Bv>Vi5FxDVN@k>s?ojcc`>u5dyAu#jA_rJAPCXb*fPAk;E`6`Tg zltmGr>a6v;+yr-dx{^0DW5*}s6epB0W$gFwtw3T+Up989W%}X7Y^8rA<;+yivI=&t zDcG7N4pxwdpP3;YRwd1TpZ$+snGs8u2F@~As$yp5=H|G;`AU5K-)fh1&6#nFGx^(m zm4;PbO|7isOM23OeG0HDkTd+8{B*`MucG3n@H1+~ir2q<_Uqd{*O#yTU@6b}d?2%e z7A01%=`-c~mxnyVW{-0$9VluR3%PM^s!Qfy7|j{1>V8&Wt!*1 z5)b~~u5&dfy`-3Bz%JhNnIu$g&M0NCG$lv85BO;7=>^U$sJt8d9F6T|tq#3m<2#kB zhwjt#8{w(ix60w=!2!_}S?*6F^zD}bt_F3b2FEj$KUal%3Z)E5bXBsCR`sJ1Cqq4E z%8IFw06~Iu>6as}%h> z&{pZ?+o0D?KlefYt-TB;JV%V5KpL*T^=rD>yb^T(`m%qZkv?&H1%QB1SDVSr*%j~T` zxE+{P=%XBTgK!?9E;6M+I#vXvT0O=Qdu`^YAEK7=?D9z6S8`KKq0gEj4|?^|!Y;J4 zw1`;l@n5+F)O9@bKzCY|9rZwc8dG2o;En!Q--E(KHhp{-%joo7_iHmv+;{6rEQAVm zdj#g2&Q|#TaF~)s9F`xbvMwRl{UZ9$%<{I=4d@Cr+7tGciEG5xq-$Prl;Pdsv4kN8 z0eqVu7fOq%eDx7w4Hv+8wdXtHYMQ_V5<0ct1>5#M#yGxT+LT$n{I6_Dlk<(*PKa}4 z^7Qv0)b$OU>9nDU%mI_|2N;N!rsosyhO$XQW^z*0dbH(N^f8g80|ocBS|8DxOKA#! zIiG;W1@nuNu}2)MGh05Ze}%wZP(yes-C#@l?h-;9qz&@q?&HMOJmNv~Ca2Tzar({C z!en3eJd-J3h1Mr6plp%c(GwPLLZ$0Awml&(piF_tmPoISscC>w^po_oLF^ZLX!KqMO`NzV}Q68&#sd|l_kaWXoAkaJX=j+(smlUAoouC zjb-?)`O2TY8oPVWSQtY1|tQ06x*8_$1ltJ z{X9?n^$oH)&7t_Qvf8Ob#LsszuZo=t6+W+lRJI)-mR~e_jDEaq5$caXb$6TDF=9X?#f?-nwB0o^tn0y(hg>!~x zvN(aCmEFC1iETO{&FV*)PUyyzK&POV09#6Hf}%7?hZUE_t%<=q!g^!FdAJQw)++%~ zdma0!7Fu;pE{6jtgcn?O9UIAi^mbI2&lS^p7FWH`dOC8qMqMEfjOnnkw zwS5G@rzuE-E==3<&@U*!;uB}SmF$NGwk`6B-tPCUd%k%0Ip^vI!^_tpzaZryj-`}y z)7`Jr@Y)%_dx}g~D6OW#i#)MpeTlCj?SB2{ZK`YaZA}0XTv;3H#7zl6u&syaIVrHL zY(*V4^pLpJ<7AUL_I+o^iwCym~eYf9&4YmedAo2x*{TdI%#Yq!Ha#r5m!d+u8vhbpc?1!#J!}{mLBGo}12*B)tDLU&U^JQ2%0q%^Z=_ z#ns!q;$T5Iv8G2aHqSzaDjErSbg5XPn607gZUHCvNzj0Is9xMIYP6;ng!*n@Uux_A zRB_>^4F6~%zg&syY8%$-ok6nsFhD4M_!NKv}#1YoKCS=>y>^L)O?otOXSH$ z@@WHdOv`mb1#;VK)Pn3}ZDYK2^=~a>w`cDX);_-2DY1#6gBh2b(43k*TCs+z|K=zk zwfJIs0W}@9k*!Wj=;L;pW}}G=13iClD#t1jw3ZuJ=G;VKhku^@3N<_U;{j=O^)@6H zGhX`s_18ly&Em4)y9kd=t8tP5$H9Abd%ROB|7{Ye*#NWz(+ygc_ zefL<(FI&$)R4U)gN&_h0W^Pp{-*mZC!R8n#WoyK`dsIV6iC&?-I0{QXP0sf=qJCU? zKeX36H_5+{dx_oj3j1Q^5Iy}38b8F)OOwVaJ4@Ws$utZA4Va)cD&)7ndL}?C=gc#$ zKYaPcE%n01t-D>zZ}{@+Z%gKtW;e8dT?Fm%8Bh^$n>CbF6n>wYt&BI*rLNqJiBSI$ zNtSyc#y%GzDgw2S5equJ0k&kDh4h=2TZ}n=%=_ZwXZ{1yqymZwV3FYVE?Z+ILQ$Jxkx$c$jI(k6Usu

X;NcZ6Tm2SVrO2Hm=_By5+S#doPOf_ePU#5a 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 RNIBB5p{|JzPU}wC{{l$92nhfH literal 0 HcmV?d00001 diff --git a/static/img/icons/mstile-70x70.png b/static/img/icons/mstile-70x70.png new file mode 100644 index 0000000000000000000000000000000000000000..556d2cd1d4be6f75c133316f599b5bea99794b8b GIT binary patch literal 5005 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 Y76lpn@EJG((*!_OQB$GpnMLq_0lMaiS^xk5 literal 0 HcmV?d00001 diff --git a/static/img/icons/safari-pinned-tab.svg b/static/img/icons/safari-pinned-tab.svg new file mode 100644 index 00000000..0119c21a --- /dev/null +++ b/static/img/icons/safari-pinned-tab.svg @@ -0,0 +1,42 @@ + + + + +Created by potrace 1.11, written by Peter Selinger 2001-2013 + + + + + + + + + + diff --git a/static/manifest.json b/static/manifest.json index 9d5b3577..4977df5b 100644 --- a/static/manifest.json +++ b/static/manifest.json @@ -16,5 +16,5 @@ "start_url": "{{ .BaseURL }}/", "display": "standalone", "background_color": "#ffffff", - "theme_color": "#2979ff" + "theme_color": "#455a64" } diff --git a/static/share/404.html b/static/share/404.html index 53359493..563420bb 100644 --- a/static/share/404.html +++ b/static/share/404.html @@ -9,13 +9,13 @@ - + - - - + + + - - -

404 Not Found

- - diff --git a/static/share/index.html b/static/share/index.html deleted file mode 100644 index 4af67378..00000000 --- a/static/share/index.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - {{ .File.Name }} - - - - - - - - - - - - - - - - - -
Download {{ if .File.IsDir }}Folder{{ else }}File{{ end }}
-
- {{ if .File.IsDir -}} - - - - - {{ else -}} - - - - - {{ end -}} -

{{ .File.Name }}

-
-
- - diff --git a/vue.config.js b/vue.config.js new file mode 100644 index 00000000..4a9f1e07 --- /dev/null +++ b/vue.config.js @@ -0,0 +1,4 @@ +module.exports = { + runtimeCompiler: true, + baseUrl: '[{[ .StaticURL ]}]' +} \ No newline at end of file From 95fc3dfdfbe21b1d55538add66bf0d5f38197320 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 5 Jan 2019 16:24:09 +0000 Subject: [PATCH 0054/1487] feat: update i18n License: MIT Signed-off-by: Henrique Dias --- src/i18n/ar.json | 26 ++++++++++++---------- src/i18n/de.json | 26 ++++++++++++---------- src/i18n/es.json | 54 +++++++++++++++++++++++---------------------- src/i18n/fr.json | 26 ++++++++++++---------- src/i18n/it.json | 26 ++++++++++++---------- src/i18n/ja.json | 26 ++++++++++++---------- src/i18n/ko.json | 26 ++++++++++++---------- src/i18n/pl.json | 26 ++++++++++++---------- src/i18n/pt-br.json | 26 ++++++++++++---------- src/i18n/pt.json | 26 ++++++++++++---------- src/i18n/ru.json | 26 ++++++++++++---------- src/i18n/zh-cn.json | 26 ++++++++++++---------- src/i18n/zh-tw.json | 26 ++++++++++++---------- 13 files changed, 196 insertions(+), 170 deletions(-) diff --git a/src/i18n/ar.json b/src/i18n/ar.json index 47e23fb2..407497fe 100644 --- a/src/i18n/ar.json +++ b/src/i18n/ar.json @@ -1,6 +1,7 @@ { "permanent": "دائم", "buttons": { + "shell": "Toggle shell", "cancel": "إلغاء", "close": "إغلاق", "copy": "نسخ", @@ -37,7 +38,7 @@ "linkCopied": "تم نسخ الملف" }, "errors": { - "forbidden": "أنت غير مرحب بك هنا!.", + "forbidden": "You don't have permissions to access this.", "internal": "لقد حدث خطأ ما.", "notFound": "لا يمكن الوصول لهذا المحتوى." }, @@ -167,14 +168,15 @@ "insertRegex": "Insert regex expression", "insertPath": "Insert the path", "userUpdated": "تم تعديل المستخدم", - "generalSettings": "General settings", "userDefaults": "User default settings", "defaultUserDescription": "This are the default settings for new users.", + "executeOnShell": "Execute on shell", + "executeOnShellDescription": "By default, File Browser executes the commands by calling their binaries directly. If you want to run them on a shell instead (such as Bash or PowerShell), you can define it here with the required arguments and flags. If set, the command you execute will be appended as an argument. This apply to both user commands and event hooks.", "perm": { "create": "Create files and directories", "delete": "Delete files and directories", "download": "Download", - "edit": "Edit files", + "modify": "Edit files", "execute": "Execute commands", "rename": "Rename or move files and directories", "share": "Share files" @@ -182,6 +184,8 @@ }, "sidebar": { "help": "مساعدة", + "login": "Login", + "signup": "Signup", "logout": "تسجيل خروج", "myFiles": "ملفاتي", "newFile": "ملف جديد", @@ -194,18 +198,12 @@ "search": { "images": "الصور", "music": "الموسيقى", - "notSupportedCommand": "هذا الأمر غير متاح.", "pdf": "PDF", - "pressToExecute": "إغضط زر Enter للتنفيذ.", - "pressToSearch": "إضغط زر Enter للبحث.", - "search": "البحث...", - "searchOrCommand": "إبحث او قم بتنفيذ أمر...", - "searchOrSupportedCommand": "إبحث او قم باضافة بادئة '$' واستخدم واحد من الاوامر الخاصة بك:", - "typeCommand": "أكتب واضغط Enter للتنفيذ.", - "typeSearch": "أكتب واضغط Enter للبحث.", "types": "الأنواع", "video": "فيديوهات", - "writeToSearch": "أكتب هنا للبحث" + "search": "البحث...", + "typeToSearch": "Type to search...", + "pressToSearch": "Press enter to search..." }, "languages": { "ar": "العربية", @@ -229,5 +227,9 @@ "minutes": "دقائق", "hours": "ساعات", "days": "أيام" + }, + "download": { + "downloadFile": "Download File", + "downloadFolder": "Download Folder" } } \ No newline at end of file diff --git a/src/i18n/de.json b/src/i18n/de.json index bcd53f45..d31e567c 100644 --- a/src/i18n/de.json +++ b/src/i18n/de.json @@ -1,6 +1,7 @@ { "permanent": "Permanent", "buttons": { + "shell": "Toggle shell", "cancel": "Abbrechen", "close": "Schließen", "copy": "Kopieren", @@ -37,7 +38,7 @@ "linkCopied": "Verweis wurde kopiert !" }, "errors": { - "forbidden": "Sie verfügen nicht über die nötigen Rechte!", + "forbidden": "You don't have permissions to access this.", "internal": "Etwas ist schief gelaufen.", "notFound": "Dieser Ort kann nicht angezeigt werden." }, @@ -167,14 +168,15 @@ "insertRegex": "Insert regex expression", "insertPath": "Insert the path", "userUpdated": "Benutzer aktualisiert!", - "generalSettings": "General settings", "userDefaults": "User default settings", "defaultUserDescription": "This are the default settings for new users.", + "executeOnShell": "Execute on shell", + "executeOnShellDescription": "By default, File Browser executes the commands by calling their binaries directly. If you want to run them on a shell instead (such as Bash or PowerShell), you can define it here with the required arguments and flags. If set, the command you execute will be appended as an argument. This apply to both user commands and event hooks.", "perm": { "create": "Create files and directories", "delete": "Delete files and directories", "download": "Download", - "edit": "Edit files", + "modify": "Edit files", "execute": "Execute commands", "rename": "Rename or move files and directories", "share": "Share files" @@ -182,6 +184,8 @@ }, "sidebar": { "help": "Hilfe", + "login": "Login", + "signup": "Signup", "logout": "Logout", "myFiles": "Meine Dateien", "newFile": "Neue Datei", @@ -194,18 +198,12 @@ "search": { "images": "Bilder", "music": "Musik", - "notSupportedCommand": "This is a not supported command.", "pdf": "PDF", - "pressToExecute": "Drücken Sie Enter zum Ausführen.", - "pressToSearch": "Drücken Sie Enter zum Suchen.", - "search": "Suche...", - "searchOrCommand": "Suche oder führe Befehl aus...", - "searchOrSupportedCommand": "Suche oder nutze eines Ihrer verfügbaren Befehle:", - "typeCommand": "Type and press enter to execute.", - "typeSearch": "Type and press enter to search.", "types": "Typen", "video": "Video", - "writeToSearch": "Hier schreiben zum Suchen" + "search": "Suche...", + "typeToSearch": "Type to search...", + "pressToSearch": "Press enter to search..." }, "languages": { "ar": "العربية", @@ -229,5 +227,9 @@ "minutes": "Minuten", "hours": "Stunden", "days": "Tage" + }, + "download": { + "downloadFile": "Download File", + "downloadFolder": "Download Folder" } } \ No newline at end of file diff --git a/src/i18n/es.json b/src/i18n/es.json index 85baee15..66d63414 100644 --- a/src/i18n/es.json +++ b/src/i18n/es.json @@ -1,6 +1,7 @@ { "permanent": "Permanente", "buttons": { + "shell": "Toggle shell", "cancel": "Cancelar", "close": "Cerrar", "copy": "Copiar", @@ -37,7 +38,7 @@ "linkCopied": "¡Link copiado!" }, "errors": { - "forbidden": "No eres bienvenido aquí.", + "forbidden": "You don't have permissions to access this.", "internal": "La verdad es que algo ha ido mal.", "notFound": "No se puede acceder a este lugar." }, @@ -75,11 +76,11 @@ }, "login": { "password": "Contraseña", - "passwordConfirm": "Password Confirmation", + "passwordConfirm": "Confirmación de contraseña", "submit": "Iniciar sesión", - "createAnAccount": "Create an account", + "createAnAccount": "Crear una cuenta", "loginInstead": "Already have an account", - "passwordsDontMatch": "Passwords don't match", + "passwordsDontMatch": "Las contraseñas no coinciden", "usernameTaken": "Username already taken", "signup": "Signup", "username": "Usuario", @@ -120,9 +121,9 @@ "settings": { "instanceName": "Instance name", "brandingDirectoryPath": "Branding directory path", - "documentation": "documentation", + "documentation": "documentación", "branding": "Branding", - "disableExternalLinks": "Disable external links (except documentation)", + "disableExternalLinks": "Deshabilitar enlaces externos (excepto documentación)", "brandingHelp": "You can costumize how your File Browser instance looks and feels by changing its name, replacing the logo, adding custom styles and even disable external links to GitHub.\nFor more information about custom branding, please check out the {0}.", "admin": "Admin", "administrator": "Administrador", @@ -132,7 +133,7 @@ "allowPublish": "Publicar nuevos posts y páginas", "avoidChanges": "(dejar en blanco para evitar cambios)", "changePassword": "Cambiar contraseña", - "commandRunner": "Command runner", + "commandRunner": "Executor de comandos", "commandRunnerHelp": "Here you can set commands that are executed in the named events. You must write one per line. The environment variables {0} and {1} will be available, being {0} relative to {1}. For more information about this feature and the available environment variables, please read the {2}.", "commandsUpdated": "¡Comandos actualizados!", "customStylesheet": "Modificar hoja de estilos", @@ -163,25 +164,28 @@ "username": "Usuario", "users": "Usuarios", "globalRules": "This is a global set of allow and disallow rules. They apply to every user. You can define specific rules on each user's settings to override this ones.", - "allowSignup": "Allow users to signup", + "allowSignup": "Permitir registro de usuarios", "insertRegex": "Insert regex expression", - "insertPath": "Insert the path", + "insertPath": "Introduce la ruta", "userUpdated": "¡Usuario actualizado!", - "generalSettings": "General settings", - "userDefaults": "User default settings", + "userDefaults": "Configuración de usuario por defecto", "defaultUserDescription": "This are the default settings for new users.", + "executeOnShell": "Execute on shell", + "executeOnShellDescription": "By default, File Browser executes the commands by calling their binaries directly. If you want to run them on a shell instead (such as Bash or PowerShell), you can define it here with the required arguments and flags. If set, the command you execute will be appended as an argument. This apply to both user commands and event hooks.", "perm": { - "create": "Create files and directories", - "delete": "Delete files and directories", - "download": "Download", - "edit": "Edit files", - "execute": "Execute commands", + "create": "Crear ficheros y directorios", + "delete": "Eliminar ficheros y directorios", + "download": "Descargar", + "modify": "Edit files", + "execute": "Executar comandos", "rename": "Rename or move files and directories", - "share": "Share files" + "share": "Compartir ficheros" } }, "sidebar": { "help": "Ayuda", + "login": "Login", + "signup": "Signup", "logout": "Cerrar sesión", "myFiles": "Mis archivos", "newFile": "Nuevo archivo", @@ -194,18 +198,12 @@ "search": { "images": "Images", "music": "Música", - "notSupportedCommand": "This is a not supported command.", "pdf": "PDF", - "pressToExecute": "Presiona enter para ejecutar.", - "pressToSearch": "Presiona enter para buscar.", - "search": "Buscar...", - "searchOrCommand": "Buscar o ejecutar un comando...", - "searchOrSupportedCommand": "Buscar o ejecutar uno de los comandos soportados:", - "typeCommand": "Type and press enter to execute.", - "typeSearch": "Type and press enter to search.", "types": "Tipos", "video": "Vídeo", - "writeToSearch": "Escribe aquí para buscar" + "search": "Buscar...", + "typeToSearch": "Type to search...", + "pressToSearch": "Press enter to search..." }, "languages": { "ar": "العربية", @@ -229,5 +227,9 @@ "minutes": "Minutos", "hours": "Horas", "days": "Días" + }, + "download": { + "downloadFile": "Download File", + "downloadFolder": "Download Folder" } } \ No newline at end of file diff --git a/src/i18n/fr.json b/src/i18n/fr.json index 126b792a..f5d7d88f 100644 --- a/src/i18n/fr.json +++ b/src/i18n/fr.json @@ -1,6 +1,7 @@ { "permanent": "Permanent", "buttons": { + "shell": "Toggle shell", "cancel": "Annuler", "close": "Fermer", "copy": "Copier", @@ -37,7 +38,7 @@ "linkCopied": "Link copied!" }, "errors": { - "forbidden": "Vous n'êtes pas autorisé à être ici.", + "forbidden": "You don't have permissions to access this.", "internal": "Aïe ! Quelque chose s'est mal passé.", "notFound": "Impossible d'accéder à cet emplacement." }, @@ -167,14 +168,15 @@ "insertRegex": "Insert regex expression", "insertPath": "Insert the path", "userUpdated": "Utilisateur mis à jour !", - "generalSettings": "General settings", "userDefaults": "User default settings", "defaultUserDescription": "This are the default settings for new users.", + "executeOnShell": "Execute on shell", + "executeOnShellDescription": "By default, File Browser executes the commands by calling their binaries directly. If you want to run them on a shell instead (such as Bash or PowerShell), you can define it here with the required arguments and flags. If set, the command you execute will be appended as an argument. This apply to both user commands and event hooks.", "perm": { "create": "Create files and directories", "delete": "Delete files and directories", "download": "Download", - "edit": "Edit files", + "modify": "Edit files", "execute": "Execute commands", "rename": "Rename or move files and directories", "share": "Share files" @@ -182,6 +184,8 @@ }, "sidebar": { "help": "Aide", + "login": "Login", + "signup": "Signup", "logout": "Se déconnecter", "myFiles": "Mes fichiers", "newFile": "Nouveau fichier", @@ -194,18 +198,12 @@ "search": { "images": "Images", "music": "Musique", - "notSupportedCommand": "This is a not supported command.", "pdf": "PDF", - "pressToExecute": "Appuyez sur Entrée pour exécuter", - "pressToSearch": "Appuyez sur Entrée pour lancer la recherche", - "search": "Recherche en cours...", - "searchOrCommand": "Rechercher ou exécuter une commande...", - "searchOrSupportedCommand": "Lancez une recherche ou exécutez une commande parmis les suivantes :", - "typeCommand": "Type and press enter to execute.", - "typeSearch": "Type and press enter to search.", "types": "Types", "video": "Video", - "writeToSearch": "Ecrivez ici pour lancer une recherche" + "search": "Recherche en cours...", + "typeToSearch": "Type to search...", + "pressToSearch": "Press enter to search..." }, "languages": { "ar": "العربية", @@ -229,5 +227,9 @@ "minutes": "Minutes", "hours": "Heures", "days": "Jours" + }, + "download": { + "downloadFile": "Download File", + "downloadFolder": "Download Folder" } } \ No newline at end of file diff --git a/src/i18n/it.json b/src/i18n/it.json index 9e066b73..9537ab87 100644 --- a/src/i18n/it.json +++ b/src/i18n/it.json @@ -1,6 +1,7 @@ { "permanent": "Permanente", "buttons": { + "shell": "Toggle shell", "cancel": "Annulla", "close": "Chiudi", "copy": "Copia", @@ -37,7 +38,7 @@ "linkCopied": "Link copiato!" }, "errors": { - "forbidden": "Spiecente, sembra che tu non abbia i permessi per accedere a questa pagina.", + "forbidden": "You don't have permissions to access this.", "internal": "Qualcosa è andato veramente male.", "notFound": "Questo percorso non può essere raggiunto." }, @@ -167,14 +168,15 @@ "insertRegex": "Insert regex expression", "insertPath": "Insert the path", "userUpdated": "Utente aggiornato!", - "generalSettings": "General settings", "userDefaults": "User default settings", "defaultUserDescription": "This are the default settings for new users.", + "executeOnShell": "Execute on shell", + "executeOnShellDescription": "By default, File Browser executes the commands by calling their binaries directly. If you want to run them on a shell instead (such as Bash or PowerShell), you can define it here with the required arguments and flags. If set, the command you execute will be appended as an argument. This apply to both user commands and event hooks.", "perm": { "create": "Create files and directories", "delete": "Delete files and directories", "download": "Download", - "edit": "Edit files", + "modify": "Edit files", "execute": "Execute commands", "rename": "Rename or move files and directories", "share": "Share files" @@ -182,6 +184,8 @@ }, "sidebar": { "help": "Aiuto", + "login": "Login", + "signup": "Signup", "logout": "Esci", "myFiles": "I miei file", "newFile": "Nuovo file", @@ -194,18 +198,12 @@ "search": { "images": "Immagini", "music": "Musica", - "notSupportedCommand": "Questo no nè un comando supportato.", "pdf": "PDF", - "pressToExecute": "Premi invio per eseguire.", - "pressToSearch": "Permi invio per cercare.", - "search": "Cerca...", - "searchOrCommand": "Cerca o esegui un comando...", - "searchOrSupportedCommand": "Cerca o anteponi '$' e usa uno dei comandi supportati:", - "typeCommand": "Scrivi e premi invio per eseguire.", - "typeSearch": "Scrivi e premi invio per cercare.", "types": "Tipi", "video": "Video", - "writeToSearch": "Scrivi qui per cercare" + "search": "Cerca...", + "typeToSearch": "Type to search...", + "pressToSearch": "Press enter to search..." }, "languages": { "ar": "العربية", @@ -229,5 +227,9 @@ "minutes": "Minuti", "hours": "Ore", "days": "Giorni" + }, + "download": { + "downloadFile": "Download File", + "downloadFolder": "Download Folder" } } \ No newline at end of file diff --git a/src/i18n/ja.json b/src/i18n/ja.json index 421defe9..30e040ca 100644 --- a/src/i18n/ja.json +++ b/src/i18n/ja.json @@ -1,6 +1,7 @@ { "permanent": "永久", "buttons": { + "shell": "Toggle shell", "cancel": "キャンセル", "close": "閉じる", "copy": "コピー", @@ -37,7 +38,7 @@ "linkCopied": "リンクがコピーされました!" }, "errors": { - "forbidden": "アクセスが拒否されました。", + "forbidden": "You don't have permissions to access this.", "internal": "内部エラーが発生しました。", "notFound": "リソースが見つからなりませんでした。" }, @@ -167,14 +168,15 @@ "insertRegex": "Insert regex expression", "insertPath": "Insert the path", "userUpdated": "ユーザーは更新されました!", - "generalSettings": "General settings", "userDefaults": "User default settings", "defaultUserDescription": "This are the default settings for new users.", + "executeOnShell": "Execute on shell", + "executeOnShellDescription": "By default, File Browser executes the commands by calling their binaries directly. If you want to run them on a shell instead (such as Bash or PowerShell), you can define it here with the required arguments and flags. If set, the command you execute will be appended as an argument. This apply to both user commands and event hooks.", "perm": { "create": "Create files and directories", "delete": "Delete files and directories", "download": "Download", - "edit": "Edit files", + "modify": "Edit files", "execute": "Execute commands", "rename": "Rename or move files and directories", "share": "Share files" @@ -182,6 +184,8 @@ }, "sidebar": { "help": "ヘルプ", + "login": "Login", + "signup": "Signup", "logout": "ログアウト", "myFiles": "私のファイル", "newFile": "新しいファイルを作成", @@ -194,18 +198,12 @@ "search": { "images": "画像", "music": "音楽", - "notSupportedCommand": "This is a not supported command.", "pdf": "PDF", - "pressToExecute": "Enter を押して実行します。", - "pressToSearch": "Enter を押して検索します。", - "search": "検索...", - "searchOrCommand": "コマンドを検索または実行します。", - "searchOrSupportedCommand": "サポートしているコマンドを検索または実行します:", - "typeCommand": "Type and press enter to execute.", - "typeSearch": "Type and press enter to search.", "types": "種類", "video": "ビデオ", - "writeToSearch": "ここにキーワードを入力してください" + "search": "検索...", + "typeToSearch": "Type to search...", + "pressToSearch": "Press enter to search..." }, "languages": { "ar": "العربية", @@ -229,5 +227,9 @@ "minutes": "分", "hours": "時間", "days": "日" + }, + "download": { + "downloadFile": "Download File", + "downloadFolder": "Download Folder" } } \ No newline at end of file diff --git a/src/i18n/ko.json b/src/i18n/ko.json index e18ceabc..466daa51 100644 --- a/src/i18n/ko.json +++ b/src/i18n/ko.json @@ -1,6 +1,7 @@ { "permanent": "영구적인", "buttons": { + "shell": "Toggle shell", "cancel": "취소", "close": "닫기", "copy": "복사", @@ -37,7 +38,7 @@ "linkCopied": "링크가 복사되었습니다!" }, "errors": { - "forbidden": "허가되지 않은 접속입니다!", + "forbidden": "You don't have permissions to access this.", "internal": "먼가 오류가 있네요?!", "notFound": "해당 경로를 찾을 수 없습니다." }, @@ -167,14 +168,15 @@ "insertRegex": "Insert regex expression", "insertPath": "Insert the path", "userUpdated": "유저 정보 업데이트 완료!", - "generalSettings": "General settings", "userDefaults": "User default settings", "defaultUserDescription": "This are the default settings for new users.", + "executeOnShell": "Execute on shell", + "executeOnShellDescription": "By default, File Browser executes the commands by calling their binaries directly. If you want to run them on a shell instead (such as Bash or PowerShell), you can define it here with the required arguments and flags. If set, the command you execute will be appended as an argument. This apply to both user commands and event hooks.", "perm": { "create": "Create files and directories", "delete": "Delete files and directories", "download": "Download", - "edit": "Edit files", + "modify": "Edit files", "execute": "Execute commands", "rename": "Rename or move files and directories", "share": "Share files" @@ -182,6 +184,8 @@ }, "sidebar": { "help": "도움(Help)", + "login": "Login", + "signup": "Signup", "logout": "로그아웃", "myFiles": "내 파일들", "newFile": "새로운 파일", @@ -194,18 +198,12 @@ "search": { "images": "이미지", "music": "음악", - "notSupportedCommand": "지원 되지 않은 커맨드입니다.", "pdf": "PDF", - "pressToExecute": "엔터를 누르시면 실행합니다.", - "pressToSearch": "엔터를 누르시면 검색됩니다.", - "search": "검색...", - "searchOrCommand": "커맨드를 검색하거나 실행합니다...", - "searchOrSupportedCommand": "검색하거나 '$'를 앞에 붙여 지원되는 커맨드들을 사용해보세요:", - "typeCommand": "엔터를 누르시면 실행합니다.", - "typeSearch": "엔터를 누르시면 검색됩니다.", "types": "Types", "video": "비디오", - "writeToSearch": "검색하고 싶은것을 적어주세요" + "search": "검색...", + "typeToSearch": "Type to search...", + "pressToSearch": "Press enter to search..." }, "languages": { "ar": "العربية", @@ -229,5 +227,9 @@ "minutes": "분", "hours": "시", "days": "일" + }, + "download": { + "downloadFile": "Download File", + "downloadFolder": "Download Folder" } } \ No newline at end of file diff --git a/src/i18n/pl.json b/src/i18n/pl.json index 1c85b452..d758ef09 100644 --- a/src/i18n/pl.json +++ b/src/i18n/pl.json @@ -1,6 +1,7 @@ { "permanent": "Permanent", "buttons": { + "shell": "Toggle shell", "cancel": "Anuluj", "close": "Zamknij", "copy": "Kopiuj", @@ -37,7 +38,7 @@ "linkCopied": "Link Skopiowany!" }, "errors": { - "forbidden": "Nie jesteś tu mile widziany.", + "forbidden": "You don't have permissions to access this.", "internal": "Pojawił się poważny problem.", "notFound": "Ten adres nie jest poprawny." }, @@ -167,14 +168,15 @@ "insertRegex": "Insert regex expression", "insertPath": "Insert the path", "userUpdated": "Użytkownik zapisany!", - "generalSettings": "General settings", "userDefaults": "User default settings", "defaultUserDescription": "This are the default settings for new users.", + "executeOnShell": "Execute on shell", + "executeOnShellDescription": "By default, File Browser executes the commands by calling their binaries directly. If you want to run them on a shell instead (such as Bash or PowerShell), you can define it here with the required arguments and flags. If set, the command you execute will be appended as an argument. This apply to both user commands and event hooks.", "perm": { "create": "Create files and directories", "delete": "Delete files and directories", "download": "Download", - "edit": "Edit files", + "modify": "Edit files", "execute": "Execute commands", "rename": "Rename or move files and directories", "share": "Share files" @@ -182,6 +184,8 @@ }, "sidebar": { "help": "Pomoc", + "login": "Login", + "signup": "Signup", "logout": "Wyloguj", "myFiles": "Moje pliki", "newFile": "Nowy plik", @@ -194,18 +198,12 @@ "search": { "images": "Zdjęcia", "music": "Muzyka", - "notSupportedCommand": "Polecenie niedozwolone.", "pdf": "PDF", - "pressToExecute": "Naciśniej Enter aby wykonać.", - "pressToSearch": "Naciśnij Enter aby wyszukać.", - "search": "Szukaj...", - "searchOrCommand": "Szukaj lub wykonaj polecenie...", - "searchOrSupportedCommand": "Szukaj lub wpisz '$' i wybierz jedno z dostęnych poleceń:", - "typeCommand": "Wpisz i naciśnij Enter aby wykonać.", - "typeSearch": "Wpisz i naciśni Enter aby wyszukać.", "types": "Typy", "video": "Video", - "writeToSearch": "Wpisz tu aby wyszukać" + "search": "Szukaj...", + "typeToSearch": "Type to search...", + "pressToSearch": "Press enter to search..." }, "languages": { "ar": "العربية", @@ -229,5 +227,9 @@ "minutes": "Minuty", "hours": "Godziny", "days": "Dni" + }, + "download": { + "downloadFile": "Download File", + "downloadFolder": "Download Folder" } } \ No newline at end of file diff --git a/src/i18n/pt-br.json b/src/i18n/pt-br.json index 7e2b64c0..9bfa399c 100644 --- a/src/i18n/pt-br.json +++ b/src/i18n/pt-br.json @@ -1,6 +1,7 @@ { "permanent": "Permanente", "buttons": { + "shell": "Toggle shell", "cancel": "Cancelar", "close": "Fechar", "copy": "Copiar", @@ -37,7 +38,7 @@ "linkCopied": "Link copiado!" }, "errors": { - "forbidden": "Ops! Você não pode acessar aqui.", + "forbidden": "You don't have permissions to access this.", "internal": "Ops! Algum erro ocorreu.", "notFound": "Ops! Nada foi encontrado." }, @@ -167,14 +168,15 @@ "insertRegex": "Insert regex expression", "insertPath": "Insert the path", "userUpdated": "Usuário atualizado!", - "generalSettings": "General settings", "userDefaults": "User default settings", "defaultUserDescription": "This are the default settings for new users.", + "executeOnShell": "Execute on shell", + "executeOnShellDescription": "By default, File Browser executes the commands by calling their binaries directly. If you want to run them on a shell instead (such as Bash or PowerShell), you can define it here with the required arguments and flags. If set, the command you execute will be appended as an argument. This apply to both user commands and event hooks.", "perm": { "create": "Create files and directories", "delete": "Delete files and directories", "download": "Download", - "edit": "Edit files", + "modify": "Edit files", "execute": "Execute commands", "rename": "Rename or move files and directories", "share": "Share files" @@ -182,6 +184,8 @@ }, "sidebar": { "help": "Ajuda", + "login": "Login", + "signup": "Signup", "logout": "Sair", "myFiles": "Arquivos", "newFile": "Novo arquivo", @@ -194,18 +198,12 @@ "search": { "images": "Imagens", "music": "Música", - "notSupportedCommand": "This is a not supported command.", "pdf": "PDF", - "pressToExecute": "Pressione enter para executar.", - "pressToSearch": "Pressione enter para pesquisar.", - "search": "Pesquise...", - "searchOrCommand": "Pesquise ou execute um comando...", - "searchOrSupportedCommand": "Pesquise ou utilize um dos seus comandos:", - "typeCommand": "Type and press enter to execute.", - "typeSearch": "Type and press enter to search.", "types": "Tipos", "video": "Vídeos", - "writeToSearch": "Escreva aqui para pesquisar" + "search": "Pesquise...", + "typeToSearch": "Type to search...", + "pressToSearch": "Press enter to search..." }, "languages": { "ar": "العربية", @@ -229,5 +227,9 @@ "minutes": "Minutos", "hours": "Horas", "days": "Dias" + }, + "download": { + "downloadFile": "Download File", + "downloadFolder": "Download Folder" } } \ No newline at end of file diff --git a/src/i18n/pt.json b/src/i18n/pt.json index 7cc44002..2afe8bb6 100644 --- a/src/i18n/pt.json +++ b/src/i18n/pt.json @@ -1,6 +1,7 @@ { "permanent": "Permanente", "buttons": { + "shell": "Toggle shell", "cancel": "Cancelar", "close": "Fechar", "copy": "Copiar", @@ -37,7 +38,7 @@ "linkCopied": "Link copiado!" }, "errors": { - "forbidden": "Tu não és bem-vindo aqui.", + "forbidden": "You don't have permissions to access this.", "internal": "Algo correu bastante mal.", "notFound": "Não conseguimos chegar a esta localização." }, @@ -167,14 +168,15 @@ "insertRegex": "Insert regex expression", "insertPath": "Insert the path", "userUpdated": "Utilizador atualizado!", - "generalSettings": "General settings", "userDefaults": "User default settings", "defaultUserDescription": "This are the default settings for new users.", + "executeOnShell": "Execute on shell", + "executeOnShellDescription": "By default, File Browser executes the commands by calling their binaries directly. If you want to run them on a shell instead (such as Bash or PowerShell), you can define it here with the required arguments and flags. If set, the command you execute will be appended as an argument. This apply to both user commands and event hooks.", "perm": { "create": "Create files and directories", "delete": "Delete files and directories", "download": "Download", - "edit": "Edit files", + "modify": "Edit files", "execute": "Execute commands", "rename": "Rename or move files and directories", "share": "Share files" @@ -182,6 +184,8 @@ }, "sidebar": { "help": "Ajuda", + "login": "Login", + "signup": "Signup", "logout": "Sair", "myFiles": "Ficheiros", "newFile": "Novo ficheiro", @@ -194,18 +198,12 @@ "search": { "images": "Imagens", "music": "Música", - "notSupportedCommand": "This is a not supported command.", "pdf": "PDF", - "pressToExecute": "Prima enter para executar.", - "pressToSearch": "Prima enter para pesquisar.", - "search": "Pesquise...", - "searchOrCommand": "Pesquise ou execute um comando...", - "searchOrSupportedCommand": "Pesquise ou utilize um dos seus comandos:", - "typeCommand": "Type and press enter to execute.", - "typeSearch": "Type and press enter to search.", "types": "Tipos", "video": "Vídeos", - "writeToSearch": "Escreva aqui para pesquisar" + "search": "Pesquise...", + "typeToSearch": "Type to search...", + "pressToSearch": "Press enter to search..." }, "languages": { "ar": "العربية", @@ -229,5 +227,9 @@ "minutes": "Minutos", "hours": "Horas", "days": "Dias" + }, + "download": { + "downloadFile": "Download File", + "downloadFolder": "Download Folder" } } \ No newline at end of file diff --git a/src/i18n/ru.json b/src/i18n/ru.json index 3e19d58e..5699682b 100644 --- a/src/i18n/ru.json +++ b/src/i18n/ru.json @@ -1,6 +1,7 @@ { "permanent": "Постоянный", "buttons": { + "shell": "Toggle shell", "cancel": "Отмена", "close": "Закрыть", "copy": "Копировать", @@ -37,7 +38,7 @@ "linkCopied": "Ссылка скопирована!" }, "errors": { - "forbidden": "Доступ запрещен.", + "forbidden": "You don't have permissions to access this.", "internal": "Что-то пошло не так.", "notFound": "Неправильная ссылка." }, @@ -167,14 +168,15 @@ "insertRegex": "Insert regex expression", "insertPath": "Insert the path", "userUpdated": "Пользователь изменен!", - "generalSettings": "General settings", "userDefaults": "User default settings", "defaultUserDescription": "This are the default settings for new users.", + "executeOnShell": "Execute on shell", + "executeOnShellDescription": "By default, File Browser executes the commands by calling their binaries directly. If you want to run them on a shell instead (such as Bash or PowerShell), you can define it here with the required arguments and flags. If set, the command you execute will be appended as an argument. This apply to both user commands and event hooks.", "perm": { "create": "Create files and directories", "delete": "Delete files and directories", "download": "Download", - "edit": "Edit files", + "modify": "Edit files", "execute": "Execute commands", "rename": "Rename or move files and directories", "share": "Share files" @@ -182,6 +184,8 @@ }, "sidebar": { "help": "Помощь", + "login": "Login", + "signup": "Signup", "logout": "Выход", "myFiles": "Файлы", "newFile": "Новый файл", @@ -194,18 +198,12 @@ "search": { "images": "Изображения", "music": "Музыка", - "notSupportedCommand": "Команда не поддерживается.", "pdf": "PDF", - "pressToExecute": "Enter для запуска.", - "pressToSearch": "Enter для поиска.", - "search": "Поиск...", - "searchOrCommand": "Поиск или выполнение команды...", - "searchOrSupportedCommand": "Поиск или выполнение команды, начинающейся с '$':", - "typeCommand": "Введи текст и нажми Enter для запуска.", - "typeSearch": "Введи текст и нажми Enter для поиска.", "types": "Типы", "video": "Видео", - "writeToSearch": "Введи текст для поиска" + "search": "Поиск...", + "typeToSearch": "Type to search...", + "pressToSearch": "Press enter to search..." }, "languages": { "ar": "العربية", @@ -229,5 +227,9 @@ "minutes": "Минуты", "hours": "Часы", "days": "Дни" + }, + "download": { + "downloadFile": "Download File", + "downloadFolder": "Download Folder" } } \ No newline at end of file diff --git a/src/i18n/zh-cn.json b/src/i18n/zh-cn.json index 7ab25ba7..36fb96af 100644 --- a/src/i18n/zh-cn.json +++ b/src/i18n/zh-cn.json @@ -1,6 +1,7 @@ { "permanent": "永久", "buttons": { + "shell": "Toggle shell", "cancel": "取消", "close": "关闭", "copy": "复制", @@ -37,7 +38,7 @@ "linkCopied": "链接已复制!" }, "errors": { - "forbidden": "你被禁止访问。", + "forbidden": "You don't have permissions to access this.", "internal": "服务器出了点问题。", "notFound": "找不到文件。" }, @@ -167,14 +168,15 @@ "insertRegex": "Insert regex expression", "insertPath": "Insert the path", "userUpdated": "用户已更新!", - "generalSettings": "General settings", "userDefaults": "User default settings", "defaultUserDescription": "This are the default settings for new users.", + "executeOnShell": "Execute on shell", + "executeOnShellDescription": "By default, File Browser executes the commands by calling their binaries directly. If you want to run them on a shell instead (such as Bash or PowerShell), you can define it here with the required arguments and flags. If set, the command you execute will be appended as an argument. This apply to both user commands and event hooks.", "perm": { "create": "Create files and directories", "delete": "Delete files and directories", "download": "Download", - "edit": "Edit files", + "modify": "Edit files", "execute": "Execute commands", "rename": "Rename or move files and directories", "share": "Share files" @@ -182,6 +184,8 @@ }, "sidebar": { "help": "帮助", + "login": "Login", + "signup": "Signup", "logout": "登出", "myFiles": "我的文件", "newFile": "新建文件", @@ -194,18 +198,12 @@ "search": { "images": "图像", "music": "音乐", - "notSupportedCommand": "This is a not supported command.", "pdf": "PDF", - "pressToExecute": "按回车键执行。", - "pressToSearch": "按回车键搜索。", - "search": "搜索...", - "searchOrCommand": "搜索或者执行命令(Linux 代码)...", - "searchOrSupportedCommand": "搜索或加入\"$\"前缀以使用其中一个您可以使用的命令:", - "typeCommand": "Type and press enter to execute.", - "typeSearch": "Type and press enter to search.", "types": "类型", "video": "视频", - "writeToSearch": "请输入要搜索的内容" + "search": "搜索...", + "typeToSearch": "Type to search...", + "pressToSearch": "Press enter to search..." }, "languages": { "ar": "العربية", @@ -229,5 +227,9 @@ "minutes": "分钟", "hours": "小时", "days": "天" + }, + "download": { + "downloadFile": "Download File", + "downloadFolder": "Download Folder" } } \ No newline at end of file diff --git a/src/i18n/zh-tw.json b/src/i18n/zh-tw.json index 3d7947cd..271a251e 100644 --- a/src/i18n/zh-tw.json +++ b/src/i18n/zh-tw.json @@ -1,6 +1,7 @@ { "permanent": "永久", "buttons": { + "shell": "Toggle shell", "cancel": "取消", "close": "關閉", "copy": "複製", @@ -37,7 +38,7 @@ "linkCopied": "連結已複製!" }, "errors": { - "forbidden": "你被禁止存取。", + "forbidden": "You don't have permissions to access this.", "internal": "伺服器出了點問題。", "notFound": "找不到檔案。" }, @@ -167,14 +168,15 @@ "insertRegex": "Insert regex expression", "insertPath": "Insert the path", "userUpdated": "使用者已更新!", - "generalSettings": "General settings", "userDefaults": "User default settings", "defaultUserDescription": "This are the default settings for new users.", + "executeOnShell": "Execute on shell", + "executeOnShellDescription": "By default, File Browser executes the commands by calling their binaries directly. If you want to run them on a shell instead (such as Bash or PowerShell), you can define it here with the required arguments and flags. If set, the command you execute will be appended as an argument. This apply to both user commands and event hooks.", "perm": { "create": "Create files and directories", "delete": "Delete files and directories", "download": "Download", - "edit": "Edit files", + "modify": "Edit files", "execute": "Execute commands", "rename": "Rename or move files and directories", "share": "Share files" @@ -182,6 +184,8 @@ }, "sidebar": { "help": "幫助", + "login": "Login", + "signup": "Signup", "logout": "登出", "myFiles": "我的檔案", "newFile": "建立檔案", @@ -194,18 +198,12 @@ "search": { "images": "影像", "music": "音樂", - "notSupportedCommand": "This is a not supported command.", "pdf": "PDF", - "pressToExecute": "按確定鍵執行。", - "pressToSearch": "按確定鍵搜尋。", - "search": "搜尋...", - "searchOrCommand": "搜尋或者執行命令...", - "searchOrSupportedCommand": "搜尋或使用您可以使用的命令(一次只能執行一個命令):", - "typeCommand": "Type and press enter to execute.", - "typeSearch": "Type and press enter to search.", "types": "類型", "video": "影片", - "writeToSearch": "請輸入要搜尋的內容" + "search": "搜尋...", + "typeToSearch": "Type to search...", + "pressToSearch": "Press enter to search..." }, "languages": { "ar": "العربية", @@ -229,5 +227,9 @@ "minutes": "分鐘", "hours": "小時", "days": "天" + }, + "download": { + "downloadFile": "Download File", + "downloadFolder": "Download Folder" } } \ No newline at end of file From ac512612e790e045151ba26f26a470ac04e27f45 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sun, 6 Jan 2019 09:49:41 +0000 Subject: [PATCH 0055/1487] fix: fixed header License: MIT Signed-off-by: Henrique Dias --- src/css/listing.css | 5 ----- src/css/mobile.css | 5 ----- 2 files changed, 10 deletions(-) diff --git a/src/css/listing.css b/src/css/listing.css index 2922f04e..994d396c 100644 --- a/src/css/listing.css +++ b/src/css/listing.css @@ -101,7 +101,6 @@ #listing.list { flex-direction: column; - padding-top: 3.25em; width: 100%; max-width: 100%; margin: 0; @@ -160,10 +159,6 @@ #listing.list .item.header { display: flex !important; background: #fafafa; - position: fixed; - width: calc(100% - 19em); - top: 7em; - right: 1em; z-index: 999; padding: .85em; border: 0; diff --git a/src/css/mobile.css b/src/css/mobile.css index da172ba6..556ca033 100644 --- a/src/css/mobile.css +++ b/src/css/mobile.css @@ -5,7 +5,6 @@ } @media (max-width: 1024px) { - #listing.list .item.header, main { width: calc(100% - 13em) } @@ -105,10 +104,6 @@ #listing { margin-bottom: 5em; } - #listing.list .item.header, - main { - width: calc(100% - 2em); - } main { margin: 0 1em; width: calc(100% - 2em); From 7a6397af22380eec65f20836d713256b5397d182 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sun, 6 Jan 2019 10:06:08 +0000 Subject: [PATCH 0056/1487] feat: show search progressively License: MIT Signed-off-by: Henrique Dias --- src/components/Search.vue | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/src/components/Search.vue b/src/components/Search.vue index 7c6086f3..211baf23 100644 --- a/src/components/Search.vue +++ b/src/components/Search.vue @@ -23,7 +23,7 @@ > -
+
-
    -
  • +
      +
    • folder insert_drive_file @@ -69,8 +69,6 @@ import { mapState, mapGetters, mapMutations } from "vuex" import url from "@/utils/url" import { search } from "@/api" -// TODO: show fifty at the tie - var boxes = { image: { label: "images", icon: "insert_photo" }, audio: { label: "music", icon: "volume_up" }, @@ -92,7 +90,7 @@ export default { } }, watch: { - show(val, old) { + show (val, old) { this.active = val === "search" if (old === "search" && !this.active) { @@ -102,12 +100,19 @@ export default { document.body.style.overflow = "auto" this.reset() + this.value = '' + this.active = false this.$refs.input.blur() } else if (this.active) { this.reload = false this.$refs.input.focus() document.body.style.overflow = "hidden" } + }, + value () { + if (this.results.length) { + this.reset() + } } }, computed: { @@ -125,6 +130,9 @@ export default { } return this.value === '' ? this.$t("search.typeToSearch") : this.$t("search.pressToSearch") + }, + filteredResults () { + return this.results.slice(0, this.resultsCount) } }, mounted() { @@ -133,6 +141,12 @@ export default { this.closeHovers() } }) + + this.$refs.result.addEventListener('scroll', event => { + if (event.target.offsetHeight + event.target.scrollTop >= event.target.scrollHeight - 100) { + this.resultsCount += 50 + } + }) }, methods: { ...mapMutations(["showHover", "closeHovers", "setReload"]), @@ -157,8 +171,6 @@ export default { this.$refs.input.focus() }, reset () { - this.value = '' - this.active = false this.ongoing = false this.resultsCount = 50 this.results = [] @@ -177,6 +189,7 @@ export default { this.ongoing = true + this.results = await search(path, this.value) this.ongoing = false } From 0e7d4ef110ee550375d4bf15dfa9ded70214076a Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sun, 6 Jan 2019 12:01:23 +0000 Subject: [PATCH 0057/1487] fix: drop to itself (close #33 ) License: MIT Signed-off-by: Henrique Dias --- src/api/files.js | 6 +++--- src/components/files/Listing.vue | 5 ----- src/components/files/ListingItem.vue | 17 ++++++++++++++--- src/components/prompts/Copy.vue | 2 +- src/components/prompts/Move.vue | 2 +- src/components/prompts/Rename.vue | 1 - 6 files changed, 19 insertions(+), 14 deletions(-) diff --git a/src/api/files.js b/src/api/files.js index 9ed7b793..917e46ec 100644 --- a/src/api/files.js +++ b/src/api/files.js @@ -116,9 +116,9 @@ function moveCopy (items, copy = false) { let promises = [] for (let item of items) { - let from = removePrefix(item.from) - let to = encodeURIComponent(removePrefix(item.to)) - let url = `${from}?action=${copy ? 'copy' : 'rename'}&destination=${to}` + const from = removePrefix(item.from) + const to = encodeURIComponent(removePrefix(item.to)) + const url = `${from}?action=${copy ? 'copy' : 'rename'}&destination=${to}` promises.push(resourceAction(url, 'PATCH')) } diff --git a/src/components/files/Listing.vue b/src/components/files/Listing.vue index 9d34a533..020d6879 100644 --- a/src/components/files/Listing.vue +++ b/src/components/files/Listing.vue @@ -242,11 +242,6 @@ export default { for (let item of this.$store.state.clipboard.items) { const from = item.from.endsWith('/') ? item.from.slice(0, -1) : item.from const to = this.$route.path + item.name - - if (from === to) { - return - } - items.push({ from, to }) } diff --git a/src/components/files/ListingItem.vue b/src/components/files/ListingItem.vue index 5556666d..2cb03b2b 100644 --- a/src/components/files/ListingItem.vue +++ b/src/components/files/ListingItem.vue @@ -55,6 +55,17 @@ export default { if (this.type === 'audio') return 'volume_up' if (this.type === 'video') return 'movie' return 'insert_drive_file' + }, + canDrop () { + if (!this.isDir) return false + + for (let i of this.selected) { + if (this.req.items[i].url === this.url) { + return false + } + } + + return true } }, methods: { @@ -77,7 +88,7 @@ export default { } }, dragOver: function (event) { - if (!this.isDir) return + if (!this.canDrop) return event.preventDefault() let el = event.target @@ -91,7 +102,7 @@ export default { el.style.opacity = 1 }, drop: function (event) { - if (!this.isDir) return + if (!this.canDrop) return event.preventDefault() if (this.selectedCount === 0) return @@ -101,7 +112,7 @@ export default { for (let i of this.selected) { items.push({ from: this.req.items[i].url, - to: this.url + encodeURIComponent(this.req.items[i].name) + to: this.url + this.req.items[i].name }) } diff --git a/src/components/prompts/Copy.vue b/src/components/prompts/Copy.vue index 91471bf4..42c262bf 100644 --- a/src/components/prompts/Copy.vue +++ b/src/components/prompts/Copy.vue @@ -49,7 +49,7 @@ export default { for (let item of this.selected) { items.push({ from: this.req.items[item].url, - to: this.dest + encodeURIComponent(this.req.items[item].name) + to: this.dest + this.req.items[item].name }) } diff --git a/src/components/prompts/Move.vue b/src/components/prompts/Move.vue index c827ea48..4aa67931 100644 --- a/src/components/prompts/Move.vue +++ b/src/components/prompts/Move.vue @@ -47,7 +47,7 @@ export default { for (let item of this.selected) { items.push({ from: this.req.items[item].url, - to: this.dest + encodeURIComponent(this.req.items[item].name) + to: this.dest + this.req.items[item].name }) } diff --git a/src/components/prompts/Rename.vue b/src/components/prompts/Rename.vue index f452e8df..2c35244e 100644 --- a/src/components/prompts/Rename.vue +++ b/src/components/prompts/Rename.vue @@ -68,7 +68,6 @@ export default { oldLink = this.req.items[this.selected[0]].url } - this.name = encodeURIComponent(this.name) newLink = url.removeLastDir(oldLink) + '/' + this.name try { From 90d690c187279b245c9e701268e7dcc07c4c4871 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Tue, 8 Jan 2019 12:57:44 +0000 Subject: [PATCH 0058/1487] chore(deps-dev): bump @vue/cli-plugin-eslint from 3.2.2 to 3.3.0 (#68) Bumps [@vue/cli-plugin-eslint](https://github.com/vuejs/vue-cli) from 3.2.2 to 3.3.0.
      Changelog *Sourced from [@vue/cli-plugin-eslint's changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md).* > # [3.3.0](https://github.com/vuejs/vue-cli/compare/v3.2.3...v3.3.0) (2019-01-08) > > ## babel-preset-app > > #### Features > > * replace babel-plugin-transform-vue-jsx with [[**vue**](https://github.com/vue)](https://github.com/vue)/babel-preset-jsx ([#3218](https://github-redirect.dependabot.com/vuejs/vue-cli/issues/3218)) ([f15dcf7](https://github.com/vuejs/vue-cli/commit/f15dcf7)) > > ## cli-service > > #### Bug Fixes > > * **cli-service:** fix copy plugin's ignore pattern (fix [#3119](https://github-redirect.dependabot.com/vuejs/vue-cli/issues/3119)) ([#3130](https://github-redirect.dependabot.com/vuejs/vue-cli/issues/3130)) ([8b4471e](https://github.com/vuejs/vue-cli/commit/8b4471e)) > * fix loaderOptions.postcss detection ([#3201](https://github-redirect.dependabot.com/vuejs/vue-cli/issues/3201)) ([d5b5e3b](https://github.com/vuejs/vue-cli/commit/d5b5e3b)), closes [#3194](https://github-redirect.dependabot.com/vuejs/vue-cli/issues/3194) > > ## cli-ui > > #### Bug Fixes > > * typo in welcome tips ([#3246](https://github-redirect.dependabot.com/vuejs/vue-cli/issues/3246)) [ci skip] ([4070507](https://github.com/vuejs/vue-cli/commit/4070507)) > > ## docs > > #### Features > > * deprecate confusing `baseUrl` option, use `publicPath` instead. ([#3143](https://github-redirect.dependabot.com/vuejs/vue-cli/issues/3143)) ([e7af0d8](https://github.com/vuejs/vue-cli/commit/e7af0d8)) > > > > # [3.2.3](https://github.com/vuejs/vue-cli/compare/v3.2.2...v3.2.3) (2019-01-03) > > ## cli-plugin-e2e-cypress > > #### Bug Fixes > > * make cypress config file compatible with eslint-config-airbnb rules ([0fc972e](https://github.com/vuejs/vue-cli/commit/0fc972e)) > > ## cli-plugin-unit-jest > > #### Bug Fixes > > * fix typo in jest config ([4feaacf](https://github.com/vuejs/vue-cli/commit/4feaacf)) > > ## cli-service > > #### Bug Fixes > > * fix a regression that `pages` doesn't allow entry-only string format ([a7fa191](https://github.com/vuejs/vue-cli/commit/a7fa191)), closes [#3233](https://github-redirect.dependabot.com/vuejs/vue-cli/issues/3233)
      Commits - [`04203aa`](https://github.com/vuejs/vue-cli/commit/04203aa4ee03fe3d15fa6f240a13dbf75a360ac3) chore: vue-cli-version-marker@3.3.0 - [`8975f06`](https://github.com/vuejs/vue-cli/commit/8975f0670d4e90513efbbee70ab311e90fa983e8) chore: 3.3.0 changelog [ci skip] - [`5937a67`](https://github.com/vuejs/vue-cli/commit/5937a67a48af1ff4c0053be787e8cd64440466df) v3.3.0 - [`bcdf6d0`](https://github.com/vuejs/vue-cli/commit/bcdf6d0938d5789e9938fa6e1948139ff71a4de6) chore: pre release sync - [`d5b5e3b`](https://github.com/vuejs/vue-cli/commit/d5b5e3bfde008f3229a199491f33de8d8d550807) fix: fix loaderOptions.postcss detection ([#3201](https://github-redirect.dependabot.com/vuejs/vue-cli/issues/3201)) - [`f15dcf7`](https://github.com/vuejs/vue-cli/commit/f15dcf7f48b80a3634b548f0486068b9f91f8dc3) feat: replace babel-plugin-transform-vue-jsx with @vue/babel-preset-jsx ([#3218](https://github-redirect.dependabot.com/vuejs/vue-cli/issues/3218)) - [`e7af0d8`](https://github.com/vuejs/vue-cli/commit/e7af0d8fa374311693f14d1605e7ae442e43c3a6) feat: deprecate confusing `baseUrl` option, use `publicPath` instead. ([#3143](https://github-redirect.dependabot.com/vuejs/vue-cli/issues/3143)) - [`8b4471e`](https://github.com/vuejs/vue-cli/commit/8b4471e78cefced2bbce5beab57e2655a654344f) fix(cli-service): fix copy plugin's ignore pattern (fix [#3119](https://github-redirect.dependabot.com/vuejs/vue-cli/issues/3119)) ([#3130](https://github-redirect.dependabot.com/vuejs/vue-cli/issues/3130)) - [`4070507`](https://github.com/vuejs/vue-cli/commit/4070507de64bee83c8e019e96c336068e3e950b9) fix: typo in welcome tips ([#3246](https://github-redirect.dependabot.com/vuejs/vue-cli/issues/3246)) [ci skip] - [`d88f2fa`](https://github.com/vuejs/vue-cli/commit/d88f2faf64e7fa75ad0ac14bf897f81214d2e3dd) chore: vue-cli-version-marker@3.2.3 - Additional commits viewable in [compare view](https://github.com/vuejs/vue-cli/compare/vue-cli-version-marker@3.2.2...vue-cli-version-marker@3.3.0)

      [![Dependabot compatibility score](https://api.dependabot.com/badges/compatibility_score?dependency-name=@vue/cli-plugin-eslint&package-manager=npm_and_yarn&previous-version=3.2.2&new-version=3.3.0)](https://dependabot.com/compatibility-score.html?dependency-name=@vue/cli-plugin-eslint&package-manager=npm_and_yarn&previous-version=3.2.2&new-version=3.3.0) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- **Note:** This repo was added to Dependabot recently, so you'll receive a maximum of 5 PRs for your first few update runs. Once an update run creates fewer than 5 PRs we'll remove that limit. You can always request more updates by clicking `Bump now` in your [Dependabot dashboard](https://app.dependabot.com).
      Dependabot commands and options
      You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot ignore this [patch|minor|major] version` will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) - `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language - `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language - `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language - `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language - `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com): - Update frequency (including time of day and day of week) - Automerge options (never/patch/minor, and dev/runtime dependencies) - Pull request limits (per update run and/or open at any time) - Out-of-range updates (receive only lockfile updates, if desired) - Security updates (receive only security updates, if desired) Finally, you can contact us by mentioning @dependabot.
      --- package-lock.json | 111 +++++++++++++++++++++++++++++++--------------- package.json | 2 +- 2 files changed, 77 insertions(+), 36 deletions(-) diff --git a/package-lock.json b/package-lock.json index 95610bdc..a16cd250 100644 --- a/package-lock.json +++ b/package-lock.json @@ -876,12 +876,12 @@ } }, "@vue/cli-plugin-eslint": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-eslint/-/cli-plugin-eslint-3.2.2.tgz", - "integrity": "sha512-usaTfKjMq7mGkUyTkgoGT36XLnfWjbxTAK00Hl46u3Iz24/ACapS9/p5O+uMv2Lj7epYWV+C36g72agzRrMP9A==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-eslint/-/cli-plugin-eslint-3.3.0.tgz", + "integrity": "sha512-kL68xVHv8xFqB06DmzACSviuNPaJcTvlKrCeZarxrXecry2MiOhbyiBToCQXiu2YhfxH8pUy3GFsSRyn3eYEuw==", "dev": true, "requires": { - "@vue/cli-shared-utils": "^3.2.2", + "@vue/cli-shared-utils": "^3.3.0", "babel-eslint": "^10.0.1", "eslint": "^4.19.1", "eslint-loader": "^2.1.1", @@ -889,6 +889,26 @@ "globby": "^8.0.1" }, "dependencies": { + "@vue/cli-shared-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-3.3.0.tgz", + "integrity": "sha512-V/sU1jc7/jMCAbU8uA5f4j9Yd8lTqdi3I6FEHfLG1nstwhaNi4BU3WKWOAl72NYVWFYG8VuCrYWDn75kMimtuw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "execa": "^1.0.0", + "joi": "^14.3.0", + "launch-editor": "^2.2.1", + "lru-cache": "^5.1.1", + "node-ipc": "^9.1.1", + "opn": "^5.3.0", + "ora": "^3.0.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.5", + "semver": "^5.5.0", + "string.prototype.padstart": "^3.0.0" + } + }, "ajv": { "version": "5.5.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", @@ -910,6 +930,18 @@ "lru-cache": "^4.0.1", "shebang-command": "^1.2.0", "which": "^1.2.9" + }, + "dependencies": { + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + } } }, "debug": { @@ -988,16 +1020,6 @@ "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", "dev": true }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", @@ -1594,7 +1616,7 @@ }, "util": { "version": "0.10.3", - "resolved": "http://registry.npmjs.org/util/-/util-0.10.3.tgz", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", "dev": true, "requires": { @@ -1750,7 +1772,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -1759,7 +1781,7 @@ }, "supports-color": { "version": "2.0.0", - "resolved": "http://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true } @@ -4693,7 +4715,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -4702,7 +4724,7 @@ }, "supports-color": { "version": "2.0.0", - "resolved": "http://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true } @@ -4767,7 +4789,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -4788,12 +4811,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -4808,17 +4833,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -4935,7 +4963,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -4947,6 +4976,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -4961,6 +4991,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -4968,12 +4999,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.2.4", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -4992,6 +5025,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -5072,7 +5106,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -5084,6 +5119,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -5169,7 +5205,8 @@ "safe-buffer": { "version": "5.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -5205,6 +5242,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -5224,6 +5262,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -5267,12 +5306,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -8632,7 +8673,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -10406,7 +10447,7 @@ }, "vue-eslint-parser": { "version": "2.0.3", - "resolved": "http://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz", "integrity": "sha512-ZezcU71Owm84xVF6gfurBQUGg8WQ+WZGxgDEQu1IHFBZNx7BFZg3L1yHxrCBNNwbwFtE1GuvfJKMtb6Xuwc/Bw==", "dev": true, "requires": { @@ -10695,7 +10736,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -10814,7 +10855,7 @@ }, "string-width": { "version": "1.0.2", - "resolved": "http://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { @@ -10825,7 +10866,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { diff --git a/package.json b/package.json index 2c25c1be..fcf9459b 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ }, "devDependencies": { "@vue/cli-plugin-babel": "^3.2.2", - "@vue/cli-plugin-eslint": "^3.2.2", + "@vue/cli-plugin-eslint": "^3.3.0", "@vue/cli-service": "^3.2.3", "babel-eslint": "^10.0.1", "eslint": "^5.12.0", From ee169b3a466633bb9c477b5fbd4e167dbb098d40 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Tue, 8 Jan 2019 14:05:23 +0000 Subject: [PATCH 0059/1487] chore(deps-dev): bump @vue/cli-service from 3.2.3 to 3.3.0 (#69) Bumps [@vue/cli-service](https://github.com/vuejs/vue-cli) from 3.2.3 to 3.3.0. - [Release notes](https://github.com/vuejs/vue-cli/releases) - [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md) - [Commits](https://github.com/vuejs/vue-cli/compare/v3.2.3...vue-cli-version-marker@3.3.0) Signed-off-by: dependabot[bot] --- package-lock.json | 100 +++++++++++++++++++++++++++++----------------- package.json | 2 +- 2 files changed, 64 insertions(+), 38 deletions(-) diff --git a/package-lock.json b/package-lock.json index a16cd250..abd2c957 100644 --- a/package-lock.json +++ b/package-lock.json @@ -859,9 +859,9 @@ } }, "@vue/cli-overlay": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-3.2.0.tgz", - "integrity": "sha512-RKMSfgTtRs4VOXQhmbrNZJaCCheshebji9NcPNGyXzukCMBtoAbu3cG9HxizCSUA//oFFAdPP5BGeHvv0cpu/A==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-3.3.0.tgz", + "integrity": "sha512-UyfeuX6txu8sRtfhJOJlPgETzU3KjshKY2qAnC34KJKcS+7oIYRpeOo8jMMLjImVE0g6d8Rn3A1GkXjRiKWW6w==", "dev": true }, "@vue/cli-plugin-babel": { @@ -1029,14 +1029,14 @@ } }, "@vue/cli-service": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-3.2.3.tgz", - "integrity": "sha512-lRCwf8R/YCo67SAqt1MiYhJnvybedQJz1O3uWSJzv7mDPwRUp2980gzQ3wfsTt0tkUtxRcAOmD+V1co4tWOgrw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-3.3.0.tgz", + "integrity": "sha512-7PNitKBBCFcGfCvXSiuUGV2GpGA6KEupQcuxQ2xPL5T3UMSAzJLpx7Siw/9++yO4nQEib6yP3YQk2zTfeXWTSA==", "dev": true, "requires": { "@intervolga/optimize-cssnano-plugin": "^1.0.5", - "@vue/cli-overlay": "^3.2.0", - "@vue/cli-shared-utils": "^3.2.2", + "@vue/cli-overlay": "^3.3.0", + "@vue/cli-shared-utils": "^3.3.0", "@vue/preload-webpack-plugin": "^1.1.0", "@vue/web-component-wrapper": "^1.2.0", "acorn": "^6.0.4", @@ -1101,9 +1101,9 @@ } }, "@vue/cli-shared-utils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-3.2.2.tgz", - "integrity": "sha512-pkJDucxDxSnmhN3/zgyvKXDFJDx42sfAdNo02mRYPhv3u2tqJW4/GR0X1/O8p4+LUNwBgtGNmDAACYoLzv101Q==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-3.3.0.tgz", + "integrity": "sha512-V/sU1jc7/jMCAbU8uA5f4j9Yd8lTqdi3I6FEHfLG1nstwhaNi4BU3WKWOAl72NYVWFYG8VuCrYWDn75kMimtuw==", "dev": true, "requires": { "chalk": "^2.4.1", @@ -1121,9 +1121,9 @@ } }, "@vue/component-compiler-utils": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-2.4.0.tgz", - "integrity": "sha512-LZyagnP+93GPiVHhu6HELEuHaSe83tfVrUgfl3ugwEc/k5yVbMu3OdaWrVqNo4hh1KK8o5fYOk2E/QpsfAxqiQ==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-2.5.0.tgz", + "integrity": "sha512-mSB8jWmE/ZeYZHPDEx9hNiiRh5P2V1Q0tObxEQWtxxfXtkIAvPnj7oucGm5SO8Y/QwIlDJgAGqHfj5MCjoKoOg==", "dev": true, "requires": { "consolidate": "^0.15.1", @@ -2752,9 +2752,9 @@ } }, "connect-history-api-fallback": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", - "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", "dev": true }, "console-browserify": { @@ -4789,8 +4789,7 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "aproba": { "version": "1.2.0", @@ -5205,8 +5204,7 @@ "safe-buffer": { "version": "5.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "safer-buffer": { "version": "2.1.2", @@ -5262,7 +5260,6 @@ "version": "3.0.1", "bundled": true, "dev": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -5306,14 +5303,12 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "yallist": { "version": "3.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true } } }, @@ -7754,21 +7749,52 @@ "dev": true }, "postcss": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.7.tgz", - "integrity": "sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==", + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz", + "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==", "dev": true, "requires": { - "chalk": "^2.4.1", + "chalk": "^2.4.2", "source-map": "^0.6.1", - "supports-color": "^5.5.0" + "supports-color": "^6.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "supports-color": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", + "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -10482,9 +10508,9 @@ "integrity": "sha512-qey+OyZSUIje0xJW8HZrvpIss1jW8yBBRe+0QlUn7HENU31m/+Med/u4pcwjoeCaErHU9WMscBEhqK5aAvvEEQ==" }, "vue-loader": { - "version": "15.5.0", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.5.0.tgz", - "integrity": "sha512-aw+eJsAxxmlD4Ad0ww4s69u4pGs4jjwv9WVDiW5qj2zPYSmgNPWaD0xCl5jQyqgtXstkzYurhdG49cpQmNgRgg==", + "version": "15.5.1", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.5.1.tgz", + "integrity": "sha512-gsTA9xRzu9jGBzkcrAB8my14RkHMzdr5rY/mCFmxgY2tOVsd2Z1MaYCDXHu5nX6PyHAsVK2/hXmarPln/2MiIw==", "dev": true, "requires": { "@vue/component-compiler-utils": "^2.4.0", @@ -10565,9 +10591,9 @@ } }, "webpack": { - "version": "4.28.3", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.28.3.tgz", - "integrity": "sha512-vLZN9k5I7Nr/XB1IDG9GbZB4yQd1sPuvufMFgJkx0b31fi2LD97KQIjwjxE7xytdruAYfu5S0FLBLjdxmwGJCg==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.28.1.tgz", + "integrity": "sha512-qAS7BFyS5iuOZzGJxyDXmEI289h7tVNtJ5XMxf6Tz55J2riOyH42uaEsWF0F32TRaI+54SmI6qRgHM3GzsZ+sQ==", "dev": true, "requires": { "@webassemblyjs/ast": "1.7.11", diff --git a/package.json b/package.json index fcf9459b..159a6e16 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "devDependencies": { "@vue/cli-plugin-babel": "^3.2.2", "@vue/cli-plugin-eslint": "^3.3.0", - "@vue/cli-service": "^3.2.3", + "@vue/cli-service": "^3.3.0", "babel-eslint": "^10.0.1", "eslint": "^5.12.0", "eslint-plugin-vue": "^5.1.0", From 2ed87febcb71c71588f53d5b6ed560cd5c99f526 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Tue, 8 Jan 2019 14:16:24 +0000 Subject: [PATCH 0060/1487] chore(deps-dev): bump @vue/cli-plugin-babel from 3.2.2 to 3.3.0 (#70) --- package-lock.json | 145 +++++++++++++++++++++++++++++++++++++++++----- package.json | 2 +- 2 files changed, 132 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index abd2c957..6881c9fc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -838,10 +838,30 @@ "integrity": "sha512-eqz8c/0kwNi/OEHQfvIuJVLTst3in0e7uTKeuY+WL/zfKn0xVujOTp42bS/vUUokhK5P2BppLd9JXMOMHcgbjA==", "dev": true }, + "@vue/babel-helper-vue-jsx-merge-props": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.0.0-beta.1.tgz", + "integrity": "sha512-N5uSbvShCF7pMuk4gOoMaM/oAhr4Vt5s1DRnevuhCeRP2UtwDC6GuFFNFuhuefOsWwpAX/PmrSxA6kDH/GGQlg==", + "dev": true + }, + "@vue/babel-plugin-transform-vue-jsx": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.0.0-beta.1.tgz", + "integrity": "sha512-/ZV09X4BtA5OPdnQqQaxhD1aRBQF8PVY/ZUnQtrk4jld7+Mfy9CxT4gCznoJ+KFooCbyjvwhotB72Hg7N3T4zg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0-beta.1", + "html-tags": "^2.0.0", + "lodash.kebabcase": "^4.1.1", + "svg-tags": "^1.0.0" + } + }, "@vue/babel-preset-app": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-3.2.2.tgz", - "integrity": "sha512-qQkf/bAATfwC1aTKpjPXPeoITSV0uJaeCYrlBXrAH93+ycKWkK+mz7hjwYlGVo7xM/UTICXd3H14XPn1svK5yg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-3.3.0.tgz", + "integrity": "sha512-ZnuzErAub1hiFp9c/BI94JMEG7AcbS3/nqToJofOYJFspwWerozxefHF3i3owy6KymBQODVetdyI+iZu80b23A==", "dev": true, "requires": { "@babel/plugin-proposal-class-properties": "^7.0.0", @@ -852,12 +872,86 @@ "@babel/preset-env": "^7.0.0", "@babel/runtime": "^7.0.0", "@babel/runtime-corejs2": "^7.2.0", + "@vue/babel-preset-jsx": "^1.0.0-beta.1", "babel-helper-vue-jsx-merge-props": "^2.0.3", "babel-plugin-dynamic-import-node": "^2.2.0", "babel-plugin-transform-vue-jsx": "^4.0.1", "core-js": "^2.6.1" } }, + "@vue/babel-preset-jsx": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/@vue/babel-preset-jsx/-/babel-preset-jsx-1.0.0-beta.1.tgz", + "integrity": "sha512-Nx6+KEJKApsofsYElwFaU7bnBWjMatAgUBFR45qMNl2KpwVOrgNABCbrX/9IqxZIOGCpRuzD96pWmnxFnu2HVQ==", + "dev": true, + "requires": { + "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0-beta.1", + "@vue/babel-plugin-transform-vue-jsx": "^1.0.0-beta.1", + "@vue/babel-sugar-functional-vue": "^1.0.0-beta.1", + "@vue/babel-sugar-inject-h": "^1.0.0-beta.1", + "@vue/babel-sugar-v-model": "^1.0.0-beta.1", + "@vue/babel-sugar-v-on": "^1.0.0-beta.1" + } + }, + "@vue/babel-sugar-functional-vue": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.0.0-beta.1.tgz", + "integrity": "sha512-FD53t0SxlkNtCk78C/fl1WR79tOLYMOEcku0ie0nKhjn/gy56fhYOMlUjutjE/mdVa4wHSHnz2WC7N8e4zbxPg==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-inject-h": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.0.0-beta.1.tgz", + "integrity": "sha512-/0Key+jZfxjRb1b7NPS29rrYzPXGqoYxRim54eVFzcAF255O5DCcBDbePGb/ktza2aA8ZvzPfnc/uNxcLA82FQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-v-model": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.0.0-beta.1.tgz", + "integrity": "sha512-TLcBppivEHL9oeAafLfxBG3M4FFnVp1BX8joBJwvfgMOFgarNux8QhttbqQSMAAVX4j6GOf1xlXpXK2odQHB0w==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0-beta.1", + "@vue/babel-plugin-transform-vue-jsx": "^1.0.0-beta.1", + "camelcase": "^5.0.0", + "html-tags": "^2.0.0", + "svg-tags": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", + "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", + "dev": true + } + } + }, + "@vue/babel-sugar-v-on": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.0.0-beta.1.tgz", + "integrity": "sha512-K+QecqeKZseWoGkxMAuV08XqumPqBpQ681NwFsSZyj6Pfz5XpEPPlCH3nQ+7KC4yxjbH9bjIGVtkpvbONIfbvA==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.0.0-beta.1", + "camelcase": "^5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", + "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", + "dev": true + } + } + }, "@vue/cli-overlay": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-3.3.0.tgz", @@ -865,13 +959,13 @@ "dev": true }, "@vue/cli-plugin-babel": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-babel/-/cli-plugin-babel-3.2.2.tgz", - "integrity": "sha512-ya2UbXs3+Ac/qxnrdChhtM/0JBNifpeO05jL83Q31d3P+AHGp9psqVLHTdB9zReuHri5OAXSGUg1wpQUYNZyYQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-babel/-/cli-plugin-babel-3.3.0.tgz", + "integrity": "sha512-HS5DwLe42fmkDgu4+78zMITNK+WiLoHKHBCCOuoEqjmsvvKaH/ByCGJOHYgTTe0aI+AiTAAkR2sZ2YulAjlvlQ==", "dev": true, "requires": { "@babel/core": "^7.0.0", - "@vue/babel-preset-app": "^3.2.2", + "@vue/babel-preset-app": "^3.3.0", "babel-loader": "^8.0.4" } }, @@ -4789,7 +4883,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -5204,7 +5299,8 @@ "safe-buffer": { "version": "5.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -5260,6 +5356,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -5303,12 +5400,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -5650,6 +5749,12 @@ "uglify-js": "3.4.x" } }, + "html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", + "dev": true + }, "html-webpack-plugin": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", @@ -6366,9 +6471,9 @@ "integrity": "sha512-wlEBIZ5LP8usDylWbDNhKPEFVFdI5hCHpnVoT/Ysvoi/PRhJENm/Rlh9TvjYB38HFfKZN7OzEbRjmjvLkFw11g==" }, "js-levenshtein": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.4.tgz", - "integrity": "sha512-PxfGzSs0ztShKrUYPIn5r0MtyAhYcCwmndozzpz8YObbPnD1jFxzlBGbRnX2mIu6Z13xN6+PTu05TQFnZFlzow==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.5.tgz", + "integrity": "sha512-ap2aTez3WZASzMmJvgvG+nsrCCrtHPQ+4YB+WQjYQpXgLkM+WqwkpzdlVs5l7Xhk128I/CisIk4CdXl7pIchUA==", "dev": true }, "js-message": { @@ -6648,6 +6753,12 @@ "integrity": "sha1-vsECT4WxvZbL6kBbI8FK1kQ6b4E=", "dev": true }, + "lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha1-hImxyw0p/4gZXM7KRI/21swpXDY=", + "dev": true + }, "lodash.mapvalues": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", @@ -9723,6 +9834,12 @@ "has-flag": "^3.0.0" } }, + "svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", + "dev": true + }, "svgo": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.1.1.tgz", diff --git a/package.json b/package.json index 159a6e16..c08f99ae 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "vuex-router-sync": "^5.0.0" }, "devDependencies": { - "@vue/cli-plugin-babel": "^3.2.2", + "@vue/cli-plugin-babel": "^3.3.0", "@vue/cli-plugin-eslint": "^3.3.0", "@vue/cli-service": "^3.3.0", "babel-eslint": "^10.0.1", From bc518a0e82ca2a4eeb798149f3772b9e5cc9fff2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Mon, 14 Jan 2019 12:52:21 +0000 Subject: [PATCH 0061/1487] chore(deps): bump vue and vue-template-compiler (#72) Bumps [vue](https://github.com/vuejs/vue) and [vue-template-compiler](https://github.com/vuejs/vue). These dependencies needed to be updated together. Updates `vue` from 2.5.21 to 2.5.22 - [Release notes](https://github.com/vuejs/vue/releases) - [Commits](https://github.com/vuejs/vue/compare/v2.5.21...v2.5.22) Updates `vue-template-compiler` from 2.5.21 to 2.5.22 - [Release notes](https://github.com/vuejs/vue/releases) - [Commits](https://github.com/vuejs/vue/compare/v2.5.21...v2.5.22) Signed-off-by: dependabot[bot] --- package-lock.json | 12 ++++++------ package.json | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6881c9fc..6117dad7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10584,9 +10584,9 @@ } }, "vue": { - "version": "2.5.21", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.5.21.tgz", - "integrity": "sha512-Aejvyyfhn0zjVeLvXd70h4hrE4zZDx1wfZqia6ekkobLmUZ+vNFQer53B4fu0EjWBSiqApxPejzkO1Znt3joxQ==" + "version": "2.5.22", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.5.22.tgz", + "integrity": "sha512-pxY3ZHlXNJMFQbkjEgGVMaMMkSV1ONpz+4qB55kZuJzyJOhn6MSy/YZdzhdnumegNzVTL/Dn3Pp4UrVBYt1j/g==" }, "vue-eslint-parser": { "version": "2.0.3", @@ -10653,9 +10653,9 @@ } }, "vue-template-compiler": { - "version": "2.5.21", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.5.21.tgz", - "integrity": "sha512-Vmk5Cv7UcmI99B9nXJEkaK262IQNnHp5rJYo+EwYpe2epTAXqcVyExhV6pk8jTkxQK2vRc8v8KmZBAwdmUZvvw==", + "version": "2.5.22", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.5.22.tgz", + "integrity": "sha512-1VTw/NPTUeHNiwhkq6NkFzO7gYLjFCueBN0FX8NEiQIemd5EUMQ5hxrF7O0zCPo5tae+U9S/scETPea+hIz8Eg==", "dev": true, "requires": { "de-indent": "^1.0.2", diff --git a/package.json b/package.json index c08f99ae..9da558c2 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "moment": "^2.23.0", "normalize.css": "^8.0.1", "noty": "^3.2.0-beta", - "vue": "^2.5.21", + "vue": "^2.5.22", "vue-i18n": "^8.7.0", "vue-router": "^3.0.2", "vuex": "^3.0.1", @@ -30,7 +30,7 @@ "babel-eslint": "^10.0.1", "eslint": "^5.12.0", "eslint-plugin-vue": "^5.1.0", - "vue-template-compiler": "^2.5.21" + "vue-template-compiler": "^2.5.22" }, "eslintConfig": { "root": true, From de53b24536f11c11584a1b0bc272b462bd993c56 Mon Sep 17 00:00:00 2001 From: freedomlang Date: Wed, 16 Jan 2019 22:31:26 +0800 Subject: [PATCH 0062/1487] update i18n for simplified chinese --- src/i18n/zh-cn.json | 50 ++++++++++++++++++++++----------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/src/i18n/zh-cn.json b/src/i18n/zh-cn.json index 36fb96af..8638cfc0 100644 --- a/src/i18n/zh-cn.json +++ b/src/i18n/zh-cn.json @@ -1,7 +1,7 @@ { "permanent": "永久", "buttons": { - "shell": "Toggle shell", + "shell": "激活 shell", "cancel": "取消", "close": "关闭", "copy": "复制", @@ -38,7 +38,7 @@ "linkCopied": "链接已复制!" }, "errors": { - "forbidden": "You don't have permissions to access this.", + "forbidden": "你无权限访问", "internal": "服务器出了点问题。", "notFound": "找不到文件。" }, @@ -76,13 +76,13 @@ }, "login": { "password": "密码", - "passwordConfirm": "Password Confirmation", + "passwordConfirm": "确认密码", "submit": "登录", - "createAnAccount": "Create an account", - "loginInstead": "Already have an account", - "passwordsDontMatch": "Passwords don't match", - "usernameTaken": "Username already taken", - "signup": "Signup", + "createAnAccount": "创建用户", + "loginInstead": "已有用户登录", + "passwordsDontMatch": "密码不一致", + "usernameTaken": "用户名已经被使用", + "signup": "注册", "username": "用户名", "wrongCredentials": "用户名或密码错误" }, @@ -164,28 +164,28 @@ "username": "用户名", "users": "用户", "globalRules": "This is a global set of allow and disallow rules. They apply to every user. You can define specific rules on each user's settings to override this ones.", - "allowSignup": "Allow users to signup", - "insertRegex": "Insert regex expression", + "allowSignup": "允许用户注册", + "insertRegex": "插入正则表达式", "insertPath": "Insert the path", "userUpdated": "用户已更新!", - "userDefaults": "User default settings", - "defaultUserDescription": "This are the default settings for new users.", + "userDefaults": "用户默认设置", + "defaultUserDescription": "这些是新用户的默认设置", "executeOnShell": "Execute on shell", "executeOnShellDescription": "By default, File Browser executes the commands by calling their binaries directly. If you want to run them on a shell instead (such as Bash or PowerShell), you can define it here with the required arguments and flags. If set, the command you execute will be appended as an argument. This apply to both user commands and event hooks.", "perm": { - "create": "Create files and directories", - "delete": "Delete files and directories", - "download": "Download", - "modify": "Edit files", - "execute": "Execute commands", - "rename": "Rename or move files and directories", - "share": "Share files" + "create": "创建文件和文件夹", + "delete": "删除文件和文件夹", + "download": "下载", + "modify": "编辑", + "execute": "执行命令", + "rename": "重命名或移动文件和文件夹", + "share": "分享文件" } }, "sidebar": { "help": "帮助", - "login": "Login", - "signup": "Signup", + "login": "登录", + "signup": "注册", "logout": "登出", "myFiles": "我的文件", "newFile": "新建文件", @@ -202,8 +202,8 @@ "types": "类型", "video": "视频", "search": "搜索...", - "typeToSearch": "Type to search...", - "pressToSearch": "Press enter to search..." + "typeToSearch": "输入搜索...", + "pressToSearch": "回车搜索..." }, "languages": { "ar": "العربية", @@ -229,7 +229,7 @@ "days": "天" }, "download": { - "downloadFile": "Download File", - "downloadFolder": "Download Folder" + "downloadFile": "下载文件", + "downloadFolder": "下载文件夹" } } \ No newline at end of file From e1e8979e0bece8ba85fffa07c0080448ce4ca2b4 Mon Sep 17 00:00:00 2001 From: freedomlang Date: Wed, 16 Jan 2019 22:51:28 +0800 Subject: [PATCH 0063/1487] update language file for zh-tw --- src/i18n/zh-tw.json | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/i18n/zh-tw.json b/src/i18n/zh-tw.json index 271a251e..3da4d942 100644 --- a/src/i18n/zh-tw.json +++ b/src/i18n/zh-tw.json @@ -82,7 +82,7 @@ "loginInstead": "Already have an account", "passwordsDontMatch": "Passwords don't match", "usernameTaken": "Username already taken", - "signup": "Signup", + "signup": "註冊", "username": "帳號", "wrongCredentials": "帳號或密碼錯誤" }, @@ -173,19 +173,19 @@ "executeOnShell": "Execute on shell", "executeOnShellDescription": "By default, File Browser executes the commands by calling their binaries directly. If you want to run them on a shell instead (such as Bash or PowerShell), you can define it here with the required arguments and flags. If set, the command you execute will be appended as an argument. This apply to both user commands and event hooks.", "perm": { - "create": "Create files and directories", - "delete": "Delete files and directories", - "download": "Download", - "modify": "Edit files", + "create": "建立檔案和資料夾", + "delete": "刪除檔案和資料夾", + "download": "下載", + "modify": "編輯檔案", "execute": "Execute commands", - "rename": "Rename or move files and directories", - "share": "Share files" + "rename": "重命名或移動檔案/資料夾", + "share": "分享檔案" } }, "sidebar": { "help": "幫助", - "login": "Login", - "signup": "Signup", + "login": "登入", + "signup": "註冊", "logout": "登出", "myFiles": "我的檔案", "newFile": "建立檔案", @@ -229,7 +229,7 @@ "days": "天" }, "download": { - "downloadFile": "Download File", - "downloadFolder": "Download Folder" + "downloadFile": "下載檔案", + "downloadFolder": "下載資料夾" } } \ No newline at end of file From 6c1bbb324888e01466cd73c83c151ec8e42c17b3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Fri, 18 Jan 2019 11:26:12 +0000 Subject: [PATCH 0064/1487] chore(deps): bump vuex from 3.0.1 to 3.1.0 Bumps [vuex](https://github.com/vuejs/vuex) from 3.0.1 to 3.1.0. - [Release notes](https://github.com/vuejs/vuex/releases) - [Commits](https://github.com/vuejs/vuex/compare/v3.0.1...v3.1.0) Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6117dad7..b7105843 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10669,9 +10669,9 @@ "dev": true }, "vuex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.0.1.tgz", - "integrity": "sha512-wLoqz0B7DSZtgbWL1ShIBBCjv22GV5U+vcBFox658g6V0s4wZV9P4YjCNyoHSyIBpj1f29JBoNQIqD82cR4O3w==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.1.0.tgz", + "integrity": "sha512-mdHeHT/7u4BncpUZMlxNaIdcN/HIt1GsGG5LKByArvYG/v6DvHcOxvDCts+7SRdCoIRGllK8IMZvQtQXLppDYg==" }, "vuex-router-sync": { "version": "5.0.0", diff --git a/package.json b/package.json index 9da558c2..a8efddeb 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "vue": "^2.5.22", "vue-i18n": "^8.7.0", "vue-router": "^3.0.2", - "vuex": "^3.0.1", + "vuex": "^3.1.0", "vuex-router-sync": "^5.0.0" }, "devDependencies": { From a438fc746f98e5b0c2d6ebfca447ab3c38db31a9 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Sat, 19 Jan 2019 08:37:32 +0000 Subject: [PATCH 0065/1487] feat: update translations (#76) License: MIT Signed-off-by: Henrique Dias --- src/i18n/de.json | 42 +++++++++++++++++++++--------------------- src/i18n/es.json | 20 ++++++++++---------- src/i18n/zh-cn.json | 18 +++++++++--------- src/i18n/zh-tw.json | 16 ++++++++-------- 4 files changed, 48 insertions(+), 48 deletions(-) diff --git a/src/i18n/de.json b/src/i18n/de.json index d31e567c..408f3043 100644 --- a/src/i18n/de.json +++ b/src/i18n/de.json @@ -38,7 +38,7 @@ "linkCopied": "Verweis wurde kopiert !" }, "errors": { - "forbidden": "You don't have permissions to access this.", + "forbidden": "Sie haben keine Berechtigung dies abzurufen.", "internal": "Etwas ist schief gelaufen.", "notFound": "Dieser Ort kann nicht angezeigt werden." }, @@ -76,13 +76,13 @@ }, "login": { "password": "Passwort", - "passwordConfirm": "Password Confirmation", + "passwordConfirm": "Passwort Bestätigung", "submit": "Login", - "createAnAccount": "Create an account", - "loginInstead": "Already have an account", - "passwordsDontMatch": "Passwords don't match", - "usernameTaken": "Username already taken", - "signup": "Signup", + "createAnAccount": "Account erstellen", + "loginInstead": "Account besteht bereits", + "passwordsDontMatch": "Passwörter stimmen nicht überein", + "usernameTaken": "Benutzername ist bereits vergeben", + "signup": "Registrieren", "username": "Benutzername", "wrongCredentials": "Falsche Zugangsdaten" }, @@ -121,9 +121,9 @@ "settings": { "instanceName": "Instance name", "brandingDirectoryPath": "Branding directory path", - "documentation": "documentation", + "documentation": "Dokumentation", "branding": "Branding", - "disableExternalLinks": "Disable external links (except documentation)", + "disableExternalLinks": "Externe Links deaktivieren (außer Dokumentation)", "brandingHelp": "You can costumize how your File Browser instance looks and feels by changing its name, replacing the logo, adding custom styles and even disable external links to GitHub.\nFor more information about custom branding, please check out the {0}.", "admin": "Admin", "administrator": "Administrator", @@ -164,28 +164,28 @@ "username": "Nutzername", "users": "Nutzer", "globalRules": "This is a global set of allow and disallow rules. They apply to every user. You can define specific rules on each user's settings to override this ones.", - "allowSignup": "Allow users to signup", + "allowSignup": "Erlaube Benutzern sich zu registrieren", "insertRegex": "Insert regex expression", "insertPath": "Insert the path", "userUpdated": "Benutzer aktualisiert!", "userDefaults": "User default settings", "defaultUserDescription": "This are the default settings for new users.", - "executeOnShell": "Execute on shell", + "executeOnShell": "In shell ausführen", "executeOnShellDescription": "By default, File Browser executes the commands by calling their binaries directly. If you want to run them on a shell instead (such as Bash or PowerShell), you can define it here with the required arguments and flags. If set, the command you execute will be appended as an argument. This apply to both user commands and event hooks.", "perm": { - "create": "Create files and directories", - "delete": "Delete files and directories", + "create": "Dateien und Ordner erstellen", + "delete": "Dateien und Ordner löschen", "download": "Download", "modify": "Edit files", - "execute": "Execute commands", - "rename": "Rename or move files and directories", - "share": "Share files" + "execute": "Befehle ausführen", + "rename": "Umbenennen oder Verschieben von Dateien oder Ordnern", + "share": "Datei teilen" } }, "sidebar": { "help": "Hilfe", - "login": "Login", - "signup": "Signup", + "login": "Anmelden", + "signup": "Registrieren", "logout": "Logout", "myFiles": "Meine Dateien", "newFile": "Neue Datei", @@ -202,7 +202,7 @@ "types": "Typen", "video": "Video", "search": "Suche...", - "typeToSearch": "Type to search...", + "typeToSearch": "Tippe um zu suchen...", "pressToSearch": "Press enter to search..." }, "languages": { @@ -229,7 +229,7 @@ "days": "Tage" }, "download": { - "downloadFile": "Download File", - "downloadFolder": "Download Folder" + "downloadFile": "Download Datei", + "downloadFolder": "Download Ordner" } } \ No newline at end of file diff --git a/src/i18n/es.json b/src/i18n/es.json index 66d63414..055a0157 100644 --- a/src/i18n/es.json +++ b/src/i18n/es.json @@ -1,7 +1,7 @@ { "permanent": "Permanente", "buttons": { - "shell": "Toggle shell", + "shell": "Presiona Enter para buscar...", "cancel": "Cancelar", "close": "Cerrar", "copy": "Copiar", @@ -79,9 +79,9 @@ "passwordConfirm": "Confirmación de contraseña", "submit": "Iniciar sesión", "createAnAccount": "Crear una cuenta", - "loginInstead": "Already have an account", + "loginInstead": "Usuario ya existente", "passwordsDontMatch": "Las contraseñas no coinciden", - "usernameTaken": "Username already taken", + "usernameTaken": "Nombre usuario no disponible", "signup": "Signup", "username": "Usuario", "wrongCredentials": "Usuario y/o contraseña incorrectos" @@ -119,7 +119,7 @@ "newArchetype": "Crea un nuevo post basado en un arquetipo. Tu archivo será creado en la carpeta de contenido." }, "settings": { - "instanceName": "Instance name", + "instanceName": "Nombre de la instancia", "brandingDirectoryPath": "Branding directory path", "documentation": "documentación", "branding": "Branding", @@ -165,20 +165,20 @@ "users": "Usuarios", "globalRules": "This is a global set of allow and disallow rules. They apply to every user. You can define specific rules on each user's settings to override this ones.", "allowSignup": "Permitir registro de usuarios", - "insertRegex": "Insert regex expression", + "insertRegex": "Introducir expresión regular", "insertPath": "Introduce la ruta", "userUpdated": "¡Usuario actualizado!", "userDefaults": "Configuración de usuario por defecto", "defaultUserDescription": "This are the default settings for new users.", - "executeOnShell": "Execute on shell", + "executeOnShell": "Ejecutar en la shell", "executeOnShellDescription": "By default, File Browser executes the commands by calling their binaries directly. If you want to run them on a shell instead (such as Bash or PowerShell), you can define it here with the required arguments and flags. If set, the command you execute will be appended as an argument. This apply to both user commands and event hooks.", "perm": { "create": "Crear ficheros y directorios", "delete": "Eliminar ficheros y directorios", "download": "Descargar", - "modify": "Edit files", + "modify": "Editar ficheros", "execute": "Executar comandos", - "rename": "Rename or move files and directories", + "rename": "Renombrar o mover ficheros y directorios", "share": "Compartir ficheros" } }, @@ -229,7 +229,7 @@ "days": "Días" }, "download": { - "downloadFile": "Download File", - "downloadFolder": "Download Folder" + "downloadFile": "Descargar fichero", + "downloadFolder": "Descargar directorio" } } \ No newline at end of file diff --git a/src/i18n/zh-cn.json b/src/i18n/zh-cn.json index 8638cfc0..6950c66c 100644 --- a/src/i18n/zh-cn.json +++ b/src/i18n/zh-cn.json @@ -45,7 +45,7 @@ "files": { "folders": "文件夹", "files": "文件", - "body": "Body", + "body": "内容", "clear": "清空", "closePreview": "关闭预览", "home": "主页", @@ -120,11 +120,11 @@ }, "settings": { "instanceName": "Instance name", - "brandingDirectoryPath": "Branding directory path", - "documentation": "documentation", - "branding": "Branding", - "disableExternalLinks": "Disable external links (except documentation)", - "brandingHelp": "You can costumize how your File Browser instance looks and feels by changing its name, replacing the logo, adding custom styles and even disable external links to GitHub.\nFor more information about custom branding, please check out the {0}.", + "brandingDirectoryPath": "品牌信息文件夹路径", + "documentation": "帮助文档", + "branding": "品牌", + "disableExternalLinks": "禁止外部链接(帮助文档除外)", + "brandingHelp": "您可以通过改变名称,更换商标,加入自定义样式,甚至禁用外部链接来自定义File Browser的外观和给人的感觉。\n想获得更多信息,请查看 {0} 。", "admin": "管理员", "administrator": "管理员", "allowCommands": "执行命令(Linux 代码)", @@ -133,7 +133,7 @@ "allowPublish": "发布新的帖子与页面", "avoidChanges": "(留空以避免更改)", "changePassword": "更改密码", - "commandRunner": "Command runner", + "commandRunner": "命令执行器", "commandRunnerHelp": "Here you can set commands that are executed in the named events. You must write one per line. The environment variables {0} and {1} will be available, being {0} relative to {1}. For more information about this feature and the available environment variables, please read the {2}.", "commandsUpdated": "命令已更新!", "customStylesheet": "自定义样式表", @@ -163,14 +163,14 @@ "userManagement": "用户管理", "username": "用户名", "users": "用户", - "globalRules": "This is a global set of allow and disallow rules. They apply to every user. You can define specific rules on each user's settings to override this ones.", + "globalRules": "这是全局允许与禁止规则。它们作用于所有用户。您可以给每个用户定义单独的特殊规则来覆盖全局规则。", "allowSignup": "允许用户注册", "insertRegex": "插入正则表达式", "insertPath": "Insert the path", "userUpdated": "用户已更新!", "userDefaults": "用户默认设置", "defaultUserDescription": "这些是新用户的默认设置", - "executeOnShell": "Execute on shell", + "executeOnShell": "在Shell中执行", "executeOnShellDescription": "By default, File Browser executes the commands by calling their binaries directly. If you want to run them on a shell instead (such as Bash or PowerShell), you can define it here with the required arguments and flags. If set, the command you execute will be appended as an argument. This apply to both user commands and event hooks.", "perm": { "create": "创建文件和文件夹", diff --git a/src/i18n/zh-tw.json b/src/i18n/zh-tw.json index 3da4d942..3a4ce4f3 100644 --- a/src/i18n/zh-tw.json +++ b/src/i18n/zh-tw.json @@ -1,7 +1,7 @@ { "permanent": "永久", "buttons": { - "shell": "Toggle shell", + "shell": "切換 shell", "cancel": "取消", "close": "關閉", "copy": "複製", @@ -38,14 +38,14 @@ "linkCopied": "連結已複製!" }, "errors": { - "forbidden": "You don't have permissions to access this.", + "forbidden": "您無權訪問。", "internal": "伺服器出了點問題。", "notFound": "找不到檔案。" }, "files": { "folders": "資料夾", "files": "檔案", - "body": "Body", + "body": "内容", "clear": "清空", "closePreview": "關閉預覽", "home": "主頁", @@ -76,12 +76,12 @@ }, "login": { "password": "密碼", - "passwordConfirm": "Password Confirmation", + "passwordConfirm": "確認密碼", "submit": "登入", - "createAnAccount": "Create an account", - "loginInstead": "Already have an account", - "passwordsDontMatch": "Passwords don't match", - "usernameTaken": "Username already taken", + "createAnAccount": "新建賬戶", + "loginInstead": "已有賬戶登錄", + "passwordsDontMatch": "密碼不匹配", + "usernameTaken": "用戶名已存在", "signup": "註冊", "username": "帳號", "wrongCredentials": "帳號或密碼錯誤" From 0a46ac3e1ba682196e524453540c7baaf90e5e2a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Mon, 21 Jan 2019 14:55:46 +0000 Subject: [PATCH 0066/1487] chore(deps-dev): bump eslint from 5.12.0 to 5.12.1 (#80) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [eslint](https://github.com/eslint/eslint) from 5.12.0 to 5.12.1.
      Release notes *Sourced from [eslint's releases](https://github.com/eslint/eslint/releases).* > ## v5.12.1 > * [`eb5c401`](https://github.com/eslint/eslint/commit/eb5c4014f16be1c2003ed46ce9560d0d8a567d0f) Chore: use meta.messages in some rules (2/4) (refs [#9870](https://github-redirect.dependabot.com/eslint/eslint/issues/9870)) ([#10773](https://github-redirect.dependabot.com/eslint/eslint/issues/10773)) (薛定谔的猫) > * [`aa56247`](https://github.com/eslint/eslint/commit/aa56247746a0095996a41dd03bdbbf659f0f93b6) Fix: avoid loading core rules dynamically from FS in Linter ([#11278](https://github-redirect.dependabot.com/eslint/eslint/issues/11278)) (Peter Metz) > * [`04450bb`](https://github.com/eslint/eslint/commit/04450bb7ed20f2412102538b238119d9764b4dc9) Docs: clarify process for adding committers ([#11272](https://github-redirect.dependabot.com/eslint/eslint/issues/11272)) (Kai Cataldo) > * [`3ffcf26`](https://github.com/eslint/eslint/commit/3ffcf26c1c83efe7d7cf2d87f1063695ae653709) Docs: add [**g-plane**](https://github.com/g-plane) as committer ([#11277](https://github-redirect.dependabot.com/eslint/eslint/issues/11277)) (Kai Cataldo) > * [`c403445`](https://github.com/eslint/eslint/commit/c40344566eff2e77a6ae2b2d2dbdbd4ad3e76b67) Fix: warn constant on RHS of || in no-constant-condition (fixes [#11181](https://github-redirect.dependabot.com/eslint/eslint/issues/11181)) ([#11253](https://github-redirect.dependabot.com/eslint/eslint/issues/11253)) (Merlin Mason) > * [`9194f45`](https://github.com/eslint/eslint/commit/9194f45ac7d521119a53773bf02b81670bad526e) Fix: Manage severity of 1 with TAP reporter (fixes [#11110](https://github-redirect.dependabot.com/eslint/eslint/issues/11110)) ([#11221](https://github-redirect.dependabot.com/eslint/eslint/issues/11221)) (Gabriel Cousin) > * [`000f495`](https://github.com/eslint/eslint/commit/000f4952ae6a4311fbbc3ed36c481235fcb0b64b) Docs: fix example for sort-imports ignoreDeclarationSort ([#11242](https://github-redirect.dependabot.com/eslint/eslint/issues/11242)) (Remco Haszing) > * [`7c0bf2c`](https://github.com/eslint/eslint/commit/7c0bf2ca92d83125a1fa000c9c4250bae6b4fc21) Docs: Add `npx` usage to Getting Started guide ([#11249](https://github-redirect.dependabot.com/eslint/eslint/issues/11249)) (eyal0803) > * [`da9174e`](https://github.com/eslint/eslint/commit/da9174e0798c1d785ddabb3ae405860fc5b89311) Docs: fixes typo peerDepencies ([#11252](https://github-redirect.dependabot.com/eslint/eslint/issues/11252)) (Christian Kühl) > * [`9c31625`](https://github.com/eslint/eslint/commit/9c31625f19176664ef76dcf088ce50703c41c324) Docs: Improve custom formatter docs ([#11258](https://github-redirect.dependabot.com/eslint/eslint/issues/11258)) (Nicholas C. Zakas)
      Changelog *Sourced from [eslint's changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md).* > v5.12.1 - January 18, 2019 > > * [`eb5c401`](https://github.com/eslint/eslint/commit/eb5c4014f16be1c2003ed46ce9560d0d8a567d0f) Chore: use meta.messages in some rules (2/4) (refs [#9870](https://github-redirect.dependabot.com/eslint/eslint/issues/9870)) ([#10773](https://github-redirect.dependabot.com/eslint/eslint/issues/10773)) (薛定谔的猫) > * [`aa56247`](https://github.com/eslint/eslint/commit/aa56247746a0095996a41dd03bdbbf659f0f93b6) Fix: avoid loading core rules dynamically from FS in Linter ([#11278](https://github-redirect.dependabot.com/eslint/eslint/issues/11278)) (Peter Metz) > * [`04450bb`](https://github.com/eslint/eslint/commit/04450bb7ed20f2412102538b238119d9764b4dc9) Docs: clarify process for adding committers ([#11272](https://github-redirect.dependabot.com/eslint/eslint/issues/11272)) (Kai Cataldo) > * [`3ffcf26`](https://github.com/eslint/eslint/commit/3ffcf26c1c83efe7d7cf2d87f1063695ae653709) Docs: add [**g-plane**](https://github.com/g-plane) as committer ([#11277](https://github-redirect.dependabot.com/eslint/eslint/issues/11277)) (Kai Cataldo) > * [`c403445`](https://github.com/eslint/eslint/commit/c40344566eff2e77a6ae2b2d2dbdbd4ad3e76b67) Fix: warn constant on RHS of || in no-constant-condition (fixes [#11181](https://github-redirect.dependabot.com/eslint/eslint/issues/11181)) ([#11253](https://github-redirect.dependabot.com/eslint/eslint/issues/11253)) (Merlin Mason) > * [`9194f45`](https://github.com/eslint/eslint/commit/9194f45ac7d521119a53773bf02b81670bad526e) Fix: Manage severity of 1 with TAP reporter (fixes [#11110](https://github-redirect.dependabot.com/eslint/eslint/issues/11110)) ([#11221](https://github-redirect.dependabot.com/eslint/eslint/issues/11221)) (Gabriel Cousin) > * [`000f495`](https://github.com/eslint/eslint/commit/000f4952ae6a4311fbbc3ed36c481235fcb0b64b) Docs: fix example for sort-imports ignoreDeclarationSort ([#11242](https://github-redirect.dependabot.com/eslint/eslint/issues/11242)) (Remco Haszing) > * [`7c0bf2c`](https://github.com/eslint/eslint/commit/7c0bf2ca92d83125a1fa000c9c4250bae6b4fc21) Docs: Add `npx` usage to Getting Started guide ([#11249](https://github-redirect.dependabot.com/eslint/eslint/issues/11249)) (eyal0803) > * [`da9174e`](https://github.com/eslint/eslint/commit/da9174e0798c1d785ddabb3ae405860fc5b89311) Docs: fixes typo peerDepencies ([#11252](https://github-redirect.dependabot.com/eslint/eslint/issues/11252)) (Christian Kühl) > * [`9c31625`](https://github.com/eslint/eslint/commit/9c31625f19176664ef76dcf088ce50703c41c324) Docs: Improve custom formatter docs ([#11258](https://github-redirect.dependabot.com/eslint/eslint/issues/11258)) (Nicholas C. Zakas)
      Commits - [`faf3c4e`](https://github.com/eslint/eslint/commit/faf3c4eda0d27323630d0bc103a99dd0ecffe842) 5.12.1 - [`1010c98`](https://github.com/eslint/eslint/commit/1010c98b811a607753c20f8efff269865b86ad0c) Build: changelog update for 5.12.1 - [`eb5c401`](https://github.com/eslint/eslint/commit/eb5c4014f16be1c2003ed46ce9560d0d8a567d0f) Chore: use meta.messages in some rules (2/4) (refs [#9870](https://github-redirect.dependabot.com/eslint/eslint/issues/9870)) ([#10773](https://github-redirect.dependabot.com/eslint/eslint/issues/10773)) - [`aa56247`](https://github.com/eslint/eslint/commit/aa56247746a0095996a41dd03bdbbf659f0f93b6) Fix: avoid loading core rules dynamically from FS in Linter ([#11278](https://github-redirect.dependabot.com/eslint/eslint/issues/11278)) - [`04450bb`](https://github.com/eslint/eslint/commit/04450bb7ed20f2412102538b238119d9764b4dc9) Docs: clarify process for adding committers ([#11272](https://github-redirect.dependabot.com/eslint/eslint/issues/11272)) - [`3ffcf26`](https://github.com/eslint/eslint/commit/3ffcf26c1c83efe7d7cf2d87f1063695ae653709) Docs: add [**g-plane**](https://github.com/g-plane) as committer ([#11277](https://github-redirect.dependabot.com/eslint/eslint/issues/11277)) - [`c403445`](https://github.com/eslint/eslint/commit/c40344566eff2e77a6ae2b2d2dbdbd4ad3e76b67) Fix: warn constant on RHS of || in no-constant-condition (fixes [#11181](https://github-redirect.dependabot.com/eslint/eslint/issues/11181)) ([#11253](https://github-redirect.dependabot.com/eslint/eslint/issues/11253)) - [`9194f45`](https://github.com/eslint/eslint/commit/9194f45ac7d521119a53773bf02b81670bad526e) Fix: Manage severity of 1 with TAP reporter (fixes [#11110](https://github-redirect.dependabot.com/eslint/eslint/issues/11110)) ([#11221](https://github-redirect.dependabot.com/eslint/eslint/issues/11221)) - [`000f495`](https://github.com/eslint/eslint/commit/000f4952ae6a4311fbbc3ed36c481235fcb0b64b) Docs: fix example for sort-imports ignoreDeclarationSort ([#11242](https://github-redirect.dependabot.com/eslint/eslint/issues/11242)) - [`7c0bf2c`](https://github.com/eslint/eslint/commit/7c0bf2ca92d83125a1fa000c9c4250bae6b4fc21) Docs: Add `npx` usage to Getting Started guide ([#11249](https://github-redirect.dependabot.com/eslint/eslint/issues/11249)) - Additional commits viewable in [compare view](https://github.com/eslint/eslint/compare/v5.12.0...v5.12.1)

      [![Dependabot compatibility score](https://api.dependabot.com/badges/compatibility_score?dependency-name=eslint&package-manager=npm_and_yarn&previous-version=5.12.0&new-version=5.12.1)](https://dependabot.com/compatibility-score.html?dependency-name=eslint&package-manager=npm_and_yarn&previous-version=5.12.0&new-version=5.12.1) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
      Dependabot commands and options
      You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot ignore this [patch|minor|major] version` will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) - `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language - `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language - `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language - `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language - `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com): - Update frequency (including time of day and day of week) - Automerge options (never/patch/minor, and dev/runtime dependencies) - Pull request limits (per update run and/or open at any time) - Out-of-range updates (receive only lockfile updates, if desired) - Security updates (receive only security updates, if desired) Finally, you can contact us by mentioning @dependabot.
      --- package-lock.json | 12 ++++++------ package.json | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index b7105843..e0bfb4e0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3901,9 +3901,9 @@ "dev": true }, "eslint": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.12.0.tgz", - "integrity": "sha512-LntwyPxtOHrsJdcSwyQKVtHofPHdv+4+mFwEe91r2V13vqpM8yLr7b1sW+Oo/yheOPkWYsYlYJCkzlFAt8KV7g==", + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.12.1.tgz", + "integrity": "sha512-54NV+JkTpTu0d8+UYSA8mMKAG4XAsaOrozA9rCW7tgneg1mevcL7wIotPC+fZ0SkWwdhNqoXoxnQCTBp7UvTsg==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -4073,9 +4073,9 @@ } }, "table": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/table/-/table-5.1.1.tgz", - "integrity": "sha512-NUjapYb/qd4PeFW03HnAuOJ7OMcBkJlqeClWxeNlQ0lXGSb52oZXGzkO0/I0ARegQ2eUT1g2VDJH0eUxDRcHmw==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/table/-/table-5.2.1.tgz", + "integrity": "sha512-qmhNs2GEHNqY5fd2Mo+8N1r2sw/rvTAAvBZTaTx+Y7PHLypqyrxr1MdIu0pLw6Xvl/Gi4ONu/sdceP8vvUjkyA==", "dev": true, "requires": { "ajv": "^6.6.1", diff --git a/package.json b/package.json index a8efddeb..60e25cc7 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "@vue/cli-plugin-eslint": "^3.3.0", "@vue/cli-service": "^3.3.0", "babel-eslint": "^10.0.1", - "eslint": "^5.12.0", + "eslint": "^5.12.1", "eslint-plugin-vue": "^5.1.0", "vue-template-compiler": "^2.5.22" }, From 9264e344d7ef910c38ac1b057f36b6112a196b51 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Mon, 21 Jan 2019 14:55:54 +0000 Subject: [PATCH 0067/1487] chore(deps): bump js-base64 from 2.5.0 to 2.5.1 (#79) Bumps [js-base64](https://github.com/dankogai/js-base64) from 2.5.0 to 2.5.1. - [Release notes](https://github.com/dankogai/js-base64/releases) - [Commits](https://github.com/dankogai/js-base64/compare/2.5.0...2.5.1) Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index e0bfb4e0..a48701bf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6466,9 +6466,9 @@ } }, "js-base64": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.0.tgz", - "integrity": "sha512-wlEBIZ5LP8usDylWbDNhKPEFVFdI5hCHpnVoT/Ysvoi/PRhJENm/Rlh9TvjYB38HFfKZN7OzEbRjmjvLkFw11g==" + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz", + "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==" }, "js-levenshtein": { "version": "1.1.5", diff --git a/package.json b/package.json index 60e25cc7..f1b91695 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "dependencies": { "ace-builds": "^1.4.2", "clipboard": "^2.0.4", - "js-base64": "^2.5.0", + "js-base64": "^2.5.1", "lodash.clonedeep": "^4.5.0", "material-design-icons": "^3.0.1", "moment": "^2.23.0", From 5d5cef2a877e3b283f6e5b717c6b2106c6022a25 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Tue, 22 Jan 2019 17:33:32 +0000 Subject: [PATCH 0068/1487] chore(deps): bump moment from 2.23.0 to 2.24.0 (#83) Bumps [moment](https://github.com/moment/moment) from 2.23.0 to 2.24.0.
      Changelog *Sourced from [moment's changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md).* > ### 2.24.0 [See full changelog](https://gist.github.com/marwahaha/12366fe45bee328f33acf125d4cd540e) > > * Release Jan 21, 2019 > > * [#4338](https://github-redirect.dependabot.com/moment/moment/pull/4338) [bugfix] Fix startOf/endOf DST issues while boosting performance > * [#4553](https://github-redirect.dependabot.com/moment/moment/pull/4553) [feature] Add localeSort param to Locale weekday methods > * [#4887](https://github-redirect.dependabot.com/moment/moment/pull/4887) [bugfix] Make Duration#as work with quarters > * 3 new locales (it-ch, ga, en-SG) > * Lots of locale improvements
      Commits - [`96d0d67`](https://github.com/moment/moment/commit/96d0d6791ab495859d09a868803d31a55c917de1) Build 2.24.0 - [`f57faac`](https://github.com/moment/moment/commit/f57faac11ce872e145f2721c8ac84551bb8d7c21) Bump version to 2.24.0 - [`7eb0ea8`](https://github.com/moment/moment/commit/7eb0ea815ef68f8775dd0f742eb06c927b0be974) Update changelog for 2.24.0 - [`38a19a7`](https://github.com/moment/moment/commit/38a19a7c5b08c6ad5275dc2d4517d083fe0bbda6) [locale] fo: Fixed relativeTimes for m and M ([#4609](https://github-redirect.dependabot.com/moment/moment/issues/4609)) ([#4682](https://github-redirect.dependabot.com/moment/moment/issues/4682)) - [`01ae8ca`](https://github.com/moment/moment/commit/01ae8ca220d1ff84d3d26491eadea1afc5780d2b) [misc] Remove unused variable defaults ([#4959](https://github-redirect.dependabot.com/moment/moment/issues/4959)) - [`24e55df`](https://github.com/moment/moment/commit/24e55dfe72a0f462a1564ed6f827dfd2df24b526) [locale] Extend cs locale with name of the months in genitive ([#4771](https://github-redirect.dependabot.com/moment/moment/issues/4771)) - [`3b80f6a`](https://github.com/moment/moment/commit/3b80f6aab233121b902bbad7c92e9046c34a2b61) [feature] Add localeSort param to Locale weekday methods ([#4553](https://github-redirect.dependabot.com/moment/moment/issues/4553)) - [`bb484bc`](https://github.com/moment/moment/commit/bb484bc7b80520be14466bc49c244bf1433bd3bc) [locale] (es-us) long date is D [de] MMMM [de] YYYY ([#4954](https://github-redirect.dependabot.com/moment/moment/issues/4954)) - [`ba125e7`](https://github.com/moment/moment/commit/ba125e707089c45311a4d14cac92f873aef79f19) [bugfix] (TypeScript) allow update of a single relativeTime handler - [`91550f8`](https://github.com/moment/moment/commit/91550f810c424415559d28eabb9dc3247da24c11) [locale] Capitalization of pt month names ([#4557](https://github-redirect.dependabot.com/moment/moment/issues/4557)) - Additional commits viewable in [compare view](https://github.com/moment/moment/compare/2.23.0...2.24.0)

      [![Dependabot compatibility score](https://api.dependabot.com/badges/compatibility_score?dependency-name=moment&package-manager=npm_and_yarn&previous-version=2.23.0&new-version=2.24.0)](https://dependabot.com/compatibility-score.html?dependency-name=moment&package-manager=npm_and_yarn&previous-version=2.23.0&new-version=2.24.0) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
      Dependabot commands and options
      You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot ignore this [patch|minor|major] version` will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) - `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language - `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language - `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language - `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language - `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com): - Update frequency (including time of day and day of week) - Automerge options (never/patch/minor, and dev/runtime dependencies) - Pull request limits (per update run and/or open at any time) - Out-of-range updates (receive only lockfile updates, if desired) - Security updates (receive only security updates, if desired) Finally, you can contact us by mentioning @dependabot.
      --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index a48701bf..6122db29 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7123,9 +7123,9 @@ } }, "moment": { - "version": "2.23.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.23.0.tgz", - "integrity": "sha512-3IE39bHVqFbWWaPOMHZF98Q9c3LDKGTmypMiTM2QygGXXElkFWIH7GxfmlwmY2vwa+wmNsoYZmG2iusf1ZjJoA==" + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" }, "move-concurrently": { "version": "1.0.1", diff --git a/package.json b/package.json index f1b91695..51c22a91 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "js-base64": "^2.5.1", "lodash.clonedeep": "^4.5.0", "material-design-icons": "^3.0.1", - "moment": "^2.23.0", + "moment": "^2.24.0", "normalize.css": "^8.0.1", "noty": "^3.2.0-beta", "vue": "^2.5.22", From 3ed5f8c0bd53069e4ebf2fea724bb4f2f7eb1197 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Tue, 22 Jan 2019 17:33:41 +0000 Subject: [PATCH 0069/1487] chore(deps-dev): bump @vue/cli-service from 3.3.0 to 3.3.1 (#82) Bumps [@vue/cli-service](https://github.com/vuejs/vue-cli) from 3.3.0 to 3.3.1.
      Commits - See full diff in [compare view](https://github.com/vuejs/vue-cli/commits)

      [![Dependabot compatibility score](https://api.dependabot.com/badges/compatibility_score?dependency-name=@vue/cli-service&package-manager=npm_and_yarn&previous-version=3.3.0&new-version=3.3.1)](https://dependabot.com/compatibility-score.html?dependency-name=@vue/cli-service&package-manager=npm_and_yarn&previous-version=3.3.0&new-version=3.3.1) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
      Dependabot commands and options
      You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot ignore this [patch|minor|major] version` will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) - `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language - `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language - `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language - `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language - `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com): - Update frequency (including time of day and day of week) - Automerge options (never/patch/minor, and dev/runtime dependencies) - Pull request limits (per update run and/or open at any time) - Out-of-range updates (receive only lockfile updates, if desired) - Security updates (receive only security updates, if desired) Finally, you can contact us by mentioning @dependabot.
      --- package-lock.json | 147 +++++++++++++++++++++++----------------------- package.json | 2 +- 2 files changed, 75 insertions(+), 74 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6122db29..9f25976a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1123,9 +1123,9 @@ } }, "@vue/cli-service": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-3.3.0.tgz", - "integrity": "sha512-7PNitKBBCFcGfCvXSiuUGV2GpGA6KEupQcuxQ2xPL5T3UMSAzJLpx7Siw/9++yO4nQEib6yP3YQk2zTfeXWTSA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-3.3.1.tgz", + "integrity": "sha512-fo8Mt4pi6GBxRywPxM3uPRAIW/SltauYPw9RHA44rHWpq2adb4B8REtkqBGXTrtQPw9zsdiqHr0djkVO/yv9BA==", "dev": true, "requires": { "@intervolga/optimize-cssnano-plugin": "^1.0.5", @@ -1172,7 +1172,7 @@ "thread-loader": "^1.2.0", "url-loader": "^1.1.2", "vue-loader": "^15.4.2", - "webpack": "4", + "webpack": ">=4 < 4.29", "webpack-bundle-analyzer": "^3.0.3", "webpack-chain": "^4.11.0", "webpack-dev-server": "^3.1.14", @@ -4244,9 +4244,9 @@ "dev": true }, "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", + "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==", "dev": true }, "eventsource": { @@ -4864,9 +4864,9 @@ "dev": true }, "fsevents": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", - "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz", + "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", "dev": true, "optional": true, "requires": { @@ -4893,7 +4893,7 @@ "optional": true }, "are-we-there-yet": { - "version": "1.1.4", + "version": "1.1.5", "bundled": true, "dev": true, "optional": true, @@ -4919,7 +4919,7 @@ } }, "chownr": { - "version": "1.0.1", + "version": "1.1.1", "bundled": true, "dev": true, "optional": true @@ -4958,7 +4958,7 @@ } }, "deep-extend": { - "version": "0.5.1", + "version": "0.6.0", "bundled": true, "dev": true, "optional": true @@ -5007,7 +5007,7 @@ } }, "glob": { - "version": "7.1.2", + "version": "7.1.3", "bundled": true, "dev": true, "optional": true, @@ -5027,12 +5027,12 @@ "optional": true }, "iconv-lite": { - "version": "0.4.21", + "version": "0.4.24", "bundled": true, "dev": true, "optional": true, "requires": { - "safer-buffer": "^2.1.0" + "safer-buffer": ">= 2.1.2 < 3" } }, "ignore-walk": { @@ -5097,17 +5097,17 @@ "optional": true }, "minipass": { - "version": "2.2.4", + "version": "2.3.5", "bundled": true, "dev": true, "optional": true, "requires": { - "safe-buffer": "^5.1.1", + "safe-buffer": "^5.1.2", "yallist": "^3.0.0" } }, "minizlib": { - "version": "1.1.0", + "version": "1.2.1", "bundled": true, "dev": true, "optional": true, @@ -5131,7 +5131,7 @@ "optional": true }, "needle": { - "version": "2.2.0", + "version": "2.2.4", "bundled": true, "dev": true, "optional": true, @@ -5142,18 +5142,18 @@ } }, "node-pre-gyp": { - "version": "0.10.0", + "version": "0.10.3", "bundled": true, "dev": true, "optional": true, "requires": { "detect-libc": "^1.0.2", "mkdirp": "^0.5.1", - "needle": "^2.2.0", + "needle": "^2.2.1", "nopt": "^4.0.1", "npm-packlist": "^1.1.6", "npmlog": "^4.0.2", - "rc": "^1.1.7", + "rc": "^1.2.7", "rimraf": "^2.6.1", "semver": "^5.3.0", "tar": "^4" @@ -5170,13 +5170,13 @@ } }, "npm-bundled": { - "version": "1.0.3", + "version": "1.0.5", "bundled": true, "dev": true, "optional": true }, "npm-packlist": { - "version": "1.1.10", + "version": "1.2.0", "bundled": true, "dev": true, "optional": true, @@ -5253,12 +5253,12 @@ "optional": true }, "rc": { - "version": "1.2.7", + "version": "1.2.8", "bundled": true, "dev": true, "optional": true, "requires": { - "deep-extend": "^0.5.1", + "deep-extend": "^0.6.0", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" @@ -5288,16 +5288,16 @@ } }, "rimraf": { - "version": "2.6.2", + "version": "2.6.3", "bundled": true, "dev": true, "optional": true, "requires": { - "glob": "^7.0.5" + "glob": "^7.1.3" } }, "safe-buffer": { - "version": "5.1.1", + "version": "5.1.2", "bundled": true, "dev": true, "optional": true @@ -5315,7 +5315,7 @@ "optional": true }, "semver": { - "version": "5.5.0", + "version": "5.6.0", "bundled": true, "dev": true, "optional": true @@ -5368,17 +5368,17 @@ "optional": true }, "tar": { - "version": "4.4.1", + "version": "4.4.8", "bundled": true, "dev": true, "optional": true, "requires": { - "chownr": "^1.0.1", + "chownr": "^1.1.1", "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", - "minizlib": "^1.1.0", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.1", + "safe-buffer": "^5.1.2", "yallist": "^3.0.2" } }, @@ -5389,12 +5389,12 @@ "optional": true }, "wide-align": { - "version": "1.1.2", + "version": "1.1.3", "bundled": true, "dev": true, "optional": true, "requires": { - "string-width": "^1.0.2" + "string-width": "^1.0.2 || 2" } }, "wrappy": { @@ -5404,7 +5404,7 @@ "optional": true }, "yallist": { - "version": "3.0.2", + "version": "3.0.3", "bundled": true, "dev": true, "optional": true @@ -6693,9 +6693,9 @@ } }, "loader-runner": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.1.tgz", - "integrity": "sha512-By6ZFY7ETWOc9RFaAIb23IjJVcM4dvJC/N57nmdz9RSkMXvAXGI7SyVlAw3v8vjtDRlqThgVDVmTnr9fqMlxkw==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", "dev": true }, "loader-utils": { @@ -7246,9 +7246,9 @@ } }, "node-libs-browser": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", - "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz", + "integrity": "sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==", "dev": true, "requires": { "assert": "^1.1.1", @@ -7258,7 +7258,7 @@ "constants-browserify": "^1.0.0", "crypto-browserify": "^3.11.0", "domain-browser": "^1.1.1", - "events": "^1.0.0", + "events": "^3.0.0", "https-browserify": "^1.0.0", "os-browserify": "^0.3.0", "path-browserify": "0.0.0", @@ -7272,7 +7272,7 @@ "timers-browserify": "^2.0.4", "tty-browserify": "0.0.0", "url": "^0.11.0", - "util": "^0.10.3", + "util": "^0.11.0", "vm-browserify": "0.0.4" }, "dependencies": { @@ -7636,9 +7636,9 @@ "dev": true }, "pako": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.7.tgz", - "integrity": "sha512-3HNK5tW4x8o5mO8RuHZp3Ydw9icZXx0RANAOMzlMzx7LVXhMJ4mo3MOBpzyd7r/+RUu8BmndP47LXT+vzjtWcQ==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.8.tgz", + "integrity": "sha512-6i0HVbUfcKaTv+EG8ZTr75az7GFXcLYk9UyLEg7Notv/Ma+z/UG3TCoz6GiNeOrn1E/e63I0X/Hpw18jHOTUnA==", "dev": true }, "parallel-transform": { @@ -7679,16 +7679,17 @@ } }, "parse-asn1": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", - "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.3.tgz", + "integrity": "sha512-VrPoetlz7B/FqjBLD2f5wBVZvsZVLnRUrxVLfRYhGXCODa/NWE4p3Wp+6+aV3ZPL3KM7/OZmxDIwwijD7yuucg==", "dev": true, "requires": { "asn1.js": "^4.0.0", "browserify-aes": "^1.0.0", "create-hash": "^1.1.0", "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3" + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" } }, "parse-json": { @@ -7860,14 +7861,14 @@ "dev": true }, "postcss": { - "version": "7.0.8", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.8.tgz", - "integrity": "sha512-WudsIzuTKRw9IInRTPBgVXJ7DKR26HT09Rxp0g3w0Fqh3TUtYICcUmvC0xURj04o3vdcDtnjCAUCECg/p341iQ==", + "version": "7.0.13", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.13.tgz", + "integrity": "sha512-h8SY6kQTd1wISHWjz+E6cswdhMuyBZRb16pSTv3W4zYZ3/YbyWeJdNUeOXB5IdZqE1U76OUEjjjqsC3z2f3hVg==", "dev": true, "requires": { "chalk": "^2.4.2", "source-map": "^0.6.1", - "supports-color": "^6.0.0" + "supports-color": "^6.1.0" }, "dependencies": { "chalk": { @@ -7899,9 +7900,9 @@ "dev": true }, "supports-color": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", - "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -9513,9 +9514,9 @@ } }, "source-map-support": { - "version": "0.5.9", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", - "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.10.tgz", + "integrity": "sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -10499,9 +10500,9 @@ "dev": true }, "util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", "dev": true, "requires": { "inherits": "2.0.3" @@ -10663,9 +10664,9 @@ } }, "vue-template-es2015-compiler": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.6.0.tgz", - "integrity": "sha512-x3LV3wdmmERhVCYy3quqA57NJW7F3i6faas++pJQWtknWT+n7k30F4TVdHvCLn48peTJFRvCpxs3UuFPqgeELg==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.8.1.tgz", + "integrity": "sha512-mxBBMuSaPG9+NkVMbh28r8gvWQJ8UXxqDxVNeLy2KBUZiSNxZsagjYwLL8gjROb4oaaYtwRv3K8gAmw76I/U7Q==", "dev": true }, "vuex": { @@ -10708,9 +10709,9 @@ } }, "webpack": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.28.1.tgz", - "integrity": "sha512-qAS7BFyS5iuOZzGJxyDXmEI289h7tVNtJ5XMxf6Tz55J2riOyH42uaEsWF0F32TRaI+54SmI6qRgHM3GzsZ+sQ==", + "version": "4.28.4", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.28.4.tgz", + "integrity": "sha512-NxjD61WsK/a3JIdwWjtIpimmvE6UrRi3yG54/74Hk9rwNj5FPkA4DJCf1z4ByDWLkvZhTZE+P3C/eh6UD5lDcw==", "dev": true, "requires": { "@webassemblyjs/ast": "1.7.11", diff --git a/package.json b/package.json index 51c22a91..38cd3ee4 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "devDependencies": { "@vue/cli-plugin-babel": "^3.3.0", "@vue/cli-plugin-eslint": "^3.3.0", - "@vue/cli-service": "^3.3.0", + "@vue/cli-service": "^3.3.1", "babel-eslint": "^10.0.1", "eslint": "^5.12.1", "eslint-plugin-vue": "^5.1.0", From b394540f535b5e9720d7948017bdefe05ef1c7dd Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Wed, 23 Jan 2019 14:48:50 +0000 Subject: [PATCH 0070/1487] fix: only show size when is file or selection License: MIT Signed-off-by: Henrique Dias --- src/components/prompts/Info.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/prompts/Info.vue b/src/components/prompts/Info.vue index 60bdfdfc..3d1cc0d5 100644 --- a/src/components/prompts/Info.vue +++ b/src/components/prompts/Info.vue @@ -8,7 +8,7 @@

      {{ $t('prompts.filesSelected', { count: selected.length }) }}

      {{ $t('prompts.displayName') }} {{ name }}

      -

      {{ $t('prompts.size') }}: {{ humanSize }}

      +

      {{ $t('prompts.size') }}: {{ humanSize }}

      {{ $t('prompts.lastModified') }}: {{ humanTime }}

      diff --git a/frontend/src/components/files/ExtendedImage.vue b/frontend/src/components/files/ExtendedImage.vue index aeb27981..4cfe247e 100644 --- a/frontend/src/components/files/ExtendedImage.vue +++ b/frontend/src/components/files/ExtendedImage.vue @@ -77,6 +77,13 @@ export default { window.removeEventListener('resize', this.onResize) document.removeEventListener('mouseup', this.onMouseUp) }, + watch: { + src: function () { + this.scale = 1 + this.setZoom() + this.setCenter() + } + }, methods: { onLoad() { let img = this.$refs.imgex diff --git a/frontend/src/components/files/Preview.vue b/frontend/src/components/files/Preview.vue index 519e259a..7a2ded1b 100644 --- a/frontend/src/components/files/Preview.vue +++ b/frontend/src/components/files/Preview.vue @@ -9,6 +9,7 @@ {{ this.name }}
+ @@ -65,8 +66,9 @@ diff --git a/frontend/src/components/settings/UserForm.vue b/frontend/src/components/settings/UserForm.vue index 35a872f8..8082d5e1 100644 --- a/frontend/src/components/settings/UserForm.vue +++ b/frontend/src/components/settings/UserForm.vue @@ -25,7 +25,7 @@

- +

{{ $t('settings.rules') }}

@@ -40,6 +40,7 @@ import Languages from './Languages' import Rules from './Rules' import Permissions from './Permissions' import Commands from './Commands' +import { enableExec } from '@/utils/constants' export default { name: 'user', @@ -53,7 +54,8 @@ export default { computed: { passwordPlaceholder () { return this.isNew ? '' : this.$t('settings.avoidChanges') - } + }, + isExecEnabled: () => enableExec }, watch: { 'user.perm.admin': function () { diff --git a/frontend/src/utils/constants.js b/frontend/src/utils/constants.js index e4689dae..d4a8fd79 100644 --- a/frontend/src/utils/constants.js +++ b/frontend/src/utils/constants.js @@ -13,6 +13,7 @@ const loginPage = window.FileBrowser.LoginPage const theme = window.FileBrowser.Theme const enableThumbs = window.FileBrowser.EnableThumbs const resizePreview = window.FileBrowser.ResizePreview +const enableExec = window.FileBrowser.EnableExec export { name, @@ -28,5 +29,6 @@ export { loginPage, theme, enableThumbs, - resizePreview + resizePreview, + enableExec } diff --git a/frontend/src/views/Layout.vue b/frontend/src/views/Layout.vue index c5e6c2ef..85991d48 100644 --- a/frontend/src/views/Layout.vue +++ b/frontend/src/views/Layout.vue @@ -7,7 +7,7 @@
- +
@@ -19,6 +19,7 @@ import Sidebar from '@/components/Sidebar' import Prompts from '@/components/prompts/Prompts' import SiteHeader from '@/components/Header' import Shell from '@/components/Shell' +import { enableExec } from '@/utils/constants' export default { name: 'layout', @@ -30,7 +31,8 @@ export default { }, computed: { ...mapGetters([ 'isLogged', 'progress' ]), - ...mapState([ 'user' ]) + ...mapState([ 'user' ]), + isExecEnabled: () => enableExec }, watch: { '$route': function () { diff --git a/frontend/src/views/settings/Global.vue b/frontend/src/views/settings/Global.vue index a0fbfa8a..fd72ae5d 100644 --- a/frontend/src/views/settings/Global.vue +++ b/frontend/src/views/settings/Global.vue @@ -14,9 +14,11 @@

{{ $t('settings.globalRules') }}

-

{{ $t('settings.executeOnShell') }}

-

{{ $t('settings.executeOnShellDescription') }}

- +
+

{{ $t('settings.executeOnShell') }}

+

{{ $t('settings.executeOnShellDescription') }}

+ +

{{ $t('settings.branding') }}

@@ -67,7 +69,7 @@
-
+

{{ $t('settings.commandRunner') }}

@@ -104,6 +106,7 @@ import { settings as api } from '@/api' import UserForm from '@/components/settings/UserForm' import Rules from '@/components/settings/Rules' import Themes from '@/components/settings/Themes' +import { enableExec } from '@/utils/constants' export default { name: 'settings', @@ -119,7 +122,8 @@ export default { } }, computed: { - ...mapState([ 'user' ]) + ...mapState([ 'user' ]), + isExecEnabled: () => enableExec }, async created () { try { diff --git a/http/commands.go b/http/commands.go index cdb5ea1e..6c37adc2 100644 --- a/http/commands.go +++ b/http/commands.go @@ -59,7 +59,7 @@ var commandsHandler = withUser(func(w http.ResponseWriter, r *http.Request, d *d } } - if !d.user.CanExecute(strings.Split(raw, " ")[0]) { + if !d.server.EnableExec || !d.user.CanExecute(strings.Split(raw, " ")[0]) { if err := conn.WriteMessage(websocket.TextMessage, cmdNotAllowed); err != nil { //nolint:shadow wsErr(conn, r, http.StatusInternalServerError, err) } diff --git a/http/data.go b/http/data.go index 8fdff7be..2106d4c5 100644 --- a/http/data.go +++ b/http/data.go @@ -51,7 +51,7 @@ func handle(fn handleFunc, prefix string, store *storage.Storage, server *settin } status, err := fn(w, r, &data{ - Runner: &runner.Runner{Settings: settings}, + Runner: &runner.Runner{Enabled: server.EnableExec, Settings: settings}, store: store, settings: settings, server: server, diff --git a/http/static.go b/http/static.go index 32ed3fa1..ab203b8c 100644 --- a/http/static.go +++ b/http/static.go @@ -41,6 +41,7 @@ func handleWithStaticData(w http.ResponseWriter, _ *http.Request, d *data, box * "Theme": d.settings.Branding.Theme, "EnableThumbs": d.server.EnableThumbnails, "ResizePreview": d.server.ResizePreview, + "EnableExec": d.server.EnableExec, } if d.settings.Branding.Files != "" { diff --git a/runner/runner.go b/runner/runner.go index b281ec28..9d8cc70c 100644 --- a/runner/runner.go +++ b/runner/runner.go @@ -13,6 +13,7 @@ import ( // Runner is a commands runner. type Runner struct { + Enabled bool *settings.Settings } @@ -21,11 +22,13 @@ func (r *Runner) RunHook(fn func() error, evt, path, dst string, user *users.Use path = user.FullPath(path) dst = user.FullPath(dst) - if val, ok := r.Commands["before_"+evt]; ok { - for _, command := range val { - err := r.exec(command, "before_"+evt, path, dst, user) - if err != nil { - return err + if r.Enabled { + if val, ok := r.Commands["before_"+evt]; ok { + for _, command := range val { + err := r.exec(command, "before_"+evt, path, dst, user) + if err != nil { + return err + } } } } @@ -35,11 +38,13 @@ func (r *Runner) RunHook(fn func() error, evt, path, dst string, user *users.Use return err } - if val, ok := r.Commands["after_"+evt]; ok { - for _, command := range val { - err := r.exec(command, "after_"+evt, path, dst, user) - if err != nil { - return err + if r.Enabled { + if val, ok := r.Commands["after_"+evt]; ok { + for _, command := range val { + err := r.exec(command, "after_"+evt, path, dst, user) + if err != nil { + return err + } } } } diff --git a/settings/settings.go b/settings/settings.go index c6dbb0f9..6bf4c4db 100644 --- a/settings/settings.go +++ b/settings/settings.go @@ -40,6 +40,7 @@ type Server struct { Log string `json:"log"` EnableThumbnails bool `json:"enableThumbnails"` ResizePreview bool `json:"resizePreview"` + EnableExec bool `json:"enableExec"` } // Clean cleans any variables that might need cleaning. From ad99bf180197e0e6d82231a86457585de16366a8 Mon Sep 17 00:00:00 2001 From: Xabi Date: Fri, 2 Oct 2020 15:09:03 +0200 Subject: [PATCH 0401/1487] fix: fix panic when accessing nonexistent .js file in static path (#1105) --- http/static.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/http/static.go b/http/static.go index ab203b8c..d34302cf 100644 --- a/http/static.go +++ b/http/static.go @@ -79,7 +79,14 @@ func handleWithStaticData(w http.ResponseWriter, _ *http.Request, d *data, box * data["Json"] = string(b) - index := template.Must(template.New("index").Delims("[{[", "]}]").Parse(box.MustString(file))) + fileContents, err := box.String(file) + if err != nil { + if err == os.ErrNotExist { + return http.StatusNotFound, err + } + return http.StatusInternalServerError, err + } + index := template.Must(template.New("index").Delims("[{[", "]}]").Parse(fileContents)) err = index.Execute(w, data) if err != nil { return http.StatusInternalServerError, err From 36fb9f562a2c005ca4390fdebde0b4690201dff9 Mon Sep 17 00:00:00 2001 From: Daniel Pham Date: Mon, 5 Oct 2020 00:52:27 -0700 Subject: [PATCH 0402/1487] fix: fix empty command name (#1106) --- cmd/config_init.go | 3 +-- cmd/config_set.go | 4 +--- cmd/utils.go | 13 +++++++++++++ 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/cmd/config_init.go b/cmd/config_init.go index 86a69914..584d382e 100644 --- a/cmd/config_init.go +++ b/cmd/config_init.go @@ -2,7 +2,6 @@ package cmd import ( "fmt" - "strings" "github.com/spf13/cobra" @@ -32,7 +31,7 @@ override the options.`, s := &settings.Settings{ Key: generateKey(), Signup: mustGetBool(flags, "signup"), - Shell: strings.Split(strings.TrimSpace(mustGetString(flags, "shell")), " "), + Shell: convertCmdStrToCmdArray(mustGetString(flags, "shell")), AuthMethod: authMethod, Defaults: defaults, Branding: settings.Branding{ diff --git a/cmd/config_set.go b/cmd/config_set.go index 9b49b234..e959bc97 100644 --- a/cmd/config_set.go +++ b/cmd/config_set.go @@ -1,8 +1,6 @@ package cmd import ( - "strings" - "github.com/spf13/cobra" "github.com/spf13/pflag" ) @@ -50,7 +48,7 @@ you want to change. Other options will remain unchanged.`, case "auth.method": hasAuth = true case "shell": - set.Shell = strings.Split(strings.TrimSpace(mustGetString(flags, flag.Name)), " ") + set.Shell = convertCmdStrToCmdArray(mustGetString(flags, flag.Name)) case "branding.name": set.Branding.Name = mustGetString(flags, flag.Name) case "branding.disableExternal": diff --git a/cmd/utils.go b/cmd/utils.go index bd5ec2f3..f0ff8a26 100644 --- a/cmd/utils.go +++ b/cmd/utils.go @@ -7,6 +7,7 @@ import ( "log" "os" "path/filepath" + "strings" "github.com/asdine/storm" "github.com/spf13/cobra" @@ -178,3 +179,15 @@ func cleanUpMapValue(v interface{}) interface{} { return v } } + +// convertCmdStrToCmdArray checks if cmd string is blank (whitespace included) +// then returns empty string array, else returns the splitted word array of cmd. +// This is to ensure the result will never be []string{""} +func convertCmdStrToCmdArray(cmd string) []string { + var cmdArray []string + trimmedCmdStr := strings.TrimSpace(cmd) + if trimmedCmdStr != "" { + cmdArray = strings.Split(trimmedCmdStr, " ") + } + return cmdArray +} From 5aaeb3b76d833381d90bec5e1500ccdaecfb2bf5 Mon Sep 17 00:00:00 2001 From: Oleg Lobanov Date: Mon, 5 Oct 2020 09:53:09 +0200 Subject: [PATCH 0403/1487] chore(release): 2.8.0 --- CHANGELOG.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a8b6e617..123f56bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,23 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [2.8.0](https://github.com/filebrowser/filebrowser/compare/v2.7.0...v2.8.0) (2020-10-05) + + +### Features + +* add disable exec flag ([#1090](https://github.com/filebrowser/filebrowser/issues/1090)) ([97693cc](https://github.com/filebrowser/filebrowser/commit/97693cc6117ce1c956baede91de5dd48b904e175)) + + +### Bug Fixes + +* empty commands setting ([c6d4fcd](https://github.com/filebrowser/filebrowser/commit/c6d4fcd08f5f1531c2cef514dc86019e23e7289f)) +* file upload path encoding ([babd778](https://github.com/filebrowser/filebrowser/commit/babd7783afe85b790e1c558375d7b5013b2d366f)) +* fix empty command name ([#1106](https://github.com/filebrowser/filebrowser/issues/1106)) ([36fb9f5](https://github.com/filebrowser/filebrowser/commit/36fb9f562a2c005ca4390fdebde0b4690201dff9)) +* fix panic when accessing nonexistent .js file in static path ([#1105](https://github.com/filebrowser/filebrowser/issues/1105)) ([ad99bf1](https://github.com/filebrowser/filebrowser/commit/ad99bf180197e0e6d82231a86457585de16366a8)) +* preview key shortcut conflict ([dd7b9dd](https://github.com/filebrowser/filebrowser/commit/dd7b9ddd8546361060ef99e838a691b2fc6c495a)) +* search results absolute url ([26d62e4](https://github.com/filebrowser/filebrowser/commit/26d62e411716a5eb9a5a703e47484cfb3fbf3bd0)) + ## [2.7.0](https://github.com/filebrowser/filebrowser/compare/v2.6.2...v2.7.0) (2020-09-11) From 5e27ba5c8c1be603c6ae7fec8de48e3532dea1f7 Mon Sep 17 00:00:00 2001 From: Ramires Viana <59319979+ramiresviana@users.noreply.github.com> Date: Mon, 19 Oct 2020 13:11:26 +0000 Subject: [PATCH 0404/1487] fix: file upload missing path slash --- frontend/src/components/files/Listing.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/files/Listing.vue b/frontend/src/components/files/Listing.vue index 96e93670..60a50c80 100644 --- a/frontend/src/components/files/Listing.vue +++ b/frontend/src/components/files/Listing.vue @@ -368,7 +368,7 @@ export default { } let files = await upload.scanFiles(dt) - let path = this.$route.path + base + let path = this.$route.path.endsWith('/') ? this.$route.path + base : this.$route.path + '/' + base let items = this.req.items if (base !== '') { @@ -409,7 +409,7 @@ export default { } } - let path = this.$route.path + let path = this.$route.path.endsWith('/') ? this.$route.path : this.$route.path + '/' let conflict = upload.checkConflict(files, this.req.items) if (conflict) { From 2bd163d92a856d65c8d4615e37898470c1edf2f4 Mon Sep 17 00:00:00 2001 From: Ramires Viana <59319979+ramiresviana@users.noreply.github.com> Date: Mon, 19 Oct 2020 13:14:36 +0000 Subject: [PATCH 0405/1487] fix: search missing path slash --- frontend/src/api/search.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/frontend/src/api/search.js b/frontend/src/api/search.js index 9dfaf8ee..ecbc9b04 100644 --- a/frontend/src/api/search.js +++ b/frontend/src/api/search.js @@ -16,6 +16,11 @@ export default async function search (base, query) { data = data.map((item) => { item.url = `/files${base}` + url.encodePath(item.path) + + if (item.dir) { + item.url += '/' + } + return item }) From 05bff54b71543fd232f1089c40504d0cbfd106be Mon Sep 17 00:00:00 2001 From: Ramires Viana <59319979+ramiresviana@users.noreply.github.com> Date: Mon, 19 Oct 2020 13:25:09 +0000 Subject: [PATCH 0406/1487] fix: preview case sensitive file extension --- frontend/src/components/files/Preview.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/components/files/Preview.vue b/frontend/src/components/files/Preview.vue index 0ae10e32..71d50632 100644 --- a/frontend/src/components/files/Preview.vue +++ b/frontend/src/components/files/Preview.vue @@ -52,7 +52,7 @@ but don't worry, you can download it and watch it with your favorite video player! - +

{{ $t('buttons.download') }} file_download

From f2c4e78381610879eda5316d38a999c89df6c14a Mon Sep 17 00:00:00 2001 From: Ramires Viana <59319979+ramiresviana@users.noreply.github.com> Date: Mon, 19 Oct 2020 13:41:40 +0000 Subject: [PATCH 0407/1487] fix: allow start from Windows explorer --- cmd/root.go | 1 + 1 file changed, 1 insertion(+) diff --git a/cmd/root.go b/cmd/root.go index 8fe0393a..86a7e0bf 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -35,6 +35,7 @@ var ( func init() { cobra.OnInitialize(initConfig) + cobra.MousetrapHelpText = "" rootCmd.SetVersionTemplate("File Browser version {{printf \"%s\" .Version}}\n") From 0dca0b92d1146b8bcad4a73ded39e7a446cbbaeb Mon Sep 17 00:00:00 2001 From: Hissy Date: Wed, 21 Oct 2020 22:39:41 +0800 Subject: [PATCH 0408/1487] chore: update zh-cn and zh-tw (#1121) --- frontend/src/i18n/en.json | 2 +- frontend/src/i18n/zh-cn.json | 51 ++++++++++++++++++++------------- frontend/src/i18n/zh-tw.json | 55 +++++++++++++++++++++--------------- 3 files changed, 65 insertions(+), 43 deletions(-) diff --git a/frontend/src/i18n/en.json b/frontend/src/i18n/en.json index 7617caaf..31ecc905 100644 --- a/frontend/src/i18n/en.json +++ b/frontend/src/i18n/en.json @@ -179,7 +179,7 @@ "userDefaults": "User default settings", "defaultUserDescription": "This are the default settings for new users.", "executeOnShell": "Execute on shell", - "executeOnShellDescription": "By default, File Browser executes the commands by calling their binaries directly. If you want to run them on a shell instead (such as Bash or PowerShell), you can define it here with the required arguments and flags. If set, the command you execute will be appended as an argument. This apply to both user commands and event hooks.", + "executeOnShellDescription": "By default, File Browser executes the commands by calling their binaries directly. If you want to run them on a shell instead (such as Bash or PowerShell), you can define it here with the required arguments and flags. If set, the command you execute will be appended as an argument. This apply to both user commands and event hooks.", "perm": { "create": "Create files and directories", "delete": "Delete files and directories", diff --git a/frontend/src/i18n/zh-cn.json b/frontend/src/i18n/zh-cn.json index 861a8601..67564253 100644 --- a/frontend/src/i18n/zh-cn.json +++ b/frontend/src/i18n/zh-cn.json @@ -90,8 +90,8 @@ "copy": "复制", "copyMessage": "请选择欲复制至的目录:", "currentlyNavigating": "当前目录:", - "deleteMessageMultiple": "你确定要删除这 {count} 个文件吗?", - "deleteMessageSingle": "你确定要删除这个文件/文件夹吗?", + "deleteMessageMultiple": "你确定要删除这 {count} 个文件吗?", + "deleteMessageSingle": "你确定要删除这个文件/文件夹吗?", "deleteTitle": "删除文件", "displayName": "名称:", "download": "下载文件", @@ -112,31 +112,38 @@ "replaceMessage": "您尝试上传的文件中有一个与现有文件的名称存在冲突。是否替换现有的同名文件?", "rename": "重命名", "renameMessage": "请输入新名称,旧名称为:", - "show": "揭示", + "show": "点击以显示", "size": "大小", "schedule": "计划", "scheduleMessage": "请选择发布这篇帖子的日期。", - "newArchetype": "创建一个基于原型的新帖子。您的文件将会创建在内容文件夹中。" + "newArchetype": "创建一个基于原型的新帖子。您的文件将会创建在内容文件夹中。", + "upload": "上传", + "uploadMessage": "选择上传项。" }, "settings": { - "instanceName": "Instance name", + "themes": { + "title": "主题", + "light": "浅色", + "dark": "深色" + }, + "instanceName": "实例名称", "brandingDirectoryPath": "品牌信息文件夹路径", "documentation": "帮助文档", "branding": "品牌", "disableExternalLinks": "禁止外部链接(帮助文档除外)", - "brandingHelp": "您可以通过改变名称,更换商标,加入自定义样式,甚至禁用外部链接来自定义File Browser的外观和给人的感觉。\n想获得更多信息,请查看 {0} 。", + "brandingHelp": "您可以通过改变实例名称,更换Logo,加入自定义样式,甚至禁用到Github的外部链接来自定义File Browser的外观和给人的感觉。\n想获得更多信息,请查看 {0} 。", "admin": "管理员", "administrator": "管理员", - "allowCommands": "执行命令(Linux 代码)", + "allowCommands": "执行命令(shell 命令)", "allowEdit": "编辑、重命名或删除文件/目录", "allowNew": "创建新文件和目录", "allowPublish": "发布新的帖子与页面", - "avoidChanges": "(留空以避免更改)", + "avoidChanges": "(留空以避免更改)", "changePassword": "更改密码", "commandRunner": "命令执行器", - "commandRunnerHelp": "Here you can set commands that are executed in the named events. You must write one per line. The environment variables {0} and {1} will be available, being {0} relative to {1}. For more information about this feature and the available environment variables, please read the {2}.", + "commandRunnerHelp": "在这里你可以设置在下面的事件中执行的命令。每行必须写一条命令。可以在命令中使用环境变量 {0} 和 {1}。关于此功能和可用环境变量的更多信息,请阅读{2}.", "commandsUpdated": "命令已更新!", - "customStylesheet": "自定义样式表", + "customStylesheet": "自定义样式表(CSS)", "examples": "例子", "globalSettings": "全局设置", "language": "语言", @@ -149,15 +156,15 @@ "permissions": "权限", "permissionsHelp": "您可以将该用户设置为管理员,也可以单独选择各项权限。如果选择了“管理员”,则其他的选项会被自动勾上,同时该用户可以管理其他用户。", "profileSettings": "个人设置", - "ruleExample1": "阻止用户访问所有文件夹下任何以 . 开头的文件(隐藏文件, 例如: .git, .gitignore)。", + "ruleExample1": "阻止用户访问所有文件夹下任何以 . 开头的文件(隐藏文件, 例如: .git, .gitignore)。", "ruleExample2": "阻止用户访问其目录范围的根目录下名为 Caddyfile 的文件。", "rules": "规则", "rulesHelp": "您可以为该用户制定一组黑名单或白名单式的规则,被屏蔽的文件将不会显示在列表中,用户也无权限访问,支持相对于目录范围的路径。", "scope": "目录范围", "settingsUpdated": "设置已更新!", "user": "用户", - "userCommands": "用户命令(Linux 代码)", - "userCommandsHelp": "指定该用户可以执行的命令(Linux 代码),用空格分隔。例如:", + "userCommands": "用户命令(shell 命令)", + "userCommandsHelp": "指定该用户可以执行的命令(shell 代码),用空格分隔。例如:", "userCreated": "用户已创建!", "userDeleted": "用户已删除!", "userManagement": "用户管理", @@ -167,12 +174,12 @@ "allowSignup": "允许用户注册", "createUserDir": "在添加新用户的同时自动创建用户的个人目录", "insertRegex": "插入正则表达式", - "insertPath": "Insert the path", + "insertPath": "插入路径", "userUpdated": "用户已更新!", "userDefaults": "用户默认设置", - "defaultUserDescription": "这些是新用户的默认设置", + "defaultUserDescription": "这些是新用户的默认设置。", "executeOnShell": "在Shell中执行", - "executeOnShellDescription": "By default, File Browser executes the commands by calling their binaries directly. If you want to run them on a shell instead (such as Bash or PowerShell), you can define it here with the required arguments and flags. If set, the command you execute will be appended as an argument. This apply to both user commands and event hooks.", + "executeOnShellDescription": "默认情况下,File Browser通过直接调用命令的二进制包来执行命令,如果想在shell中执行(如Bash、PowerShell),你可以在这里定义所使用的shell和参数。如果设置了这个选项,所执行的命令会作为参数追加在后面。本选项对用户命令和事件钩子都生效。", "perm": { "create": "创建文件和文件夹", "delete": "删除文件和文件夹", @@ -209,18 +216,22 @@ "languages": { "ar": "العربية", "en": "English", + "is": "Icelandic", "it": "Italiano", "fr": "Français", "pt": "Português", - "ptBR": "Português (Brasil)", + "ptBR": "Português(Brasil)", "ja": "日本語", - "zhCN": "中文 (简体)", - "zhTW": "中文 (繁體)", + "zhCN": "中文(简体)", + "zhTW": "中文(繁體)", "es": "Español", "de": "Deutsch", "ru": "Русский", "pl": "Polski", - "ko": "한국어" + "ko": "한국어", + "nlBE": "Dutch(Belgium)", + "ro": "Romanian", + "svSE": "Swedish(Sweden)" }, "time": { "unit": "时间单位", diff --git a/frontend/src/i18n/zh-tw.json b/frontend/src/i18n/zh-tw.json index 279af4fb..87ed0145 100644 --- a/frontend/src/i18n/zh-tw.json +++ b/frontend/src/i18n/zh-tw.json @@ -116,15 +116,22 @@ "size": "大小", "schedule": "計畫", "scheduleMessage": "請選擇發佈這篇貼文的日期。", - "newArchetype": "建立一個基於原型的新貼文。您的檔案將會建立在內容資料夾中。" + "newArchetype": "建立一個基於原型的新貼文。您的檔案將會建立在內容資料夾中。", + "upload": "上傳", + "uploadMessage": "選擇上傳項。" }, "settings": { - "instanceName": "Instance name", - "brandingDirectoryPath": "Branding directory path", - "documentation": "documentation", - "branding": "Branding", - "disableExternalLinks": "Disable external links (except documentation)", - "brandingHelp": "You can costumize how your File Browser instance looks and feels by changing its name, replacing the logo, adding custom styles and even disable external links to GitHub.\nFor more information about custom branding, please check out the {0}.", + "themes": { + "title": "主題", + "light": "淺色", + "dark": "深色" + }, + "instanceName": "例項名稱", + "brandingDirectoryPath": "品牌資訊資料夾路徑", + "documentation": "幫助文件", + "branding": "品牌", + "disableExternalLinks": "禁止外部連結(幫助文件除外)", + "brandingHelp": "您可以通過改變例項名稱,更換Logo,加入自定義樣式,甚至禁用到Github的外部連結來自定義File Browser的外觀和給人的感覺。\n想獲得更多資訊,請檢視 {0} 。", "admin": "管理員", "administrator": "管理員", "allowCommands": "執行命令", @@ -133,8 +140,8 @@ "allowPublish": "發佈新的貼文與頁面", "avoidChanges": "(留空以避免更改)", "changePassword": "更改密碼", - "commandRunner": "Command runner", - "commandRunnerHelp": "Here you can set commands that are executed in the named events. You must write one per line. The environment variables {0} and {1} will be available, being {0} relative to {1}. For more information about this feature and the available environment variables, please read the {2}.", + "commandRunner": "命令執行器", + "commandRunnerHelp": "在這裡你可以設定在下面的事件中執行的命令。每行必須寫一條命令。可以在命令中使用環境變數 {0} 和 {1}。關於此功能和可用環境變數的更多資訊,請閱讀{2}.", "commandsUpdated": "命令已更新!", "customStylesheet": "自定義樣式表", "examples": "範例", @@ -163,22 +170,22 @@ "userManagement": "使用者管理", "username": "使用者名稱", "users": "使用者", - "globalRules": "This is a global set of allow and disallow rules. They apply to every user. You can define specific rules on each user's settings to override this ones.", - "allowSignup": "Allow users to signup", - "createUserDir": "Auto create user home dir while adding new user", - "insertRegex": "Insert regex expression", - "insertPath": "Insert the path", + "globalRules": "這是全局允許與禁止規則。它們作用於所有使用者。您可以給每個使用者定義單獨的特殊規則來覆蓋全局規則。", + "allowSignup": "允許使用者註冊", + "createUserDir": "在新增新使用者的同時自動建立使用者的個人目錄", + "insertRegex": "插入正規表示式", + "insertPath": "插入路徑", "userUpdated": "使用者已更新!", - "userDefaults": "User default settings", - "defaultUserDescription": "This are the default settings for new users.", - "executeOnShell": "Execute on shell", - "executeOnShellDescription": "By default, File Browser executes the commands by calling their binaries directly. If you want to run them on a shell instead (such as Bash or PowerShell), you can define it here with the required arguments and flags. If set, the command you execute will be appended as an argument. This apply to both user commands and event hooks.", + "userDefaults": "使用者預設選項", + "defaultUserDescription": "這些是新使用者的預設設定。", + "executeOnShell": "在Shell中執行", + "executeOnShellDescription": "預設情況下,File Browser通過直接呼叫命令的二進位制包來執行命令,如果想在shell中執行(如Bash、PowerShell),你可以在這裡定義所使用的shell和參數。如果設定了這個選項,所執行的命令會作為參數追加在後面。本選項對使用者命令和事件鉤子都生效。", "perm": { "create": "建立檔案和資料夾", "delete": "刪除檔案和資料夾", "download": "下載", "modify": "編輯檔案", - "execute": "Execute commands", + "execute": "執行命令", "rename": "重命名或移動檔案/資料夾", "share": "分享檔案" } @@ -203,12 +210,13 @@ "types": "類型", "video": "影片", "search": "搜尋...", - "typeToSearch": "Type to search...", - "pressToSearch": "Press enter to search..." + "typeToSearch": "輸入以搜尋...", + "pressToSearch": "按確認鍵搜尋..." }, "languages": { "ar": "العربية", "en": "English", + "is": "Icelandic", "it": "Italiano", "fr": "Français", "pt": "Português", @@ -220,7 +228,10 @@ "de": "Deutsch", "ru": "Русский", "pl": "Polski", - "ko": "한국어" + "ko": "한국어", + "nlBE": "Dutch(Belgium)", + "ro": "Romanian", + "svSE": "Swedish(Sweden)" }, "time": { "unit": "時間單位", From 0ac80e8387a69924284259bde448af2813d84ed1 Mon Sep 17 00:00:00 2001 From: Aiden McClelland <3732071+dr-bonez@users.noreply.github.com> Date: Wed, 21 Oct 2020 08:41:09 -0600 Subject: [PATCH 0409/1487] feat: support WKWebview custom protocol (#1113) --- frontend/src/api/files.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/frontend/src/api/files.js b/frontend/src/api/files.js index b3177c9d..08f0d84a 100644 --- a/frontend/src/api/files.js +++ b/frontend/src/api/files.js @@ -85,6 +85,11 @@ export function download (format, ...files) { export async function post (url, content = '', overwrite = false, onupload) { url = removePrefix(url) + let bufferContent + if (content instanceof Blob && !['http:', 'https:'].includes(window.location.protocol)) { + bufferContent = await new Response(content).arrayBuffer() + } + return new Promise((resolve, reject) => { let request = new XMLHttpRequest() request.open('POST', `${baseURL}/api/resources${url}?override=${overwrite}`, true) @@ -108,7 +113,7 @@ export async function post (url, content = '', overwrite = false, onupload) { reject(error) } - request.send(content) + request.send(bufferContent || content) }) } From 9f858398ab7b0555f47bf2cb818df159638a241d Mon Sep 17 00:00:00 2001 From: Oleg Lobanov Date: Wed, 21 Oct 2020 16:52:29 +0200 Subject: [PATCH 0410/1487] chore(release): 2.9.0 --- CHANGELOG.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 123f56bc..f1efee87 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,21 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [2.9.0](https://github.com/filebrowser/filebrowser/compare/v2.8.0...v2.9.0) (2020-10-21) + + +### Features + +* support WKWebview custom protocol ([#1113](https://github.com/filebrowser/filebrowser/issues/1113)) ([0ac80e8](https://github.com/filebrowser/filebrowser/commit/0ac80e8387a69924284259bde448af2813d84ed1)) + + +### Bug Fixes + +* allow start from Windows explorer ([f2c4e78](https://github.com/filebrowser/filebrowser/commit/f2c4e78381610879eda5316d38a999c89df6c14a)) +* file upload missing path slash ([5e27ba5](https://github.com/filebrowser/filebrowser/commit/5e27ba5c8c1be603c6ae7fec8de48e3532dea1f7)) +* preview case sensitive file extension ([05bff54](https://github.com/filebrowser/filebrowser/commit/05bff54b71543fd232f1089c40504d0cbfd106be)) +* search missing path slash ([2bd163d](https://github.com/filebrowser/filebrowser/commit/2bd163d92a856d65c8d4615e37898470c1edf2f4)) + ## [2.8.0](https://github.com/filebrowser/filebrowser/compare/v2.7.0...v2.8.0) (2020-10-05) From d562d1a60daefdf28d30f36f4f1cd669c54516d6 Mon Sep 17 00:00:00 2001 From: Liubomyr Piadyk Date: Thu, 29 Oct 2020 17:29:29 +0100 Subject: [PATCH 0411/1487] chore: fix readme typo (#1128) Commander runner -> Command runner At other places it's referenced as Command runner. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 32b33b8c..48e3811a 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ For installation instructions please refer to our docs at [https://filebrowser.o [Authentication Method](https://filebrowser.org/configuration/authentication-method) - You can change the way the user authenticates with the filebrowser server -[Commander Runner](https://filebrowser.org/configuration/command-runner) - The command runner is a feature that enables you to execute any shell command you want before or after a certain event. +[Command Runner](https://filebrowser.org/configuration/command-runner) - The command runner is a feature that enables you to execute any shell command you want before or after a certain event. [Custom Branding](https://filebrowser.org/configuration/custom-branding) - You can customize your File Browser installation by change its name to any other you want, by adding a global custom style sheet and by using your own logotype if you want. From 1ce3068a99c80c153fd41359255d173bce6e79e8 Mon Sep 17 00:00:00 2001 From: Ramires Viana <59319979+ramiresviana@users.noreply.github.com> Date: Tue, 3 Nov 2020 12:30:56 +0000 Subject: [PATCH 0412/1487] fix: resource rename action invalid path --- http/resource.go | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/http/resource.go b/http/resource.go index e223bc79..daeb344b 100644 --- a/http/resource.go +++ b/http/resource.go @@ -7,6 +7,7 @@ import ( "net/http" "net/url" "os" + "path" "path/filepath" "strings" @@ -122,7 +123,7 @@ var resourcePostPutHandler = withUser(func(w http.ResponseWriter, r *http.Reques } err := d.RunHook(func() error { - dir, _ := filepath.Split(r.URL.Path) + dir, _ := path.Split(r.URL.Path) err := d.user.Fs.MkdirAll(dir, 0775) if err != nil { return err @@ -196,7 +197,8 @@ var resourcePatchHandler = withUser(func(w http.ResponseWriter, r *http.Request, if !d.user.Perm.Rename { return errors.ErrPermissionDenied } - dst = filepath.Clean("/" + dst) + src = path.Clean("/" + src) + dst = path.Clean("/" + dst) return d.user.Fs.Rename(src, dst) default: @@ -221,20 +223,20 @@ func checkParent(src, dst string) error { return nil } -func addVersionSuffix(path string, fs afero.Fs) string { +func addVersionSuffix(source string, fs afero.Fs) string { counter := 1 - dir, name := filepath.Split(path) + dir, name := path.Split(source) ext := filepath.Ext(name) base := strings.TrimSuffix(name, ext) for { - if _, err := fs.Stat(path); err != nil { + if _, err := fs.Stat(source); err != nil { break } renamed := fmt.Sprintf("%s(%d)%s", base, counter, ext) - path = filepath.ToSlash(dir) + renamed + source = path.Join(dir, renamed) counter++ } - return path + return source } From e119bc55ea82cefcbcc0571650107dfd5d73f570 Mon Sep 17 00:00:00 2001 From: Ramires Viana <59319979+ramiresviana@users.noreply.github.com> Date: Tue, 3 Nov 2020 19:17:22 +0000 Subject: [PATCH 0413/1487] feat: shared folder file listing --- frontend/public/themes/dark.css | 6 ++-- frontend/src/css/_share.css | 57 +++++++++++++++++++++++++-------- frontend/src/views/Share.vue | 40 +++++++++++++++++++---- http/public.go | 12 +++++-- 4 files changed, 89 insertions(+), 26 deletions(-) diff --git a/frontend/public/themes/dark.css b/frontend/public/themes/dark.css index 1ee5f1ac..0ff15578 100644 --- a/frontend/public/themes/dark.css +++ b/frontend/public/themes/dark.css @@ -191,10 +191,10 @@ table th { } } -.share__box, .share__box__download { - background: var(--surfaceSecondary) !important; +.share__box, .share__box__header { + background: var(--surfacePrimary) !important; color: var(--textPrimary); } -.share__box__download { +.share__box__header { border-bottom-color: var(--divider); } \ No newline at end of file diff --git a/frontend/src/css/_share.css b/frontend/src/css/_share.css index a0e21153..28d10214 100644 --- a/frontend/src/css/_share.css +++ b/frontend/src/css/_share.css @@ -1,29 +1,58 @@ -.share__box { - text-align: center; - box-shadow: rgba(0, 0, 0, 0.06) 0px 1px 3px, rgba(0, 0, 0, 0.12) 0px 1px 2px; - background: #fff; - display: block; - border-radius: 0.2em; - width: 90%; - max-width: 25em; - margin: 6em auto; +.share { + display: flex; + flex-wrap: wrap; + justify-content: center; + align-items: flex-start; } -.share__box__download { +@media (max-width: 736px) { + .share { + display: block; + } +} + +.share__box { + box-shadow: rgba(0, 0, 0, 0.06) 0px 1px 3px, rgba(0, 0, 0, 0.12) 0px 1px 2px; + background: #fff; + border-radius: 0.2em; + margin: 5px; + overflow: hidden; +} + +.share__box__header { width: 100%; padding: 1em; cursor: pointer; background: #ffffff; - color: rgba(0, 0, 0, 0.5); - border-bottom: 1px solid rgba(0, 0, 0, 0.05); + border-bottom: 1px solid rgba(0, 0, 0, 0.1); } -.share__box__info { +.share__box__body { padding: 2em 3em; } .share__box__title { - margin-top: .2em; + margin: 0 0 2em; overflow: hidden; text-overflow: ellipsis; } + +.share__box__info { + text-align: center; + flex: 1 1 auto; +} + +.share__box__items { + text-align: left; + flex: 10 0 15em; +} + +.share__box__items #listing.list .item { + cursor: auto; + border-left: 0; + border-right: 0; +} + +.share__box__items #listing.list .item .name { + width: auto; +} \ No newline at end of file diff --git a/frontend/src/views/Share.vue b/frontend/src/views/Share.vue index bbc15d75..ae42a271 100644 --- a/frontend/src/views/Share.vue +++ b/frontend/src/views/Share.vue @@ -1,10 +1,10 @@ @@ -34,7 +56,8 @@ export default { data: () => ({ loaded: false, notFound: false, - file: null + file: null, + showLimit: 500 }), watch: { '$route': 'fetchData' @@ -54,6 +77,9 @@ export default { }, }, methods: { + base64: function (name) { + return window.btoa(unescape(encodeURIComponent(name))) + }, fetchData: async function () { try { this.file = await api.getHash(this.hash) diff --git a/http/public.go b/http/public.go index 4467613d..269c5bdd 100644 --- a/http/public.go +++ b/http/public.go @@ -28,7 +28,7 @@ var withHashFile = func(fn handleFunc) handleFunc { Fs: d.user.Fs, Path: link.Path, Modify: d.user.Perm.Modify, - Expand: false, + Expand: true, Checker: d, }) if err != nil { @@ -54,7 +54,15 @@ func ifPathWithName(r *http.Request) string { } var publicShareHandler = withHashFile(func(w http.ResponseWriter, r *http.Request, d *data) (int, error) { - return renderJSON(w, r, d.raw) + file := d.raw.(*files.FileInfo) + + if file.IsDir { + file.Listing.Sorting = files.Sorting{By: "name", Asc: false} + file.Listing.ApplySort() + return renderJSON(w, r, file) + } + + return renderJSON(w, r, file) }) var publicDlHandler = withHashFile(func(w http.ResponseWriter, r *http.Request, d *data) (int, error) { From 4e48ffc14d09dabeea12dc495144277db62b5b7d Mon Sep 17 00:00:00 2001 From: Ramires Viana <59319979+ramiresviana@users.noreply.github.com> Date: Wed, 4 Nov 2020 12:11:18 +0000 Subject: [PATCH 0414/1487] fix: previewer title overflow --- frontend/src/components/files/Preview.vue | 4 +--- frontend/src/css/styles.css | 17 +++++++++-------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/frontend/src/components/files/Preview.vue b/frontend/src/components/files/Preview.vue index 71d50632..1a8435b0 100644 --- a/frontend/src/components/files/Preview.vue +++ b/frontend/src/components/files/Preview.vue @@ -5,9 +5,7 @@ close -
- {{ this.name }} -
+
{{ this.name }}
-
diff --git a/frontend/src/views/settings/Global.vue b/frontend/src/views/settings/Global.vue index a4eadeb2..ada69cc4 100644 --- a/frontend/src/views/settings/Global.vue +++ b/frontend/src/views/settings/Global.vue @@ -3,54 +3,93 @@
-

{{ $t('settings.globalSettings') }}

+

{{ $t("settings.globalSettings") }}

-

{{ $t('settings.allowSignup') }}

+

+ + {{ $t("settings.allowSignup") }} +

-

{{ $t('settings.createUserDir') }}

+

+ + {{ $t("settings.createUserDir") }} +

-

{{ $t('settings.rules') }}

-

{{ $t('settings.globalRules') }}

+

{{ $t("settings.rules") }}

+

{{ $t("settings.globalRules") }}

-

{{ $t('settings.executeOnShell') }}

-

{{ $t('settings.executeOnShellDescription') }}

- +

{{ $t("settings.executeOnShell") }}

+

{{ $t("settings.executeOnShellDescription") }}

+
-

{{ $t('settings.branding') }}

+

{{ $t("settings.branding") }}

- {{ $t('settings.documentation') }} + {{ $t("settings.documentation") }}

- - {{ $t('settings.disableExternalLinks') }} + + {{ $t("settings.disableExternalLinks") }}

- - + +

- - + +

- - + +

-
- +
@@ -58,17 +97,25 @@
-

{{ $t('settings.userDefaults') }}

+

{{ $t("settings.userDefaults") }}

-

{{ $t('settings.defaultUserDescription') }}

+

{{ $t("settings.defaultUserDescription") }}

- +
- +
@@ -76,30 +123,46 @@
-

{{ $t('settings.commandRunner') }}

+

{{ $t("settings.commandRunner") }}

FILE SCOPE - {{ $t('settings.documentation') }} + {{ $t("settings.documentation") }} -
- +
+
- +
- +
@@ -107,80 +170,84 @@ diff --git a/frontend/src/views/settings/Profile.vue b/frontend/src/views/settings/Profile.vue index 9a7503bd..ff8c221e 100644 --- a/frontend/src/views/settings/Profile.vue +++ b/frontend/src/views/settings/Profile.vue @@ -3,18 +3,31 @@
-

{{ $t('settings.profileSettings') }}

+

{{ $t("settings.profileSettings") }}

-

{{ $t('settings.hideDotfiles') }}

-

{{ $t('settings.singleClick') }}

-

{{ $t('settings.language') }}

- +

+ + {{ $t("settings.hideDotfiles") }} +

+

+ + {{ $t("settings.singleClick") }} +

+

{{ $t("settings.language") }}

+
- +
@@ -22,16 +35,32 @@
-

{{ $t('settings.changePassword') }}

+

{{ $t("settings.changePassword") }}

- - + +
- +
@@ -39,75 +68,80 @@ diff --git a/frontend/src/views/settings/Shares.vue b/frontend/src/views/settings/Shares.vue index 030a9906..ce58a99b 100644 --- a/frontend/src/views/settings/Shares.vue +++ b/frontend/src/views/settings/Shares.vue @@ -3,37 +3,51 @@
-

{{ $t('settings.shareManagement') }}

+

{{ $t("settings.shareManagement") }}

- - - + + + - +
{{ $t('settings.path') }}{{ $t('settings.shareDuration') }}{{ $t('settings.username') }}{{ $t("settings.path") }}{{ $t("settings.shareDuration") }}{{ $t("settings.username") }}
{{ link.path }} - - + {{ + link.path + }} + + + {{ link.username }} - + - +
@@ -44,63 +58,67 @@ diff --git a/frontend/src/views/settings/User.vue b/frontend/src/views/settings/User.vue index 20c7e463..d8d56a6e 100644 --- a/frontend/src/views/settings/User.vue +++ b/frontend/src/views/settings/User.vue @@ -3,8 +3,8 @@
-

{{ $t('settings.newUser') }}

-

{{ $t('settings.user') }} {{ user.username }}

+

{{ $t("settings.newUser") }}

+

{{ $t("settings.user") }} {{ user.username }}

@@ -18,11 +18,15 @@ type="button" class="button button--flat button--red" :aria-label="$t('buttons.delete')" - :title="$t('buttons.delete')">{{ $t('buttons.delete') }} + :title="$t('buttons.delete')" + > + {{ $t("buttons.delete") }} + + :value="$t('buttons.save')" + />
@@ -33,16 +37,17 @@
- -
@@ -50,101 +55,103 @@ diff --git a/frontend/src/views/settings/Users.vue b/frontend/src/views/settings/Users.vue index 62e3b671..bca8880f 100644 --- a/frontend/src/views/settings/Users.vue +++ b/frontend/src/views/settings/Users.vue @@ -3,25 +3,34 @@
-

{{ $t('settings.users') }}

- +

{{ $t("settings.users") }}

+
- - - + + + - +
{{ $t('settings.username') }}{{ $t('settings.admin') }}{{ $t('settings.scope') }}{{ $t("settings.username") }}{{ $t("settings.admin") }}{{ $t("settings.scope") }}
{{ user.username }}doneclose + doneclose + {{ user.scope }} - mode_edit + mode_edit
@@ -32,21 +41,21 @@ diff --git a/frontend/vue.config.js b/frontend/vue.config.js index 610e9166..c3f2fdc1 100644 --- a/frontend/vue.config.js +++ b/frontend/vue.config.js @@ -1,5 +1,5 @@ module.exports = { runtimeCompiler: true, - publicPath: '[{[ .StaticURL ]}]', + publicPath: "[{[ .StaticURL ]}]", parallel: 2, -} \ No newline at end of file +}; From dacd511d24531bb908f626a00942852e629a5841 Mon Sep 17 00:00:00 2001 From: Oleg Lobanov Date: Sun, 21 Mar 2021 13:05:22 +0100 Subject: [PATCH 0496/1487] chore: run npm update --- frontend/package-lock.json | 18576 ++++++++++++++++++----------------- frontend/package.json | 1 + 2 files changed, 9293 insertions(+), 9284 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 850ed492..b99bd6c3 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -10,6 +10,7 @@ "dependencies": { "ace-builds": "^1.4.7", "clipboard": "^2.0.4", + "core-js": "^3.9.1", "js-base64": "^2.5.1", "lodash.clonedeep": "^4.5.0", "lodash.throttle": "^4.1.1", @@ -48,29 +49,41 @@ "@babel/highlight": "^7.12.13" } }, + "node_modules/@babel/compat-data": { + "version": "7.13.11", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.11.tgz", + "integrity": "sha512-BwKEkO+2a67DcFeS3RLl0Z3Gs2OvdXewuWjc1Hfokhb5eQWP9YRYH1/+VrVZvql2CfjOiNGqSAFOYt4lsqTHzg==", + "dev": true + }, "node_modules/@babel/core": { - "version": "7.7.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.7.tgz", - "integrity": "sha512-jlSjuj/7z138NLZALxVgrx13AOtqip42ATZP7+kYl53GvDV6+4dCek1mVUo8z8c8Xnw/mx2q3d9HWh3griuesQ==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.10.tgz", + "integrity": "sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.7.7", - "@babel/helpers": "^7.7.4", - "@babel/parser": "^7.7.7", - "@babel/template": "^7.7.4", - "@babel/traverse": "^7.7.4", - "@babel/types": "^7.7.4", + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.9", + "@babel/helper-compilation-targets": "^7.13.10", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helpers": "^7.13.10", + "@babel/parser": "^7.13.10", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", - "json5": "^2.1.0", - "lodash": "^4.17.13", - "resolve": "^1.3.2", - "semver": "^5.4.1", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "semver": "^6.3.0", "source-map": "^0.5.0" }, "engines": { "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, "node_modules/@babel/generator": { @@ -85,78 +98,94 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.7.4.tgz", - "integrity": "sha512-2BQmQgECKzYKFPpiycoF9tlb5HA4lrVyAmLLVK177EcQAqjVLciUb2/R+n1boQ9y5ENV3uz2ZqiNw7QMBBw1Og==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", + "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", "dev": true, "dependencies": { - "@babel/types": "^7.7.4" + "@babel/types": "^7.12.13" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.7.4.tgz", - "integrity": "sha512-Biq/d/WtvfftWZ9Uf39hbPBYDUo986m5Bb4zhkeYDGUllF43D+nUe5M6Vuo6/8JDK/0YX/uBdeoQpyaNhNugZQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", + "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", "dev": true, "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.7.4", - "@babel/types": "^7.7.4" + "@babel/helper-explode-assignable-expression": "^7.12.13", + "@babel/types": "^7.12.13" } }, - "node_modules/@babel/helper-call-delegate": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.7.4.tgz", - "integrity": "sha512-8JH9/B7J7tCYJ2PpWVpw9JhPuEVHztagNVuQAFBVFYluRMlpG7F1CgKEgGeL6KFqcsIa92ZYVj6DSc0XwmN1ZA==", + "node_modules/@babel/helper-compilation-targets": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.10.tgz", + "integrity": "sha512-/Xju7Qg1GQO4mHZ/Kcs6Au7gfafgZnwm+a7sy/ow/tV1sHeraRUHbjdat8/UvDor4Tez+siGKDk6zIKtCPKVJA==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.7.4", - "@babel/traverse": "^7.7.4", - "@babel/types": "^7.7.4" + "@babel/compat-data": "^7.13.8", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.7.4.tgz", - "integrity": "sha512-l+OnKACG4uiDHQ/aJT8dwpR+LhCJALxL0mJ6nzjB25e5IPwqV1VOsY7ah6UB1DG+VOXAIMtuC54rFJGiHkxjgA==", + "version": "7.13.11", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz", + "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.7.4", - "@babel/helper-member-expression-to-functions": "^7.7.4", - "@babel/helper-optimise-call-expression": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.7.4", - "@babel/helper-split-export-declaration": "^7.7.4" + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-member-expression-to-functions": "^7.13.0", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-replace-supers": "^7.13.0", + "@babel/helper-split-export-declaration": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.7.4.tgz", - "integrity": "sha512-Mt+jBKaxL0zfOIWrfQpnfYCN7/rS6GKx6CCCfuoqVVd+17R8zNDlzVYmIi9qyb2wOk002NsmSTDymkIygDUH7A==", + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", + "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", "dev": true, "dependencies": { - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.6.0" + "@babel/helper-annotate-as-pure": "^7.12.13", + "regexpu-core": "^4.7.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-define-map": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.7.4.tgz", - "integrity": "sha512-v5LorqOa0nVQUvAUTUF3KPastvUt/HzByXNamKQ6RdJRTV7j8rLL+WB5C/MzzWAwOomxDhYFb1wLLxHqox86lg==", + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", + "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.7.4", - "@babel/types": "^7.7.4", - "lodash": "^4.17.13" + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" } }, "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.7.4.tgz", - "integrity": "sha512-2/SicuFrNSXsZNBxe5UGdLr+HZg+raWBLE9vC98bdYOKX/U6PY0mdGlYUJdtTDPSU0Lw0PNbKKDpwYHJLn2jLg==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", + "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", "dev": true, "dependencies": { - "@babel/traverse": "^7.7.4", - "@babel/types": "^7.7.4" + "@babel/types": "^7.13.0" } }, "node_modules/@babel/helper-function-name": { @@ -180,103 +209,104 @@ } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.7.4.tgz", - "integrity": "sha512-wQC4xyvc1Jo/FnLirL6CEgPgPCa8M74tOdjWpRhQYapz5JC7u3NYU1zCVoVAGCE3EaIP9T1A3iW0WLJ+reZlpQ==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", + "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", "dev": true, "dependencies": { - "@babel/types": "^7.7.4" + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.7.4.tgz", - "integrity": "sha512-9KcA1X2E3OjXl/ykfMMInBK+uVdfIVakVe7W7Lg3wfXUNyS3Q1HWLFRwZIjhqiCGbslummPDnmb7vIekS0C1vw==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.0.tgz", + "integrity": "sha512-yvRf8Ivk62JwisqV1rFRMxiSMDGnN6KH1/mDMmIrij4jztpQNRoHqqMG3U6apYbGRPJpgPalhva9Yd06HlUxJQ==", "dev": true, "dependencies": { - "@babel/types": "^7.7.4" + "@babel/types": "^7.13.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.7.4.tgz", - "integrity": "sha512-dGcrX6K9l8258WFjyDLJwuVKxR4XZfU0/vTUgOQYWEnRD8mgr+p4d6fCUMq/ys0h4CCt/S5JhbvtyErjWouAUQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz", + "integrity": "sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g==", "dev": true, "dependencies": { - "@babel/types": "^7.7.4" + "@babel/types": "^7.12.13" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.7.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.7.5.tgz", - "integrity": "sha512-A7pSxyJf1gN5qXVcidwLWydjftUN878VkalhXX5iQDuGyiGK3sOrrKKHF4/A4fwHtnsotv/NipwAeLzY4KQPvw==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.0.tgz", + "integrity": "sha512-Ls8/VBwH577+pw7Ku1QkUWIyRRNHpYlts7+qSqBBFCW3I8QteB9DxfcZ5YJpOwH6Ihe/wn8ch7fMGOP1OhEIvw==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.7.4", - "@babel/helper-simple-access": "^7.7.4", - "@babel/helper-split-export-declaration": "^7.7.4", - "@babel/template": "^7.7.4", - "@babel/types": "^7.7.4", - "lodash": "^4.17.13" + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-replace-supers": "^7.13.0", + "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-validator-identifier": "^7.12.11", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0", + "lodash": "^4.17.19" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.7.4.tgz", - "integrity": "sha512-VB7gWZ2fDkSuqW6b1AKXkJWO5NyNI3bFL/kK79/30moK57blr6NbH8xcl2XcKCwOmJosftWunZqfO84IGq3ZZg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", + "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", "dev": true, "dependencies": { - "@babel/types": "^7.7.4" + "@babel/types": "^7.12.13" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", - "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", + "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", "dev": true }, - "node_modules/@babel/helper-regex": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.5.5.tgz", - "integrity": "sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw==", - "dev": true, - "dependencies": { - "lodash": "^4.17.13" - } - }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.7.4.tgz", - "integrity": "sha512-Sk4xmtVdM9sA/jCI80f+KS+Md+ZHIpjuqmYPk1M7F/upHou5e4ReYmExAiu6PVe65BhJPZA2CY9x9k4BqE5klw==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", + "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.7.4", - "@babel/helper-wrap-function": "^7.7.4", - "@babel/template": "^7.7.4", - "@babel/traverse": "^7.7.4", - "@babel/types": "^7.7.4" + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.7.4.tgz", - "integrity": "sha512-pP0tfgg9hsZWo5ZboYGuBn/bbYT/hdLPVSS4NMmiRJdwWhP0IznPwN9AE1JwyGsjSPLC364I0Qh5p+EPkGPNpg==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.0.tgz", + "integrity": "sha512-Segd5me1+Pz+rmN/NFBOplMbZG3SqRJOBlY+mA0SxAv6rjj7zJqr1AVr3SfzUVTLCv7ZLU5FycOM/SBGuLPbZw==", "dev": true, "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.7.4", - "@babel/helper-optimise-call-expression": "^7.7.4", - "@babel/traverse": "^7.7.4", - "@babel/types": "^7.7.4" + "@babel/helper-member-expression-to-functions": "^7.13.0", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.7.4.tgz", - "integrity": "sha512-zK7THeEXfan7UlWsG2A6CI/L9jVnI5+xxKZOdej39Y0YtDYKx9raHk5F2EtK9K8DHRTihYwg20ADt9S36GR78A==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz", + "integrity": "sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA==", "dev": true, "dependencies": { - "@babel/template": "^7.7.4", - "@babel/types": "^7.7.4" + "@babel/types": "^7.12.13" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.12.1" } }, "node_modules/@babel/helper-split-export-declaration": { @@ -294,27 +324,33 @@ "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", "dev": true }, + "node_modules/@babel/helper-validator-option": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", + "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", + "dev": true + }, "node_modules/@babel/helper-wrap-function": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.7.4.tgz", - "integrity": "sha512-VsfzZt6wmsocOaVU0OokwrIytHND55yvyT4BPB9AIIgwr8+x7617hetdJTsuGwygN5RC6mxA9EJztTjuwm2ofg==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", + "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.7.4", - "@babel/template": "^7.7.4", - "@babel/traverse": "^7.7.4", - "@babel/types": "^7.7.4" + "@babel/helper-function-name": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "node_modules/@babel/helpers": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.7.4.tgz", - "integrity": "sha512-ak5NGZGJ6LV85Q1Zc9gn2n+ayXOizryhjSUBTdu5ih1tlVCJeuQENzc4ItyCVhINVXvIT/ZQ4mheGIsfBkpskg==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", + "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", "dev": true, "dependencies": { - "@babel/template": "^7.7.4", - "@babel/traverse": "^7.7.4", - "@babel/types": "^7.7.4" + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "node_modules/@babel/highlight": { @@ -341,546 +377,891 @@ } }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.7.4.tgz", - "integrity": "sha512-1ypyZvGRXriY/QP668+s8sFr2mqinhkRDMPSQLNghCQE+GAkFtp+wkHVvg2+Hdki8gwP+NFzJBJ/N1BfzCCDEw==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", + "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.7.4", - "@babel/plugin-syntax-async-generators": "^7.7.4" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.7.4.tgz", - "integrity": "sha512-EcuXeV4Hv1X3+Q1TsuOmyyxeTRiSqurGJ26+I/FW1WbymmRRapVORm6x1Zl3iDIHyRxEs+VXWp6qnlcfcJSbbw==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", + "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.7.4.tgz", - "integrity": "sha512-GftcVDcLCwVdzKmwOBDjATd548+IE+mBo7ttgatqNDR7VG7GqIuZPtRWlMLHbhTXhcnFZiGER8iIYl1n/imtsg==", + "version": "7.13.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.13.5.tgz", + "integrity": "sha512-i0GDfVNuoapwiheevUOuSW67mInqJ8qw7uWfpjNVeHMn143kXblEy/bmL9AdZ/0yf/4BMQeWXezK0tQIvNPqag==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-decorators": "^7.7.4" + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-decorators": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.7.4.tgz", - "integrity": "sha512-StH+nGAdO6qDB1l8sZ5UBV8AC3F2VW2I8Vfld73TMKyptMU9DY5YsJAS8U81+vEtxcH3Y/La0wG0btDrhpnhjQ==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", + "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.7.4" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", + "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.7.4.tgz", - "integrity": "sha512-wQvt3akcBTfLU/wYoqm/ws7YOAQKu8EVJEvHip/mzkNtjaclQoCCIqKXFP5/eyfnfbQCDV3OLRIK3mIVyXuZlw==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", + "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-json-strings": "^7.7.4" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", + "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", + "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", + "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.7.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.7.7.tgz", - "integrity": "sha512-3qp9I8lelgzNedI3hrhkvhaEYree6+WHnyA/q4Dza9z7iEIs1eyhWyJnetk3jJ69RT0AT4G0UhEGwyGFJ7GUuQ==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", + "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.7.4" + "@babel/compat-data": "^7.13.8", + "@babel/helper-compilation-targets": "^7.13.8", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.7.4.tgz", - "integrity": "sha512-DyM7U2bnsQerCQ+sejcTNZh8KQEUuC3ufzdnVnSiUv/qoGJp2Z3hanKL18KDhsBT5Wj6a7CMT5mdyCNJsEaA9w==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", + "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.7.4" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.8.tgz", + "integrity": "sha512-hpbBwbTgd7Cz1QryvwJZRo1U0k1q8uyBmeXOSQUjdg/A2TASkhR/rz7AyqZ/kS8kbpsNA80rOYbxySBJAqmhhQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", + "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.7.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.7.7.tgz", - "integrity": "sha512-80PbkKyORBUVm1fbTLrHpYdJxMThzM1UqFGh0ALEhO9TYbG86Ah9zQYAB/84axz2vcxefDLdZwWwZNlYARlu9w==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", + "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" }, "engines": { "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.7.4.tgz", - "integrity": "sha512-Li4+EjSpBgxcsmeEF8IFcfV/+yJGxHXDirDkEoyFjumuwbmfCVHUt0HuowD/iGM7OhIRyXJH9YXxqiH6N815+g==", + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.7.4.tgz", - "integrity": "sha512-0oNLWNH4k5ZbBVfAwiTU53rKFWIeTh6ZlaWOXWJc4ywxs0tjz5fc3uZ6jKAnZSxN98eXVgg7bJIuzjX+3SXY+A==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.13.tgz", + "integrity": "sha512-Rw6aIXGuqDLr6/LoBBYE57nKOzQpz/aDkKlMqEwH+Vp0MXbG6H/TfRjaY343LKxzAKAMXIHsQ8JzaZKuDZ9MwA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.7.4.tgz", - "integrity": "sha512-jHQW0vbRGvwQNgyVxwDh4yuXu4bH1f5/EICJLAhl1SblLs2CDhrsmCk+v5XLdE9wxtAFRyxx+P//Iw+a5L/tTg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.7.4.tgz", - "integrity": "sha512-QpGupahTQW1mHRXddMG5srgpHWqRLwJnJZKXTigB9RPFCCGbDGCgBeM/iC82ICXp414WeYx/tD54w7M2qRqTMg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.7.4.tgz", - "integrity": "sha512-wuy6fiMe9y7HeZBWXYCGt2RGxZOj0BImZ9EyXJVnVGBKO/Br592rbR3rtIQn0eQhAk9vqaKP5n8tVqEFBQMfLg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz", + "integrity": "sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.7.4.tgz", - "integrity": "sha512-mObR+r+KZq0XhRVS2BrBKBpr5jqrqzlPvS9C9vuOf5ilSwzloAl7RPWLrgKdWS6IreaVrjHxTjtyqFiOisaCwg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.7.4.tgz", - "integrity": "sha512-4ZSuzWgFxqHRE31Glu+fEr/MirNZOMYmD/0BhBWyLyOOQz/gTAl7QmWm2hX1QxEIXsr2vkdlwxIzTyiYRC4xcQ==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.7.4.tgz", - "integrity": "sha512-wdsOw0MvkL1UIgiQ/IFr3ETcfv1xb8RMM0H9wbiDyLaJFyiDg5oZvDLCXosIXmFeIlweML5iOBXAkqddkYNizg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", + "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.7.4.tgz", - "integrity": "sha512-zUXy3e8jBNPiffmqkHRNDdZM2r8DWhCB7HhcoyZjiK1TxYEluLHAvQuYnTT+ARqRpabWqy/NHkO6e3MsYB5YfA==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", + "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.7.4.tgz", - "integrity": "sha512-zpUTZphp5nHokuy8yLlyafxCJ0rSlFoSHypTUWgpdwoDXWQcseaect7cJ8Ppk6nunOM6+5rPMkod4OYKPR5MUg==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", + "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.7.4" + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-remap-async-to-generator": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.7.4.tgz", - "integrity": "sha512-kqtQzwtKcpPclHYjLK//3lH8OFsCDuDJBaFhVwf8kqdnF6MN4l618UDlcA7TfRs3FayrHj+svYnSX8MC9zmUyQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", + "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.7.4.tgz", - "integrity": "sha512-2VBe9u0G+fDt9B5OV5DQH4KBf5DoiNkwFKOz0TCvBWvdAN2rOykCTkrL+jTLxfCAm76l9Qo5OqL7HBOx2dWggg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", + "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "lodash": "^4.17.13" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.7.4.tgz", - "integrity": "sha512-sK1mjWat7K+buWRuImEzjNf68qrKcrddtpQo3swi9j7dUcG6y6R6+Di039QN2bD1dykeswlagupEmpOatFHHUg==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", + "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.7.4", - "@babel/helper-define-map": "^7.7.4", - "@babel/helper-function-name": "^7.7.4", - "@babel/helper-optimise-call-expression": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.7.4", - "@babel/helper-split-export-declaration": "^7.7.4", + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-replace-supers": "^7.13.0", + "@babel/helper-split-export-declaration": "^7.12.13", "globals": "^11.1.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.7.4.tgz", - "integrity": "sha512-bSNsOsZnlpLLyQew35rl4Fma3yKWqK3ImWMSC/Nc+6nGjC9s5NFWAer1YQ899/6s9HxO2zQC1WoFNfkOqRkqRQ==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", + "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.7.4.tgz", - "integrity": "sha512-4jFMXI1Cu2aXbcXXl8Lr6YubCn6Oc7k9lLsu8v61TZh+1jny2BWmdtvY9zSUlLdGUvcy9DMAWyZEOqjsbeg/wA==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", + "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.7.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.7.7.tgz", - "integrity": "sha512-b4in+YlTeE/QmTgrllnb3bHA0HntYvjz8O3Mcbx75UBPJA2xhb5A8nle498VhxSXJHQefjtQxpnLPehDJ4TRlg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", + "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.7.4.tgz", - "integrity": "sha512-g1y4/G6xGWMD85Tlft5XedGaZBCIVN+/P0bs6eabmcPP9egFleMAo65OOjlhcz1njpwagyY3t0nsQC9oTFegJA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", + "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.7.4.tgz", - "integrity": "sha512-MCqiLfCKm6KEA1dglf6Uqq1ElDIZwFuzz1WH5mTf8k2uQSxEJMbOIEh7IZv7uichr7PMfi5YVSrr1vz+ipp7AQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", + "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.7.4.tgz", - "integrity": "sha512-zZ1fD1B8keYtEcKF+M1TROfeHTKnijcVQm0yO/Yu1f7qoDoxEIc/+GX6Go430Bg84eM/xwPFp0+h4EbZg7epAA==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", + "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.7.4.tgz", - "integrity": "sha512-E/x09TvjHNhsULs2IusN+aJNRV5zKwxu1cpirZyRPw+FyyIKEHPXTsadj48bVpc1R5Qq1B5ZkzumuFLytnbT6g==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", + "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.7.4.tgz", - "integrity": "sha512-X2MSV7LfJFm4aZfxd0yLVFrEXAgPqYoDG53Br/tCKiKYfX0MjVjQeWPIhPHHsCqzwQANq+FLN786fF5rgLS+gw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", + "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.7.4.tgz", - "integrity": "sha512-9VMwMO7i69LHTesL0RdGy93JU6a+qOPuvB4F4d0kR0zyVjJRVJRaoaGjhtki6SzQUu8yen/vxPKN6CWnCUw6bA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", + "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.7.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.7.5.tgz", - "integrity": "sha512-CT57FG4A2ZUNU1v+HdvDSDrjNWBrtCmSH6YbbgN3Lrf0Di/q/lWRxZrE72p3+HCCz9UjfZOEBdphgC0nzOS6DQ==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", + "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.7.5", - "@babel/helper-plugin-utils": "^7.0.0", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.7.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.7.5.tgz", - "integrity": "sha512-9Cq4zTFExwFhQI6MT1aFxgqhIsMWQWDVwOgLzl7PTWJHsNaqFvklAU+Oz6AQLAS0dJKTwZSOCo20INwktxpi3Q==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", + "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.7.5", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-simple-access": "^7.7.4", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-simple-access": "^7.12.13", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.7.4.tgz", - "integrity": "sha512-y2c96hmcsUi6LrMqvmNDPBBiGCiQu0aYqpHatVVu6kD4mFEXKjyNxd/drc18XXAf9dv7UXjrZwBVmTTGaGP8iw==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", + "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-hoist-variables": "^7.13.0", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-identifier": "^7.12.11", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.7.4.tgz", - "integrity": "sha512-u2B8TIi0qZI4j8q4C51ktfO7E3cQ0qnaXFI1/OXITordD40tt17g/sXqgNNCcMTcBFKrUPcGDx+TBJuZxLx7tw==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", + "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.7.4.tgz", - "integrity": "sha512-jBUkiqLKvUWpv9GLSuHUFYdmHg0ujC1JEYoZUfeOOfNydZXp1sXObgyPatpcwjWgsdBGsagWW0cdJpX/DO2jMw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", + "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.7.4" + "@babel/helper-create-regexp-features-plugin": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.7.4.tgz", - "integrity": "sha512-CnPRiNtOG1vRodnsyGX37bHQleHE14B9dnnlgSeEs3ek3fHN1A1SScglTCg1sfbe7sRQ2BUcpgpTpWSfMKz3gg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", + "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.7.4.tgz", - "integrity": "sha512-ho+dAEhC2aRnff2JCA0SAK7V2R62zJd/7dmtoe7MHcso4C2mS+vZjn1Pb1pCVZvJs1mgsvv5+7sT+m3Bysb6eg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", + "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.7.4" + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.7.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.7.7.tgz", - "integrity": "sha512-OhGSrf9ZBrr1fw84oFXj5hgi8Nmg+E2w5L7NhnG0lPvpDtqd7dbyilM2/vR8CKbJ907RyxPh2kj6sBCSSfI9Ew==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", + "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", "dev": true, "dependencies": { - "@babel/helper-call-delegate": "^7.7.4", - "@babel/helper-get-function-arity": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.7.4.tgz", - "integrity": "sha512-MatJhlC4iHsIskWYyawl53KuHrt+kALSADLQQ/HkhTjX954fkxIEh4q5slL4oRAnsm/eDoZ4q0CIZpcqBuxhJQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", + "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.7.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.7.5.tgz", - "integrity": "sha512-/8I8tPvX2FkuEyWbjRCt4qTAgZK0DVy8QRguhA524UH48RfGJy94On2ri+dCuwOpcerPRl9O4ebQkRcVzIaGBw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", + "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", "dev": true, "dependencies": { - "regenerator-transform": "^0.14.0" + "regenerator-transform": "^0.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.7.4.tgz", - "integrity": "sha512-OrPiUB5s5XvkCO1lS7D8ZtHcswIC57j62acAnJZKqGGnHP+TIc/ljQSrgdX/QyOTdEK5COAhuc820Hi1q2UgLQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", + "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.7.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.7.6.tgz", - "integrity": "sha512-tajQY+YmXR7JjTwRvwL4HePqoL3DYxpYXIHKVvrOIvJmeHe2y1w4tz5qz9ObUDC9m76rCzIMPyn4eERuwA4a4A==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.13.10.tgz", + "integrity": "sha512-Y5k8ipgfvz5d/76tx7JYbKQTcgFSU6VgJ3kKQv4zGTKr+a9T/KBvfRvGtSFgKDQGt/DBykQixV0vNWKIdzWErA==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0", - "resolve": "^1.8.1", - "semver": "^5.5.1" + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "babel-plugin-polyfill-corejs2": "^0.1.4", + "babel-plugin-polyfill-corejs3": "^0.1.3", + "babel-plugin-polyfill-regenerator": "^0.1.2", + "semver": "^6.3.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.7.4.tgz", - "integrity": "sha512-q+suddWRfIcnyG5YiDP58sT65AJDZSUhXQDZE3r04AuqD6d/XLaQPPXSBzP2zGerkgBivqtQm9XKGLuHqBID6Q==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", + "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.7.4.tgz", - "integrity": "sha512-8OSs0FLe5/80cndziPlg4R0K6HcWSM0zyNhHhLsmw/Nc5MaA49cAsnoJ/t/YZf8qkG7fD+UjTRaApVDB526d7Q==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", + "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.7.4.tgz", - "integrity": "sha512-Ls2NASyL6qtVe1H1hXts9yuEeONV2TJZmplLONkMPUG158CtmnrzW5Q5teibM5UVOFjG0D3IC5mzXR6pPpUY7A==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", + "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.7.4.tgz", - "integrity": "sha512-sA+KxLwF3QwGj5abMHkHgshp9+rRz+oY9uoRil4CyLtgEuE/88dpkeWgNk5qKVsJE9iSfly3nvHapdRiIS2wnQ==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", + "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.13.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.7.4.tgz", - "integrity": "sha512-KQPUQ/7mqe2m0B8VecdyaW5XcQYaePyl9R7IsKd+irzj6jvbhoGnRE+M0aNkyAzI07VfUQ9266L5xMARitV3wg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", + "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", + "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.7.4.tgz", - "integrity": "sha512-N77UUIV+WCvE+5yHw+oks3m18/umd7y392Zv7mYTpFqHtkpcc+QUz+gLJNTWVlWROIWeLqY0f3OjZxV5TcXnRw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", + "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-env": { - "version": "7.7.7", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.7.7.tgz", - "integrity": "sha512-pCu0hrSSDVI7kCVUOdcMNQEbOPJ52E+LrQ14sN8uL2ALfSqePZQlKrOy+tM4uhEdYlCHi4imr8Zz2cZe9oSdIg==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.10.tgz", + "integrity": "sha512-nOsTScuoRghRtUsRr/c69d042ysfPHcu+KOB4A9aAO9eJYqrkat+LF8G1yp1HD18QiwixT2CisZTr/0b3YZPXQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.13.8", + "@babel/helper-compilation-targets": "^7.13.10", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-option": "^7.12.17", + "@babel/plugin-proposal-async-generator-functions": "^7.13.8", + "@babel/plugin-proposal-class-properties": "^7.13.0", + "@babel/plugin-proposal-dynamic-import": "^7.13.8", + "@babel/plugin-proposal-export-namespace-from": "^7.12.13", + "@babel/plugin-proposal-json-strings": "^7.13.8", + "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", + "@babel/plugin-proposal-numeric-separator": "^7.12.13", + "@babel/plugin-proposal-object-rest-spread": "^7.13.8", + "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", + "@babel/plugin-proposal-optional-chaining": "^7.13.8", + "@babel/plugin-proposal-private-methods": "^7.13.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@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/plugin-syntax-top-level-await": "^7.12.13", + "@babel/plugin-transform-arrow-functions": "^7.13.0", + "@babel/plugin-transform-async-to-generator": "^7.13.0", + "@babel/plugin-transform-block-scoped-functions": "^7.12.13", + "@babel/plugin-transform-block-scoping": "^7.12.13", + "@babel/plugin-transform-classes": "^7.13.0", + "@babel/plugin-transform-computed-properties": "^7.13.0", + "@babel/plugin-transform-destructuring": "^7.13.0", + "@babel/plugin-transform-dotall-regex": "^7.12.13", + "@babel/plugin-transform-duplicate-keys": "^7.12.13", + "@babel/plugin-transform-exponentiation-operator": "^7.12.13", + "@babel/plugin-transform-for-of": "^7.13.0", + "@babel/plugin-transform-function-name": "^7.12.13", + "@babel/plugin-transform-literals": "^7.12.13", + "@babel/plugin-transform-member-expression-literals": "^7.12.13", + "@babel/plugin-transform-modules-amd": "^7.13.0", + "@babel/plugin-transform-modules-commonjs": "^7.13.8", + "@babel/plugin-transform-modules-systemjs": "^7.13.8", + "@babel/plugin-transform-modules-umd": "^7.13.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", + "@babel/plugin-transform-new-target": "^7.12.13", + "@babel/plugin-transform-object-super": "^7.12.13", + "@babel/plugin-transform-parameters": "^7.13.0", + "@babel/plugin-transform-property-literals": "^7.12.13", + "@babel/plugin-transform-regenerator": "^7.12.13", + "@babel/plugin-transform-reserved-words": "^7.12.13", + "@babel/plugin-transform-shorthand-properties": "^7.12.13", + "@babel/plugin-transform-spread": "^7.13.0", + "@babel/plugin-transform-sticky-regex": "^7.12.13", + "@babel/plugin-transform-template-literals": "^7.13.0", + "@babel/plugin-transform-typeof-symbol": "^7.12.13", + "@babel/plugin-transform-unicode-escapes": "^7.12.13", + "@babel/plugin-transform-unicode-regex": "^7.12.13", + "@babel/preset-modules": "^0.1.4", + "@babel/types": "^7.13.0", + "babel-plugin-polyfill-corejs2": "^0.1.4", + "babel-plugin-polyfill-corejs3": "^0.1.3", + "babel-plugin-polyfill-regenerator": "^0.1.2", + "core-js-compat": "^3.9.0", + "semver": "^6.3.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.7.4", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-async-generator-functions": "^7.7.4", - "@babel/plugin-proposal-dynamic-import": "^7.7.4", - "@babel/plugin-proposal-json-strings": "^7.7.4", - "@babel/plugin-proposal-object-rest-spread": "^7.7.7", - "@babel/plugin-proposal-optional-catch-binding": "^7.7.4", - "@babel/plugin-proposal-unicode-property-regex": "^7.7.7", - "@babel/plugin-syntax-async-generators": "^7.7.4", - "@babel/plugin-syntax-dynamic-import": "^7.7.4", - "@babel/plugin-syntax-json-strings": "^7.7.4", - "@babel/plugin-syntax-object-rest-spread": "^7.7.4", - "@babel/plugin-syntax-optional-catch-binding": "^7.7.4", - "@babel/plugin-syntax-top-level-await": "^7.7.4", - "@babel/plugin-transform-arrow-functions": "^7.7.4", - "@babel/plugin-transform-async-to-generator": "^7.7.4", - "@babel/plugin-transform-block-scoped-functions": "^7.7.4", - "@babel/plugin-transform-block-scoping": "^7.7.4", - "@babel/plugin-transform-classes": "^7.7.4", - "@babel/plugin-transform-computed-properties": "^7.7.4", - "@babel/plugin-transform-destructuring": "^7.7.4", - "@babel/plugin-transform-dotall-regex": "^7.7.7", - "@babel/plugin-transform-duplicate-keys": "^7.7.4", - "@babel/plugin-transform-exponentiation-operator": "^7.7.4", - "@babel/plugin-transform-for-of": "^7.7.4", - "@babel/plugin-transform-function-name": "^7.7.4", - "@babel/plugin-transform-literals": "^7.7.4", - "@babel/plugin-transform-member-expression-literals": "^7.7.4", - "@babel/plugin-transform-modules-amd": "^7.7.5", - "@babel/plugin-transform-modules-commonjs": "^7.7.5", - "@babel/plugin-transform-modules-systemjs": "^7.7.4", - "@babel/plugin-transform-modules-umd": "^7.7.4", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.7.4", - "@babel/plugin-transform-new-target": "^7.7.4", - "@babel/plugin-transform-object-super": "^7.7.4", - "@babel/plugin-transform-parameters": "^7.7.7", - "@babel/plugin-transform-property-literals": "^7.7.4", - "@babel/plugin-transform-regenerator": "^7.7.5", - "@babel/plugin-transform-reserved-words": "^7.7.4", - "@babel/plugin-transform-shorthand-properties": "^7.7.4", - "@babel/plugin-transform-spread": "^7.7.4", - "@babel/plugin-transform-sticky-regex": "^7.7.4", - "@babel/plugin-transform-template-literals": "^7.7.4", - "@babel/plugin-transform-typeof-symbol": "^7.7.4", - "@babel/plugin-transform-unicode-regex": "^7.7.4", - "@babel/types": "^7.7.4", - "browserslist": "^4.6.0", - "core-js-compat": "^3.6.0", - "invariant": "^2.2.2", - "js-levenshtein": "^1.1.3", - "semver": "^5.5.0" + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/runtime": { - "version": "7.7.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.7.7.tgz", - "integrity": "sha512-uCnC2JEVAu8AKB5do1WRIsvrdJ0flYx/A/9f/6chdacnEZ7LmavjdsDXr5ksYBegxtuTPR5Va9/+13QF/kFkCA==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", + "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", "dev": true, "dependencies": { - "regenerator-runtime": "^0.13.2" + "regenerator-runtime": "^0.13.4" } }, "node_modules/@babel/template": { @@ -923,35 +1304,47 @@ } }, "node_modules/@hapi/address": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.0.0.tgz", - "integrity": "sha512-mV6T0IYqb0xL1UALPFplXYQmR0twnXG0M6jUswpquqT2sD12BOiCiLy3EvMp/Fy7s3DZElC4/aPjEjo2jeZpvw==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", + "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==", + "deprecated": "Moved to 'npm install @sideway/address'", + "dev": true + }, + "node_modules/@hapi/bourne": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", + "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==", + "deprecated": "This version has been deprecated and is no longer supported or maintained", "dev": true }, "node_modules/@hapi/hoek": { - "version": "6.2.4", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-6.2.4.tgz", - "integrity": "sha512-HOJ20Kc93DkDVvjwHyHawPwPkX44sIrbXazAUDiUXaY2R9JwQGo2PhFfnQtdrsIe4igjG2fPgMra7NYw7qhy0A==", + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", + "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==", + "deprecated": "This version has been deprecated and is no longer supported or maintained", "dev": true }, "node_modules/@hapi/joi": { - "version": "15.0.3", - "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.0.3.tgz", - "integrity": "sha512-z6CesJ2YBwgVCi+ci8SI8zixoj8bGFn/vZb9MBPbSyoxsS2PnWYjHcyTM17VLK6tx64YVK38SDIh10hJypB+ig==", + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", + "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", + "deprecated": "Switch to 'npm install joi'", "dev": true, "dependencies": { "@hapi/address": "2.x.x", - "@hapi/hoek": "6.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", "@hapi/topo": "3.x.x" } }, "node_modules/@hapi/topo": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.0.tgz", - "integrity": "sha512-gZDI/eXOIk8kP2PkUKjWu9RW8GGVd2Hkgjxyr/S7Z+JF+0mr7bAlbw+DkTRxnD580o8Kqxlnba9wvqp5aOHBww==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", + "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", + "deprecated": "This version has been deprecated and is no longer supported or maintained", "dev": true, "dependencies": { - "@hapi/hoek": "6.x.x" + "@hapi/hoek": "^8.3.0" } }, "node_modules/@intervolga/optimize-cssnano-plugin": { @@ -963,6 +1356,9 @@ "cssnano": "^4.0.0", "cssnano-preset-default": "^4.0.0", "postcss": "^7.0.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" } }, "node_modules/@mrmlnc/readdir-enhanced": { @@ -988,83 +1384,134 @@ } }, "node_modules/@soda/friendly-errors-webpack-plugin": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.1.tgz", - "integrity": "sha512-cWKrGaFX+rfbMrAxVv56DzhPNqOJPZuNIS2HGMELtgGzb+vsMzyig9mml5gZ/hr2BGtSLV+dP2LUEuAL8aG2mQ==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.0.tgz", + "integrity": "sha512-RLotfx6k1+nfLacwNCenj7VnTMPxVwYKoGOcffMFoJDKM8tXzBiCN0hMHFJNnoAojduYAsxuiMm0EOMixgiRow==", "dev": true, "dependencies": { - "chalk": "^1.1.3", - "error-stack-parser": "^2.0.0", - "string-width": "^2.0.0" - } - }, - "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "chalk": "^2.4.2", + "error-stack-parser": "^2.0.2", + "string-width": "^2.0.0", + "strip-ansi": "^5" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.0.0" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "node_modules/@soda/get-current-script": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@soda/get-current-script/-/get-current-script-1.0.2.tgz", + "integrity": "sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w==", "dev": true }, - "node_modules/@types/events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", - "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", + "node_modules/@types/anymatch": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz", + "integrity": "sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==", "dev": true }, - "node_modules/@types/glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", - "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "node_modules/@types/body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.34.tgz", + "integrity": "sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.4.tgz", + "integrity": "sha512-Kf8v0wljR5GSCOCF/VQWdV3ZhKOVA73drXtY3geMTQgHy9dgqQ0dLrf31M0hcuWkhFzK5sP0kkS3mJzcKVtZbw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/express": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.11.tgz", + "integrity": "sha512-no+R6rW60JEc59977wIxreQVsIEOAYwgCqldrA/vkpCnbD7MqTefO97lmoBe4WE0F156bC4uLSP1XHDOySnChg==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.19.tgz", + "integrity": "sha512-DJOSHzX7pCiSElWaGR8kCprwibCB/3yW6vcT8VG3P0SJjnv19gnWG/AZMfM60Xj/YJIp/YCaDHyvzsFVeniARA==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", "dev": true, "dependencies": { - "@types/events": "*", "@types/minimatch": "*", "@types/node": "*" } }, + "node_modules/@types/http-proxy": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.5.tgz", + "integrity": "sha512-GNkDE7bTv6Sf8JbV2GksknKOsk7OznNYHSdrtvPJXO0qJ9odZig6IZKUi5RFGi6d1bf6dgIAe4uXi3DBc7069Q==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", + "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, "node_modules/@types/minimatch": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", "dev": true }, + "node_modules/@types/minimist": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz", + "integrity": "sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==", + "dev": true + }, "node_modules/@types/node": { - "version": "11.13.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-11.13.4.tgz", - "integrity": "sha512-+rabAZZ3Yn7tF/XPGHupKIL5EcAbrLxnTr/hgQICxbeuAfWtT0UZSfULE+ndusckBItcv4o6ZeOJplQikVcLvQ==", + "version": "14.14.35", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.35.tgz", + "integrity": "sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag==", "dev": true }, "node_modules/@types/normalize-package-data": { @@ -1074,128 +1521,358 @@ "dev": true }, "node_modules/@types/q": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", - "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", + "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", "dev": true }, + "node_modules/@types/qs": { + "version": "6.9.6", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.6.tgz", + "integrity": "sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", + "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==", + "dev": true + }, + "node_modules/@types/serve-static": { + "version": "1.13.9", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.9.tgz", + "integrity": "sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/source-list-map": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", + "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", + "dev": true + }, + "node_modules/@types/tapable": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.6.tgz", + "integrity": "sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA==", + "dev": true + }, + "node_modules/@types/uglify-js": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.13.0.tgz", + "integrity": "sha512-EGkrJD5Uy+Pg0NUR8uA4bJ5WMfljyad0G+784vLCNUkD+QwOJXUbBYExXfVGf7YtyzdQp3L/XMYcliB987kL5Q==", + "dev": true, + "dependencies": { + "source-map": "^0.6.1" + } + }, + "node_modules/@types/uglify-js/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@types/webpack": { + "version": "4.41.26", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.26.tgz", + "integrity": "sha512-7ZyTfxjCRwexh+EJFwRUM+CDB2XvgHl4vfuqf1ZKrgGvcS5BrNvPQqJh3tsZ0P6h6Aa1qClVHaJZszLPzpqHeA==", + "dev": true, + "dependencies": { + "@types/anymatch": "*", + "@types/node": "*", + "@types/tapable": "*", + "@types/uglify-js": "*", + "@types/webpack-sources": "*", + "source-map": "^0.6.0" + } + }, + "node_modules/@types/webpack-dev-server": { + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/@types/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz", + "integrity": "sha512-13w1VhaghN+G1rYjkBPgN/GFRoHd9uI2fwK9cSKvLutdmZ22L9iicFEvt69by40DP2I6uNcClaGTyPY6nYhIgQ==", + "dev": true, + "dependencies": { + "@types/connect-history-api-fallback": "*", + "@types/express": "*", + "@types/serve-static": "*", + "@types/webpack": "*", + "http-proxy-middleware": "^1.0.0" + } + }, + "node_modules/@types/webpack-sources": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-2.1.0.tgz", + "integrity": "sha512-LXn/oYIpBeucgP1EIJbKQ2/4ZmpvRl+dlrFdX7+94SKRUV3Evy3FsfMZY318vGhkWUS5MPhtOM3w1/hCOAOXcg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.7.3" + } + }, + "node_modules/@types/webpack-sources/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@types/webpack/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@vue/babel-helper-vue-jsx-merge-props": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.0.0.tgz", - "integrity": "sha512-6tyf5Cqm4m6v7buITuwS+jHzPlIPxbFzEhXR5JGZpbrvOcp1hiQKckd305/3C7C36wFekNTQSxAtgeM0j0yoUw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.2.1.tgz", + "integrity": "sha512-QOi5OW45e2R20VygMSNhyQHvpdUwQZqGPc748JLGCYEy+yp8fNFNdbNIGAgZmi9e+2JHPd6i6idRuqivyicIkA==", "dev": true }, + "node_modules/@vue/babel-helper-vue-transform-on": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz", + "integrity": "sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==", + "dev": true + }, + "node_modules/@vue/babel-plugin-jsx": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.0.3.tgz", + "integrity": "sha512-+52ZQFmrM0yh61dQlgwQlfHZXmYbswbQEL25SOSt9QkjegAdfIGu87oELw0l8H6cuJYazZCiNjPR9eU++ZIbxg==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "@vue/babel-helper-vue-transform-on": "^1.0.2", + "camelcase": "^6.0.0", + "html-tags": "^3.1.0", + "svg-tags": "^1.0.0" + } + }, "node_modules/@vue/babel-plugin-transform-vue-jsx": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.1.2.tgz", - "integrity": "sha512-YfdaoSMvD1nj7+DsrwfTvTnhDXI7bsuh+Y5qWwvQXlD24uLgnsoww3qbiZvWf/EoviZMrvqkqN4CBw0W3BWUTQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.2.1.tgz", + "integrity": "sha512-HJuqwACYehQwh1fNT8f4kyzqlNMpBuUK4rSiSES5D4QsYncv5fxFsLyrxFPG2ksO7t5WP+Vgix6tt6yKClwPzA==", "dev": true, "dependencies": { "@babel/helper-module-imports": "^7.0.0", "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", "html-tags": "^2.0.0", "lodash.kebabcase": "^4.1.1", "svg-tags": "^1.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-plugin-transform-vue-jsx/node_modules/html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", + "dev": true, + "engines": { + "node": ">=4" } }, "node_modules/@vue/babel-preset-app": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-4.1.2.tgz", - "integrity": "sha512-M2vodPy1Wh0ZIlBf2MA3mhHvxuFp6dwx5nHxBSd4VpBdrgq4Jb0ECbGnNcH9RI2yNPfkoyiHmqOGDQoFGt+FUg==", + "version": "4.5.12", + "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-4.5.12.tgz", + "integrity": "sha512-8q67ORQ9O0Ms0nlqsXTVhaBefRBaLrzPxOewAZhdcO7onHwcO5/wRdWtHhZgfpCZlhY7NogkU16z3WnorSSkEA==", "dev": true, "dependencies": { - "@babel/core": "^7.7.4", - "@babel/helper-module-imports": "^7.7.4", - "@babel/plugin-proposal-class-properties": "^7.7.4", - "@babel/plugin-proposal-decorators": "^7.7.4", - "@babel/plugin-syntax-dynamic-import": "^7.7.4", - "@babel/plugin-syntax-jsx": "^7.7.4", - "@babel/plugin-transform-runtime": "^7.7.4", - "@babel/preset-env": "^7.7.4", - "@babel/runtime": "^7.7.4", - "@vue/babel-preset-jsx": "^1.1.2", - "babel-plugin-dynamic-import-node": "^2.2.0", - "core-js": "^3.4.4", - "core-js-compat": "^3.4.4" + "@babel/core": "^7.11.0", + "@babel/helper-compilation-targets": "^7.9.6", + "@babel/helper-module-imports": "^7.8.3", + "@babel/plugin-proposal-class-properties": "^7.8.3", + "@babel/plugin-proposal-decorators": "^7.8.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.11.0", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.0", + "@vue/babel-plugin-jsx": "^1.0.3", + "@vue/babel-preset-jsx": "^1.2.4", + "babel-plugin-dynamic-import-node": "^2.3.3", + "core-js": "^3.6.5", + "core-js-compat": "^3.6.5", + "semver": "^6.1.0" + }, + "peerDependencies": { + "@babel/core": "*", + "core-js": "^3", + "vue": "^2 || ^3.0.0-0" + }, + "peerDependenciesMeta": { + "core-js": { + "optional": true + }, + "vue": { + "optional": true + } } }, "node_modules/@vue/babel-preset-jsx": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@vue/babel-preset-jsx/-/babel-preset-jsx-1.1.2.tgz", - "integrity": "sha512-zDpVnFpeC9YXmvGIDSsKNdL7qCG2rA3gjywLYHPCKDT10erjxF4U+6ay9X6TW5fl4GsDlJp9bVfAVQAAVzxxvQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@vue/babel-preset-jsx/-/babel-preset-jsx-1.2.4.tgz", + "integrity": "sha512-oRVnmN2a77bYDJzeGSt92AuHXbkIxbf/XXSE3klINnh9AXBmVS1DGa1f0d+dDYpLfsAKElMnqKTQfKn7obcL4w==", "dev": true, "dependencies": { - "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", - "@vue/babel-plugin-transform-vue-jsx": "^1.1.2", - "@vue/babel-sugar-functional-vue": "^1.1.2", - "@vue/babel-sugar-inject-h": "^1.1.2", - "@vue/babel-sugar-v-model": "^1.1.2", - "@vue/babel-sugar-v-on": "^1.1.2" + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "@vue/babel-sugar-composition-api-inject-h": "^1.2.1", + "@vue/babel-sugar-composition-api-render-instance": "^1.2.4", + "@vue/babel-sugar-functional-vue": "^1.2.2", + "@vue/babel-sugar-inject-h": "^1.2.2", + "@vue/babel-sugar-v-model": "^1.2.3", + "@vue/babel-sugar-v-on": "^1.2.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-composition-api-inject-h": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.2.1.tgz", + "integrity": "sha512-4B3L5Z2G+7s+9Bwbf+zPIifkFNcKth7fQwekVbnOA3cr3Pq71q71goWr97sk4/yyzH8phfe5ODVzEjX7HU7ItQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-composition-api-render-instance": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.2.4.tgz", + "integrity": "sha512-joha4PZznQMsxQYXtR3MnTgCASC9u3zt9KfBxIeuI5g2gscpTsSKRDzWQt4aqNIpx6cv8On7/m6zmmovlNsG7Q==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@vue/babel-sugar-functional-vue": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.1.2.tgz", - "integrity": "sha512-YhmdJQSVEFF5ETJXzrMpj0nkCXEa39TvVxJTuVjzvP2rgKhdMmQzlJuMv/HpadhZaRVMCCF3AEjjJcK5q/cYzQ==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.2.2.tgz", + "integrity": "sha512-JvbgGn1bjCLByIAU1VOoepHQ1vFsroSA/QkzdiSs657V79q6OwEWLCQtQnEXD/rLTA8rRit4rMOhFpbjRFm82w==", "dev": true, "dependencies": { "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@vue/babel-sugar-inject-h": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.1.2.tgz", - "integrity": "sha512-VRSENdTvD5htpnVp7i7DNuChR5rVMcORdXjvv5HVvpdKHzDZAYiLSD+GhnhxLm3/dMuk8pSzV+k28ECkiN5m8w==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.2.2.tgz", + "integrity": "sha512-y8vTo00oRkzQTgufeotjCLPAvlhnpSkcHFEp60+LJUwygGcd5Chrpn5480AQp/thrxVm8m2ifAk0LyFel9oCnw==", "dev": true, "dependencies": { "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, "node_modules/@vue/babel-sugar-v-model": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.1.2.tgz", - "integrity": "sha512-vLXPvNq8vDtt0u9LqFdpGM9W9IWDmCmCyJXuozlq4F4UYVleXJ2Fa+3JsnTZNJcG+pLjjfnEGHci2339Kj5sGg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.2.3.tgz", + "integrity": "sha512-A2jxx87mySr/ulAsSSyYE8un6SIH0NWHiLaCWpodPCVOlQVODCaSpiR4+IMsmBr73haG+oeCuSvMOM+ttWUqRQ==", "dev": true, "dependencies": { "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", - "@vue/babel-plugin-transform-vue-jsx": "^1.1.2", + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", "camelcase": "^5.0.0", "html-tags": "^2.0.0", "svg-tags": "^1.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-v-model/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@vue/babel-sugar-v-model/node_modules/html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", + "dev": true, + "engines": { + "node": ">=4" } }, "node_modules/@vue/babel-sugar-v-on": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.1.2.tgz", - "integrity": "sha512-T8ZCwC8Jp2uRtcZ88YwZtZXe7eQrJcfRq0uTFy6ShbwYJyz5qWskRFoVsdTi9o0WEhmQXxhQUewodOSCUPVmsQ==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.2.3.tgz", + "integrity": "sha512-kt12VJdz/37D3N3eglBywV8GStKNUhNrsxChXIV+o0MwVXORYuhDTHJRKPgLJRb/EY3vM2aRFQdxJBp9CLikjw==", "dev": true, "dependencies": { "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-plugin-transform-vue-jsx": "^1.1.2", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", "camelcase": "^5.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-v-on/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" } }, "node_modules/@vue/cli-overlay": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-4.1.2.tgz", - "integrity": "sha512-d+joLTtthj6l1JnCeFyJRKoISBQeqKZQY0EIYnJBcPPR3/dEKctMRkh5Sy1MR0H1JQQIko9CPrFjT/NHFW48Mg==", + "version": "4.5.12", + "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-4.5.12.tgz", + "integrity": "sha512-dCN0RzVpA8fp+MfjuVBROgM483MPObAb/je+APE/JhpCJyPQORYQEvNpmaorpN+9Cp6mrESVSzhh0qD4SFrlzg==", "dev": true }, "node_modules/@vue/cli-plugin-babel": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-babel/-/cli-plugin-babel-4.1.2.tgz", - "integrity": "sha512-/j998Q16h8gbYcYf2sE+CYobCpIzDYtOJ76JuhJZnCfy5H8gh4g+x5fepbLs0gOW/cZ2OQxJFx7Jd/yT2/G/qQ==", + "version": "4.5.12", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-babel/-/cli-plugin-babel-4.5.12.tgz", + "integrity": "sha512-PhiNDhlGydsRR0F00OJqG/Q3Mz2G1ko8XqS7CJ0l1GVVGmklUEBy2dW/S8ntEgHpSkFa6h49PgYP3WE2OM3CEg==", "dev": true, "dependencies": { - "@babel/core": "^7.7.4", - "@vue/babel-preset-app": "^4.1.2", - "@vue/cli-shared-utils": "^4.1.2", - "babel-loader": "^8.0.6", + "@babel/core": "^7.11.0", + "@vue/babel-preset-app": "^4.5.12", + "@vue/cli-shared-utils": "^4.5.12", + "babel-loader": "^8.1.0", "cache-loader": "^4.1.0", "thread-loader": "^2.1.3", "webpack": "^4.0.0" + }, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0-0" } }, "node_modules/@vue/cli-plugin-eslint": { @@ -1217,49 +1894,58 @@ } }, "node_modules/@vue/cli-plugin-router": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-router/-/cli-plugin-router-4.1.2.tgz", - "integrity": "sha512-P1OwZfskUzs8KoQDozT+TfSKREMB8NpJ34raor8CiXtM80pdaNU+mO1HLOvl9ckaOWbAgNrxFmANiSBvHzSo+w==", + "version": "4.5.12", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-router/-/cli-plugin-router-4.5.12.tgz", + "integrity": "sha512-DYNz5AA3W7Ewt3aaiOLGdYFt4MX4w/HTEtep+kPzP9S9tAknzyoIJXkaYzhwu8ArpEYwhWgtuCcDZ8hR6++DbA==", "dev": true, "dependencies": { - "@vue/cli-shared-utils": "^4.1.2" + "@vue/cli-shared-utils": "^4.5.12" + }, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0-0" } }, "node_modules/@vue/cli-plugin-vuex": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.1.2.tgz", - "integrity": "sha512-qsf8sfUUtTuFf24iB6vbdapvCTCt4FqLj7r66POutGWmBCTlPHsMaAXMaD2ZD53/hqr8QHd/557IUensSwj5wA==", - "dev": true + "version": "4.5.12", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.12.tgz", + "integrity": "sha512-STgbvNv/3iHAKArc18b/qjN7RX1FTrfxPeHH26GOr/A8lJes7+CSluZZ8E5R7Zr/vL0zOqOkUVDAjFXVf4zWQA==", + "dev": true, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0-0" + } }, "node_modules/@vue/cli-service": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-4.1.2.tgz", - "integrity": "sha512-ljJ3qoR5NNHuG0HPqQyfO3xa4Ti5zCSmHp0tDYxgiVz1vMDvzPXBhGBGsc2Y1HH71BUyx3Ei+H7mWdML/+Bm9Q==", + "version": "4.5.12", + "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-4.5.12.tgz", + "integrity": "sha512-Di/dFw72HIvUrpTgnnPQkPq07mdd7z3GPeCH/o+6fv4bxOD+gwK9z7P6RkG4lGv2QdLz+qjim9f7xw5w+9ENkg==", "dev": true, "dependencies": { "@intervolga/optimize-cssnano-plugin": "^1.0.5", "@soda/friendly-errors-webpack-plugin": "^1.7.1", - "@vue/cli-overlay": "^4.1.2", - "@vue/cli-plugin-router": "^4.1.2", - "@vue/cli-plugin-vuex": "^4.1.2", - "@vue/cli-shared-utils": "^4.1.2", - "@vue/component-compiler-utils": "^3.0.2", + "@soda/get-current-script": "^1.0.0", + "@types/minimist": "^1.2.0", + "@types/webpack": "^4.0.0", + "@types/webpack-dev-server": "^3.11.0", + "@vue/cli-overlay": "^4.5.12", + "@vue/cli-plugin-router": "^4.5.12", + "@vue/cli-plugin-vuex": "^4.5.12", + "@vue/cli-shared-utils": "^4.5.12", + "@vue/component-compiler-utils": "^3.1.2", "@vue/preload-webpack-plugin": "^1.1.0", "@vue/web-component-wrapper": "^1.2.0", - "acorn": "^6.1.1", - "acorn-walk": "^6.1.1", + "acorn": "^7.4.0", + "acorn-walk": "^7.1.1", "address": "^1.1.2", - "autoprefixer": "^9.7.2", - "browserslist": "^4.7.3", + "autoprefixer": "^9.8.6", + "browserslist": "^4.12.0", "cache-loader": "^4.1.0", - "case-sensitive-paths-webpack-plugin": "^2.2.0", + "case-sensitive-paths-webpack-plugin": "^2.3.0", "cli-highlight": "^2.1.4", - "clipboardy": "^2.0.0", - "cliui": "^5.0.0", - "copy-webpack-plugin": "^5.0.5", - "css-loader": "^3.1.0", + "clipboardy": "^2.3.0", + "cliui": "^6.0.0", + "copy-webpack-plugin": "^5.1.1", + "css-loader": "^3.5.3", "cssnano": "^4.1.10", - "current-script-polyfill": "^1.0.0", "debug": "^4.1.1", "default-gateway": "^5.0.5", "dotenv": "^8.2.0", @@ -1267,27 +1953,27 @@ "file-loader": "^4.2.0", "fs-extra": "^7.0.1", "globby": "^9.2.0", - "hash-sum": "^1.0.2", + "hash-sum": "^2.0.0", "html-webpack-plugin": "^3.2.0", "launch-editor-middleware": "^2.2.1", "lodash.defaultsdeep": "^4.6.1", "lodash.mapvalues": "^4.6.0", "lodash.transform": "^4.6.0", - "mini-css-extract-plugin": "^0.8.0", - "minimist": "^1.2.0", - "portfinder": "^1.0.25", + "mini-css-extract-plugin": "^0.9.0", + "minimist": "^1.2.5", + "pnp-webpack-plugin": "^1.6.4", + "portfinder": "^1.0.26", "postcss-loader": "^3.0.0", - "read-pkg": "^5.1.1", "ssri": "^7.1.0", - "terser-webpack-plugin": "^2.2.1", + "terser-webpack-plugin": "^2.3.6", "thread-loader": "^2.1.3", "url-loader": "^2.2.0", - "vue-loader": "^15.7.2", - "vue-style-loader": "^4.1.0", + "vue-loader": "^15.9.2", + "vue-style-loader": "^4.1.2", "webpack": "^4.0.0", - "webpack-bundle-analyzer": "^3.6.0", - "webpack-chain": "^6.0.0", - "webpack-dev-server": "^3.9.0", + "webpack-bundle-analyzer": "^3.8.0", + "webpack-chain": "^6.4.0", + "webpack-dev-server": "^3.11.0", "webpack-merge": "^4.2.2" }, "bin": { @@ -1295,343 +1981,36 @@ }, "engines": { "node": ">=8" - } - }, - "node_modules/@vue/cli-service/node_modules/acorn": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz", - "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/@vue/cli-service/node_modules/ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "node_modules/@vue/cli-service/node_modules/browserslist": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.2.tgz", - "integrity": "sha512-+M4oeaTplPm/f1pXDw84YohEv7B1i/2Aisei8s4s6k3QsoSHa7i5sz8u/cGQkkatCPxMASKxPualR4wwYgVboA==", - "dev": true, - "dependencies": { - "caniuse-lite": "^1.0.30001015", - "electron-to-chromium": "^1.3.322", - "node-releases": "^1.1.42" + "optionalDependencies": { + "vue-loader-v16": "npm:vue-loader@^16.1.0" }, - "bin": { - "browserslist": "cli.js" - } - }, - "node_modules/@vue/cli-service/node_modules/cacache": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", - "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", - "dev": true, - "dependencies": { - "chownr": "^1.1.2", - "figgy-pudding": "^3.5.1", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.2", - "infer-owner": "^1.0.4", - "lru-cache": "^5.1.1", - "minipass": "^3.0.0", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "p-map": "^3.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^2.7.1", - "ssri": "^7.0.0", - "unique-filename": "^1.1.1" + "peerDependencies": { + "@vue/compiler-sfc": "^3.0.0-beta.14", + "vue-template-compiler": "^2.0.0" }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@vue/cli-service/node_modules/caniuse-lite": { - "version": "1.0.30001017", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001017.tgz", - "integrity": "sha512-EDnZyOJ6eYh6lHmCvCdHAFbfV4KJ9lSdfv4h/ppEhrU/Yudkl7jujwMZ1we6RX7DXqBfT04pVMQ4J+1wcTlsKA==", - "dev": true - }, - "node_modules/@vue/cli-service/node_modules/chownr": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", - "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==", - "dev": true - }, - "node_modules/@vue/cli-service/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/@vue/cli-service/node_modules/electron-to-chromium": { - "version": "1.3.322", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.322.tgz", - "integrity": "sha512-Tc8JQEfGQ1MzfSzI/bTlSr7btJv/FFO7Yh6tanqVmIWOuNCu6/D1MilIEgLtmWqIrsv+o4IjpLAhgMBr/ncNAA==", - "dev": true - }, - "node_modules/@vue/cli-service/node_modules/find-cache-dir": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.2.0.tgz", - "integrity": "sha512-1JKclkYYsf1q9WIJKLZa9S9muC+08RIjzAlLrK4QcYLJMS6mk9yombQ9qf+zJ7H9LS800k0s44L4sDq9VYzqyg==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.0", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@vue/cli-service/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@vue/cli-service/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "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" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@vue/cli-service/node_modules/graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", - "dev": true - }, - "node_modules/@vue/cli-service/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@vue/cli-service/node_modules/make-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz", - "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@vue/cli-service/node_modules/node-releases": { - "version": "1.1.44", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.44.tgz", - "integrity": "sha512-NwbdvJyR7nrcGrXvKAvzc5raj/NkoJudkarh2yIpJ4t0NH4aqjUDz/486P+ynIW5eokKOfzGNRdYoLfBlomruw==", - "dev": true, - "dependencies": { - "semver": "^6.3.0" - } - }, - "node_modules/@vue/cli-service/node_modules/p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@vue/cli-service/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@vue/cli-service/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@vue/cli-service/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@vue/cli-service/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/@vue/cli-service/node_modules/schema-utils": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.1.tgz", - "integrity": "sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg==", - "dev": true, - "dependencies": { - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1" - }, - "engines": { - "node": ">= 8.9.0" - } - }, - "node_modules/@vue/cli-service/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@vue/cli-service/node_modules/serialize-javascript": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", - "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", - "dev": true - }, - "node_modules/@vue/cli-service/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vue/cli-service/node_modules/source-map-support": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", - "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/@vue/cli-service/node_modules/ssri": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", - "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", - "dev": true, - "dependencies": { - "figgy-pudding": "^3.5.1", - "minipass": "^3.1.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@vue/cli-service/node_modules/terser": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.4.3.tgz", - "integrity": "sha512-0ikKraVtRDKGzHrzkCv5rUNDzqlhmhowOBqC0XqUHFpW+vJ45+20/IFBcebwKfiS2Z9fJin6Eo+F1zLZsxi8RA==", - "dev": true, - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@vue/cli-service/node_modules/terser-webpack-plugin": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.1.tgz", - "integrity": "sha512-dNxivOXmDgZqrGxOttBH6B4xaxT4zNC+Xd+2K8jwGDMK5q2CZI+KZMA1AAnSRT+BTRvuzKsDx+fpxzPAmAMVcA==", - "dev": true, - "dependencies": { - "cacache": "^13.0.1", - "find-cache-dir": "^3.2.0", - "jest-worker": "^24.9.0", - "schema-utils": "^2.6.1", - "serialize-javascript": "^2.1.2", - "source-map": "^0.6.1", - "terser": "^4.4.3", - "webpack-sources": "^1.4.3" - }, - "engines": { - "node": ">= 8.9.0" - } - }, - "node_modules/@vue/cli-service/node_modules/webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" + "peerDependenciesMeta": { + "@vue/compiler-sfc": { + "optional": true + }, + "less-loader": { + "optional": true + }, + "pug-plain-loader": { + "optional": true + }, + "raw-loader": { + "optional": true + }, + "sass-loader": { + "optional": true + }, + "stylus-loader": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } } }, "node_modules/@vue/cli-shared-utils": { @@ -1663,29 +2042,6 @@ "node": ">=8" } }, - "node_modules/@vue/cli-shared-utils/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@vue/cli-shared-utils/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@vue/cli-shared-utils/node_modules/strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", @@ -1699,9 +2055,9 @@ } }, "node_modules/@vue/component-compiler-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.1.0.tgz", - "integrity": "sha512-OJ7swvl8LtKtX5aYP8jHhO6fQBIRIGkU6rvWzK+CGJiNOnvg16nzcBkd9qMZzW8trI2AsqAKx263nv7kb5rhZw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.2.0.tgz", + "integrity": "sha512-lejBLa7xAMsfiZfNp7Kv51zOzifnb29FwdnMLa96z26kXErPFioSf9BMcePVIQ6/Gc6/mC0UrPpxAWIHyae0vw==", "dev": true, "dependencies": { "consolidate": "^0.15.1", @@ -1709,12 +2065,20 @@ "lru-cache": "^4.1.2", "merge-source-map": "^1.1.0", "postcss": "^7.0.14", - "postcss-selector-parser": "^5.0.0", - "prettier": "^1.18.2", + "postcss-selector-parser": "^6.0.2", "source-map": "~0.6.1", "vue-template-es2015-compiler": "^1.9.0" + }, + "optionalDependencies": { + "prettier": "^1.18.2" } }, + "node_modules/@vue/component-compiler-utils/node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + }, "node_modules/@vue/component-compiler-utils/node_modules/lru-cache": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", @@ -1730,6 +2094,7 @@ "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", "dev": true, + "optional": true, "bin": { "prettier": "bin-prettier.js" }, @@ -1767,190 +2132,197 @@ } }, "node_modules/@vue/preload-webpack-plugin": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.1.tgz", - "integrity": "sha512-8VCoJeeH8tCkzhkpfOkt+abALQkS11OIHhte5MBzYaKMTqK0A3ZAKEUVAffsOklhEv7t0yrQt696Opnu9oAx+w==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.2.tgz", + "integrity": "sha512-LIZMuJk38pk9U9Ur4YzHjlIyMuxPlACdBIHH9/nGYVTsaGKOSnSuELiE8vS9wa+dJpIYspYUOqk+L1Q4pgHQHQ==", "dev": true, "engines": { "node": ">=6.0.0" + }, + "peerDependencies": { + "html-webpack-plugin": ">=2.26.0", + "webpack": ">=4.0.0" } }, "node_modules/@vue/web-component-wrapper": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@vue/web-component-wrapper/-/web-component-wrapper-1.2.0.tgz", - "integrity": "sha512-Xn/+vdm9CjuC9p3Ae+lTClNutrVhsXpzxvoTXXtoys6kVRX9FkueSUAqSWAyZntmVLlR4DosBV4pH8y5Z/HbUw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz", + "integrity": "sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==", "dev": true }, "node_modules/@webassemblyjs/ast": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.11.tgz", - "integrity": "sha512-ZEzy4vjvTzScC+SH8RBssQUawpaInUdMTYwYYLh54/s8TuT0gBLuyUnppKsVyZEi876VmmStKsUs28UxPgdvrA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", "dev": true, "dependencies": { - "@webassemblyjs/helper-module-context": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/wast-parser": "1.7.11" + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz", - "integrity": "sha512-zY8dSNyYcgzNRNT666/zOoAyImshm3ycKdoLsyDw/Bwo6+/uktb7p4xyApuef1dwEBo/U/SYQzbGBvV+nru2Xg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", "dev": true }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz", - "integrity": "sha512-7r1qXLmiglC+wPNkGuXCvkmalyEstKVwcueZRP2GNC2PAvxbLYwLLPr14rcdJaE4UtHxQKfFkuDFuv91ipqvXg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", "dev": true }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz", - "integrity": "sha512-MynuervdylPPh3ix+mKZloTcL06P8tenNH3sx6s0qE8SLR6DdwnfgA7Hc9NSYeob2jrW5Vql6GVlsQzKQCa13w==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", "dev": true }, "node_modules/@webassemblyjs/helper-code-frame": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz", - "integrity": "sha512-T8ESC9KMXFTXA5urJcyor5cn6qWeZ4/zLPyWeEXZ03hj/x9weSokGNkVCdnhSabKGYWxElSdgJ+sFa9G/RdHNw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", "dev": true, "dependencies": { - "@webassemblyjs/wast-printer": "1.7.11" + "@webassemblyjs/wast-printer": "1.9.0" } }, "node_modules/@webassemblyjs/helper-fsm": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz", - "integrity": "sha512-nsAQWNP1+8Z6tkzdYlXT0kxfa2Z1tRTARd8wYnc/e3Zv3VydVVnaeePgqUzFrpkGUyhUUxOl5ML7f1NuT+gC0A==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", "dev": true }, "node_modules/@webassemblyjs/helper-module-context": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz", - "integrity": "sha512-JxfD5DX8Ygq4PvXDucq0M+sbUFA7BJAv/GGl9ITovqE+idGX+J3QSzJYz+LwQmL7fC3Rs+utvWoJxDb6pmC0qg==", - "dev": true + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0" + } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz", - "integrity": "sha512-cMXeVS9rhoXsI9LLL4tJxBgVD/KMOKXuFqYb5oCJ/opScWpkCMEz9EJtkonaNcnLv2R3K5jIeS4TRj/drde1JQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", "dev": true }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz", - "integrity": "sha512-8ZRY5iZbZdtNFE5UFunB8mmBEAbSI3guwbrsCl4fWdfRiAcvqQpeqd5KHhSWLL5wuxo53zcaGZDBU64qgn4I4Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-buffer": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/wasm-gen": "1.7.11" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz", - "integrity": "sha512-Mmqx/cS68K1tSrvRLtaV/Lp3NZWzXtOHUW2IvDvl2sihAwJh4ACE0eL6A8FvMyDG9abes3saB6dMimLOs+HMoQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", "dev": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.7.11.tgz", - "integrity": "sha512-vuGmgZjjp3zjcerQg+JA+tGOncOnJLWVkt8Aze5eWQLwTQGNgVLcyOTqgSCxWTR4J42ijHbBxnuRaL1Rv7XMdw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", "dev": true, "dependencies": { - "@xtuc/long": "4.2.1" + "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.7.11.tgz", - "integrity": "sha512-C6GFkc7aErQIAH+BMrIdVSmW+6HSe20wg57HEC1uqJP8E/xpMjXqQUxkQw07MhNDSDcGpxI9G5JSNOQCqJk4sA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", "dev": true }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz", - "integrity": "sha512-FUd97guNGsCZQgeTPKdgxJhBXkUbMTY6hFPf2Y4OedXd48H97J+sOY2Ltaq6WGVpIH8o/TGOVNiVz/SbpEMJGg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-buffer": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/helper-wasm-section": "1.7.11", - "@webassemblyjs/wasm-gen": "1.7.11", - "@webassemblyjs/wasm-opt": "1.7.11", - "@webassemblyjs/wasm-parser": "1.7.11", - "@webassemblyjs/wast-printer": "1.7.11" + "@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" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz", - "integrity": "sha512-U/KDYp7fgAZX5KPfq4NOupK/BmhDc5Kjy2GIqstMhvvdJRcER/kUsMThpWeRP8BMn4LXaKhSTggIJPOeYHwISA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/ieee754": "1.7.11", - "@webassemblyjs/leb128": "1.7.11", - "@webassemblyjs/utf8": "1.7.11" + "@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" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz", - "integrity": "sha512-XynkOwQyiRidh0GLua7SkeHvAPXQV/RxsUeERILmAInZegApOUAIJfRuPYe2F7RcjOC9tW3Cb9juPvAC/sCqvg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-buffer": "1.7.11", - "@webassemblyjs/wasm-gen": "1.7.11", - "@webassemblyjs/wasm-parser": "1.7.11" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz", - "integrity": "sha512-6lmXRTrrZjYD8Ng8xRyvyXQJYUQKYSXhJqXOBLw24rdiXsHAOlvw5PhesjdcaMadU/pyPQOJ5dHreMjBxwnQKg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-api-error": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/ieee754": "1.7.11", - "@webassemblyjs/leb128": "1.7.11", - "@webassemblyjs/utf8": "1.7.11" + "@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" } }, "node_modules/@webassemblyjs/wast-parser": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz", - "integrity": "sha512-lEyVCg2np15tS+dm7+JJTNhNWq9yTZvi3qEhAIIOaofcYlUp0UR5/tVqOwa/gXYr3gjwSZqw+/lS9dscyLelbQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/floating-point-hex-parser": "1.7.11", - "@webassemblyjs/helper-api-error": "1.7.11", - "@webassemblyjs/helper-code-frame": "1.7.11", - "@webassemblyjs/helper-fsm": "1.7.11", - "@xtuc/long": "4.2.1" + "@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" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz", - "integrity": "sha512-m5vkAsuJ32QpkdkDOUPGSltrg8Cuk3KBx4YrmAGQwCZPRdUHXxG4phIOuuycLemHFr74sWL9Wthqss4fzdzSwg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/wast-parser": "1.7.11", - "@xtuc/long": "4.2.1" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" } }, "node_modules/@xtuc/ieee754": { @@ -1960,9 +2332,9 @@ "dev": true }, "node_modules/@xtuc/long": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.1.tgz", - "integrity": "sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, "node_modules/accepts": { @@ -1978,36 +2350,15 @@ "node": ">= 0.6" } }, - "node_modules/accepts/node_modules/mime-db": { - "version": "1.42.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz", - "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/accepts/node_modules/mime-types": { - "version": "2.1.25", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz", - "integrity": "sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==", - "dev": true, - "dependencies": { - "mime-db": "1.42.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/ace-builds": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.4.7.tgz", - "integrity": "sha512-gwQGVFewBopRLho08BfahyvRa9FlB43JUig5ItAKTYc9kJJsbA9QNz75p28QtQomoPQ9rJx82ymL21x4ZSZmdg==" + "version": "1.4.12", + "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.4.12.tgz", + "integrity": "sha512-G+chJctFPiiLGvs3+/Mly3apXTcfgE45dT5yp12BcWZ1kUs+gm0qd3/fv4gsz6fVag4mM0moHVpjHDIgph6Psg==" }, "node_modules/acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -2016,25 +2367,19 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-dynamic-import": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", - "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", + "node_modules/acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", "dev": true, - "dependencies": { - "acorn": "^5.0.0" + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/acorn-jsx": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz", - "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==", - "dev": true - }, "node_modules/acorn-walk": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", - "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", "dev": true, "engines": { "node": ">=0.4.0" @@ -2050,9 +2395,9 @@ } }, "node_modules/aggregate-error": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", - "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, "dependencies": { "clean-stack": "^2.0.0", @@ -2063,28 +2408,38 @@ } }, "node_modules/ajv": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz", - "integrity": "sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "dependencies": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, "node_modules/ajv-errors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true + "dev": true, + "peerDependencies": { + "ajv": ">=5.0.0" + } }, "node_modules/ajv-keywords": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", - "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", - "dev": true + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } }, "node_modules/alphanum-sort": { "version": "1.0.2", @@ -2102,24 +2457,18 @@ } }, "node_modules/ansi-escapes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz", - "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", "dev": true, "dependencies": { - "type-fest": "^0.8.1" + "type-fest": "^0.11.0" }, "engines": { "node": ">=8" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/ansi-html": { @@ -2135,12 +2484,12 @@ } }, "node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, "node_modules/ansi-styles": { @@ -2162,25 +2511,17 @@ "dev": true }, "node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", "dev": true, + "optional": true, "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/anymatch/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, "node_modules/aproba": { @@ -2190,10 +2531,24 @@ "dev": true }, "node_modules/arch": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.1.tgz", - "integrity": "sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg==", - "dev": true + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/argparse": { "version": "1.0.10", @@ -2231,30 +2586,12 @@ "node": ">=0.10.0" } }, - "node_modules/array-filter": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", - "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", - "dev": true - }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", "dev": true }, - "node_modules/array-map": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", - "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", - "dev": true - }, - "node_modules/array-reduce": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", - "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", - "dev": true - }, "node_modules/array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", @@ -2295,22 +2632,30 @@ } }, "node_modules/asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", "dev": true, "dependencies": { "bn.js": "^4.0.0", "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" } }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, "node_modules/assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", "dev": true, "dependencies": { + "object-assign": "^4.1.1", "util": "0.10.3" } }, @@ -2366,9 +2711,9 @@ } }, "node_modules/async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", "dev": true }, "node_modules/async-limiter": { @@ -2396,88 +2741,25 @@ } }, "node_modules/autoprefixer": { - "version": "9.7.3", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.3.tgz", - "integrity": "sha512-8T5Y1C5Iyj6PgkPSFd0ODvK9DIleuPKUPYniNxybS47g2k2wFgLZ46lGQHlBuGKIAEV8fbCDfKCCRS1tvOgc3Q==", + "version": "9.8.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", + "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", "dev": true, "dependencies": { - "browserslist": "^4.8.0", - "caniuse-lite": "^1.0.30001012", - "chalk": "^2.4.2", + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "colorette": "^1.2.1", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", - "postcss": "^7.0.23", - "postcss-value-parser": "^4.0.2" + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" }, "bin": { "autoprefixer": "bin/autoprefixer" }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/autoprefixer/node_modules/browserslist": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.2.tgz", - "integrity": "sha512-+M4oeaTplPm/f1pXDw84YohEv7B1i/2Aisei8s4s6k3QsoSHa7i5sz8u/cGQkkatCPxMASKxPualR4wwYgVboA==", - "dev": true, - "dependencies": { - "caniuse-lite": "^1.0.30001015", - "electron-to-chromium": "^1.3.322", - "node-releases": "^1.1.42" - }, - "bin": { - "browserslist": "cli.js" - } - }, - "node_modules/autoprefixer/node_modules/caniuse-lite": { - "version": "1.0.30001017", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001017.tgz", - "integrity": "sha512-EDnZyOJ6eYh6lHmCvCdHAFbfV4KJ9lSdfv4h/ppEhrU/Yudkl7jujwMZ1we6RX7DXqBfT04pVMQ4J+1wcTlsKA==", - "dev": true - }, - "node_modules/autoprefixer/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/autoprefixer/node_modules/electron-to-chromium": { - "version": "1.3.322", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.322.tgz", - "integrity": "sha512-Tc8JQEfGQ1MzfSzI/bTlSr7btJv/FFO7Yh6tanqVmIWOuNCu6/D1MilIEgLtmWqIrsv+o4IjpLAhgMBr/ncNAA==", - "dev": true - }, - "node_modules/autoprefixer/node_modules/node-releases": { - "version": "1.1.44", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.44.tgz", - "integrity": "sha512-NwbdvJyR7nrcGrXvKAvzc5raj/NkoJudkarh2yIpJ4t0NH4aqjUDz/486P+ynIW5eokKOfzGNRdYoLfBlomruw==", - "dev": true, - "dependencies": { - "semver": "^6.3.0" - } - }, - "node_modules/autoprefixer/node_modules/postcss-value-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz", - "integrity": "sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ==", - "dev": true - }, - "node_modules/autoprefixer/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" } }, "node_modules/aws-sign2": { @@ -2490,9 +2772,9 @@ } }, "node_modules/aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", "dev": true }, "node_modules/babel-eslint": { @@ -2516,48 +2798,73 @@ "eslint": ">= 4.12.1" } }, - "node_modules/babel-eslint/node_modules/resolve": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", - "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", - "dev": true, - "dependencies": { - "path-parse": "^1.0.6" - } - }, "node_modules/babel-loader": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz", - "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==", + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", + "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==", "dev": true, "dependencies": { - "find-cache-dir": "^2.0.0", - "loader-utils": "^1.0.2", - "mkdirp": "^0.5.1", - "pify": "^4.0.1" + "find-cache-dir": "^3.3.1", + "loader-utils": "^1.4.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" }, "engines": { - "node": ">= 6.9" - } - }, - "node_modules/babel-loader/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" } }, "node_modules/babel-plugin-dynamic-import-node": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", - "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "dev": true, "dependencies": { "object.assign": "^4.1.0" } }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz", + "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.13.0", + "@babel/helper-define-polyfill-provider": "^0.1.5", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", + "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.1.5", + "core-js-compat": "^3.8.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz", + "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.1.5" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -2594,49 +2901,25 @@ "node": ">=0.10.0" } }, - "node_modules/base/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", - "dev": true + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/batch": { "version": "0.6.1", @@ -2668,12 +2951,6 @@ "node": ">= 6.0.0" } }, - "node_modules/bfj/node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, "node_modules/big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -2684,24 +2961,35 @@ } }, "node_modules/binary-extensions": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", - "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, + "optional": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" } }, "node_modules/bluebird": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", - "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true }, "node_modules/bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", "dev": true }, "node_modules/body-parser": { @@ -2818,6 +3106,15 @@ "node": ">=0.10.0" } }, + "node_modules/braces/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", @@ -2862,30 +3159,66 @@ } }, "node_modules/browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", "dev": true, "dependencies": { - "bn.js": "^4.1.0", + "bn.js": "^5.0.0", "randombytes": "^2.0.1" } }, "node_modules/browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", "dev": true, "dependencies": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" } }, + "node_modules/browserify-sign/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/browserify-sign/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/browserify-zlib": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", @@ -2896,23 +3229,32 @@ } }, "node_modules/browserslist": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.1.tgz", - "integrity": "sha512-QtULFqKIAtiyNx7NhZ/p4rB8m3xDozVo/pi5VgTlADLF2tNigz/QH+v0m5qhn7XfHT7u+607NcCNOnC0HZAlMg==", + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", + "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", "dev": true, "dependencies": { - "caniuse-lite": "^1.0.30000999", - "electron-to-chromium": "^1.3.284", - "node-releases": "^1.1.36" + "caniuse-lite": "^1.0.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "node-releases": "^1.1.70" }, "bin": { "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" } }, "node_modules/buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", "dev": true, "dependencies": { "base64-js": "^1.0.2", @@ -2960,9 +3302,9 @@ } }, "node_modules/cacache": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", - "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", "dev": true, "dependencies": { "bluebird": "^3.5.5", @@ -2982,27 +3324,13 @@ "y18n": "^4.0.0" } }, - "node_modules/cacache/node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "node_modules/cacache/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "node_modules/cacache/node_modules/ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", "dev": true, "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" - }, - "engines": { - "node": "*" + "figgy-pudding": "^3.5.1" } }, "node_modules/cache-base": { @@ -3040,142 +3368,22 @@ }, "engines": { "node": ">= 8.9.0" - } - }, - "node_modules/cache-loader/node_modules/ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "node_modules/cache-loader/node_modules/find-cache-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.0.0.tgz", - "integrity": "sha512-t7ulV1fmbxh5G9l/492O1p5+EBbr3uwpt6odhFTMc+nWyhmbloe+ja9BZ8pIBtqFWhOmCWVjx+pTW4zDkFoclw==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.0", - "pkg-dir": "^4.1.0" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "webpack": "^4.0.0" } }, - "node_modules/cache-loader/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cache-loader/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cache-loader/node_modules/make-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz", - "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cache-loader/node_modules/neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", - "dev": true - }, - "node_modules/cache-loader/node_modules/p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/cache-loader/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cache-loader/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cache-loader/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cache-loader/node_modules/schema-utils": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.5.0.tgz", - "integrity": "sha512-32ISrwW2scPXHUSusP8qMg5dLUawKkyV+/qIEV9JdXKx+rsM6mi8vZY8khg2M69Qom16rtroWXD3Ybtiws38gQ==", - "dev": true, - "dependencies": { - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1" - }, - "engines": { - "node": ">= 8.9.0" - } - }, - "node_modules/cache-loader/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/call-me-maybe": { @@ -3228,12 +3436,15 @@ } }, "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", "dev": true, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/caniuse-api": { @@ -3249,15 +3460,15 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001002", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001002.tgz", - "integrity": "sha512-pRuxPE8wdrWmVPKcDmJJiGBxr6lFJq4ivdSeo9FTmGj5Rb8NX3Mby2pARG57MXF15hYAhZ0nHV5XxT2ig4bz3g==", + "version": "1.0.30001203", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001203.tgz", + "integrity": "sha512-/I9tvnzU/PHMH7wBPrfDMSuecDeUKerjCPX7D0xBbaJZPxoT9m+yYxt0zCTkcijCkjTdim3H56Zm0i5Adxch4w==", "dev": true }, "node_modules/case-sensitive-paths-webpack-plugin": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.2.0.tgz", - "integrity": "sha512-u5ElzokS8A1pm9vM3/iDgTcI3xqHxuCao94Oz8etI3cf0Tio0p8izkDYbTIn09uP3yUUr6+veaE6IkjnTYS46g==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", + "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", "dev": true, "engines": { "node": ">=4" @@ -3270,9 +3481,9 @@ "dev": true }, "node_modules/chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "dependencies": { "ansi-styles": "^3.2.1", @@ -3296,50 +3507,99 @@ "dev": true }, "node_modules/chokidar": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", - "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", "dev": true, + "optional": true, "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.0", - "braces": "^2.3.0", - "glob-parent": "^3.1.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "lodash.debounce": "^4.0.8", - "normalize-path": "^2.1.1", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0", - "upath": "^1.0.5" - }, - "optionalDependencies": { - "fsevents": "^1.2.2" - } - }, - "node_modules/chokidar/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" + "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.5.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/chokidar/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "optional": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "optional": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "optional": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chokidar/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/chokidar/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "optional": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" } }, "node_modules/chownr": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", - "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "dev": true }, "node_modules/chrome-trace-event": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz", - "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", "dev": true, "dependencies": { "tslib": "^1.9.0" @@ -3391,10 +3651,81 @@ "node": ">=0.10.0" } }, + "node_modules/class-utils/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/clean-css": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", - "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", + "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", "dev": true, "dependencies": { "source-map": "~0.6.0" @@ -3422,29 +3753,29 @@ } }, "node_modules/cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, "dependencies": { - "restore-cursor": "^2.0.0" + "restore-cursor": "^3.1.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/cli-highlight": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.4.tgz", - "integrity": "sha512-s7Zofobm20qriqDoU9sXptQx0t2R9PEgac92mENNm7xaEe1hn71IIMsXMK+6encA6WRCWWxIGQbipr3q998tlQ==", + "version": "2.1.10", + "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.10.tgz", + "integrity": "sha512-CcPFD3JwdQ2oSzy+AMG6j3LRTkNjM82kzcSKzoVw6cLanDCJNlsLjeqVTOTfOfucnWv5F0rmBemVf1m9JiIasw==", "dev": true, "dependencies": { - "chalk": "^3.0.0", - "highlight.js": "^9.6.0", + "chalk": "^4.0.0", + "highlight.js": "^10.0.0", "mz": "^2.4.0", "parse5": "^5.1.1", - "parse5-htmlparser2-tree-adapter": "^5.1.1", - "yargs": "^15.0.0" + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" }, "bin": { "highlight": "bin/highlight" @@ -3455,29 +3786,34 @@ } }, "node_modules/cli-highlight/node_modules/ansi-styles": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.0.tgz", - "integrity": "sha512-7kFQgnEaMdRtwf6uSfUnVr9gSGC7faurn+J/Mv90/W+iTtN0405/nLdopfMWwchyxhbGYl6TC4Sccn9TUkGAgg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "@types/color-name": "^1.1.1", "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/cli-highlight/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/cli-highlight/node_modules/color-convert": { @@ -3508,9 +3844,9 @@ } }, "node_modules/cli-highlight/node_modules/supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { "has-flag": "^4.0.0" @@ -3520,12 +3856,15 @@ } }, "node_modules/cli-spinners": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.1.0.tgz", - "integrity": "sha512-8B00fJOEh1HPrx4fo5eW16XmE1PcL1tGpGrxy63CXGP9nHdPBN63X75hA1zhvQuhVztJWLqV58Roj2qlNM7cAA==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.0.tgz", + "integrity": "sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q==", "dev": true, "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/cli-width": { @@ -3538,9 +3877,9 @@ } }, "node_modules/clipboard": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.4.tgz", - "integrity": "sha512-Vw26VSLRpJfBofiVaFb/I8PVfdI1OxKcYShe6fm0sP/DtmiWQNCjhM/okTvdCo0G+lMMm1rMYbk4IK4x1X+kgQ==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.8.tgz", + "integrity": "sha512-Y6WO0unAIQp5bLmk1zdThRhgJt/x3ks6f30s3oE3H1mgIEU33XyQjEf8gsf6DxC7NPX8Y1SsNWjUjL/ywLnnbQ==", "dependencies": { "good-listener": "^1.2.2", "select": "^1.1.2", @@ -3548,76 +3887,72 @@ } }, "node_modules/clipboardy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.1.0.tgz", - "integrity": "sha512-2pzOUxWcLlXWtn+Jd6js3o12TysNOOVes/aQfg+MT/35vrxWzedHlLwyoJpXjsFKWm95BTNEcMGD9+a7mKzZkQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", + "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", "dev": true, "dependencies": { "arch": "^2.1.1", - "execa": "^1.0.0" + "execa": "^1.0.0", + "is-wsl": "^2.1.1" }, "engines": { "node": ">=8" } }, "node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" } }, "node_modules/cliui/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true, "engines": { - "node": ">=6" + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" } }, "node_modules/cliui/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/cliui/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "dependencies": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.0" }, "engines": { - "node": ">=6" - } - }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/clone": { @@ -3643,15 +3978,6 @@ "node": ">= 4.0" } }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -3666,13 +3992,13 @@ } }, "node_modules/color": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", - "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", + "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", "dev": true, "dependencies": { "color-convert": "^1.9.1", - "color-string": "^1.5.2" + "color-string": "^1.5.4" } }, "node_modules/color-convert": { @@ -3691,19 +4017,25 @@ "dev": true }, "node_modules/color-string": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", - "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.5.tgz", + "integrity": "sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg==", "dev": true, "dependencies": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" } }, + "node_modules/colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "dev": true + }, "node_modules/combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "dependencies": { "delayed-stream": "~1.0.0" @@ -3725,32 +4057,23 @@ "dev": true }, "node_modules/component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", "dev": true }, "node_modules/compressible": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz", - "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==", + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dev": true, "dependencies": { - "mime-db": ">= 1.40.0 < 2" + "mime-db": ">= 1.43.0 < 2" }, "engines": { "node": ">= 0.6" } }, - "node_modules/compressible/node_modules/mime-db": { - "version": "1.42.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz", - "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/compression": { "version": "1.7.4", "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", @@ -3824,13 +4147,10 @@ } }, "node_modules/console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "dependencies": { - "date-now": "^0.1.4" - } + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true }, "node_modules/consolidate": { "version": "0.15.1", @@ -3919,9 +4239,9 @@ } }, "node_modules/copy-webpack-plugin": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz", - "integrity": "sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz", + "integrity": "sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ==", "dev": true, "dependencies": { "cacache": "^12.0.3", @@ -3934,11 +4254,18 @@ "normalize-path": "^3.0.0", "p-limit": "^2.2.1", "schema-utils": "^1.0.0", - "serialize-javascript": "^2.1.2", + "serialize-javascript": "^4.0.0", "webpack-log": "^2.0.0" }, "engines": { "node": ">= 6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, "node_modules/copy-webpack-plugin/node_modules/find-cache-dir": { @@ -3955,6 +4282,18 @@ "node": ">=6" } }, + "node_modules/copy-webpack-plugin/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/copy-webpack-plugin/node_modules/globby": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", @@ -3981,16 +4320,23 @@ "node": ">=4" } }, - "node_modules/copy-webpack-plugin/node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "node_modules/copy-webpack-plugin/node_modules/ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "node_modules/copy-webpack-plugin/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "dependencies": { - "is-extglob": "^2.1.1" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, "node_modules/copy-webpack-plugin/node_modules/make-dir": { @@ -4006,32 +4352,61 @@ "node": ">=6" } }, - "node_modules/copy-webpack-plugin/node_modules/p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "node_modules/copy-webpack-plugin/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "p-limit": "^2.0.0" }, "engines": { "node": ">=6" } }, - "node_modules/copy-webpack-plugin/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "node_modules/copy-webpack-plugin/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/copy-webpack-plugin/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0" + }, "engines": { "node": ">=6" } }, - "node_modules/copy-webpack-plugin/node_modules/serialize-javascript": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", - "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", - "dev": true + "node_modules/copy-webpack-plugin/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/copy-webpack-plugin/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } }, "node_modules/copy-webpack-plugin/node_modules/slash": { "version": "1.0.0", @@ -4043,63 +4418,27 @@ } }, "node_modules/core-js": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.1.tgz", - "integrity": "sha512-186WjSik2iTGfDjfdCZAxv2ormxtKgemjC3SI6PL31qOA0j5LhTDVjHChccoc7brwLvpvLPiMyRlcO88C4l1QQ==", - "dev": true + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.9.1.tgz", + "integrity": "sha512-gSjRvzkxQc1zjM/5paAmL4idJBFzuJoo+jDjF1tStYFMV2ERfD02HhahhCGXUyHxQRG4yFKVSdO6g62eoRMcDg==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } }, "node_modules/core-js-compat": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.1.tgz", - "integrity": "sha512-2Tl1EuxZo94QS2VeH28Ebf5g3xbPZG/hj/N5HDDy4XMP/ImR0JIer/nggQRiMN91Q54JVkGbytf42wO29oXVHg==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.9.1.tgz", + "integrity": "sha512-jXAirMQxrkbiiLsCx9bQPJFA6llDadKMpYrBJQJ3/c4/vsPP/fAf29h24tviRlvwUL6AmY5CHLu2GvjuYviQqA==", "dev": true, "dependencies": { - "browserslist": "^4.8.2", + "browserslist": "^4.16.3", "semver": "7.0.0" - } - }, - "node_modules/core-js-compat/node_modules/browserslist": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.2.tgz", - "integrity": "sha512-+M4oeaTplPm/f1pXDw84YohEv7B1i/2Aisei8s4s6k3QsoSHa7i5sz8u/cGQkkatCPxMASKxPualR4wwYgVboA==", - "dev": true, - "dependencies": { - "caniuse-lite": "^1.0.30001015", - "electron-to-chromium": "^1.3.322", - "node-releases": "^1.1.42" }, - "bin": { - "browserslist": "cli.js" - } - }, - "node_modules/core-js-compat/node_modules/caniuse-lite": { - "version": "1.0.30001017", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001017.tgz", - "integrity": "sha512-EDnZyOJ6eYh6lHmCvCdHAFbfV4KJ9lSdfv4h/ppEhrU/Yudkl7jujwMZ1we6RX7DXqBfT04pVMQ4J+1wcTlsKA==", - "dev": true - }, - "node_modules/core-js-compat/node_modules/electron-to-chromium": { - "version": "1.3.322", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.322.tgz", - "integrity": "sha512-Tc8JQEfGQ1MzfSzI/bTlSr7btJv/FFO7Yh6tanqVmIWOuNCu6/D1MilIEgLtmWqIrsv+o4IjpLAhgMBr/ncNAA==", - "dev": true - }, - "node_modules/core-js-compat/node_modules/node-releases": { - "version": "1.1.44", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.44.tgz", - "integrity": "sha512-NwbdvJyR7nrcGrXvKAvzc5raj/NkoJudkarh2yIpJ4t0NH4aqjUDz/486P+ynIW5eokKOfzGNRdYoLfBlomruw==", - "dev": true, - "dependencies": { - "semver": "^6.3.0" - } - }, - "node_modules/core-js-compat/node_modules/node-releases/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, "node_modules/core-js-compat/node_modules/semver": { @@ -4133,15 +4472,21 @@ } }, "node_modules/create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", "dev": true, "dependencies": { "bn.js": "^4.1.0", - "elliptic": "^6.0.0" + "elliptic": "^6.5.3" } }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, "node_modules/create-hash": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", @@ -4185,6 +4530,15 @@ "node": ">=4.8" } }, + "node_modules/cross-spawn/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, "node_modules/crypto-browserify": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", @@ -4230,9 +4584,9 @@ } }, "node_modules/css-loader": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.4.0.tgz", - "integrity": "sha512-JornYo4RAXl1Mzt0lOSVPmArzAMV3rGY2VuwtaDc732WTWjdwTaeS19nCGWMcSCf305Q396lhhDAJEWWM0SgPQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz", + "integrity": "sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==", "dev": true, "dependencies": { "camelcase": "^5.3.1", @@ -4240,59 +4594,33 @@ "icss-utils": "^4.1.1", "loader-utils": "^1.2.3", "normalize-path": "^3.0.0", - "postcss": "^7.0.23", + "postcss": "^7.0.32", "postcss-modules-extract-imports": "^2.0.0", "postcss-modules-local-by-default": "^3.0.2", - "postcss-modules-scope": "^2.1.1", + "postcss-modules-scope": "^2.2.0", "postcss-modules-values": "^3.0.0", - "postcss-value-parser": "^4.0.2", - "schema-utils": "^2.6.0" + "postcss-value-parser": "^4.1.0", + "schema-utils": "^2.7.0", + "semver": "^6.3.0" }, "engines": { "node": ">= 8.9.0" - } - }, - "node_modules/css-loader/node_modules/ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "node_modules/css-loader/node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" }, - "engines": { - "node": ">=4" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/css-loader/node_modules/postcss-value-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz", - "integrity": "sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ==", - "dev": true - }, - "node_modules/css-loader/node_modules/schema-utils": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.1.tgz", - "integrity": "sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg==", + "node_modules/css-loader/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, - "dependencies": { - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1" - }, "engines": { - "node": ">= 8.9.0" + "node": ">=6" } }, "node_modules/css-select": { @@ -4335,25 +4663,22 @@ "node": ">=0.10.0" } }, - "node_modules/css-unit-converter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.1.tgz", - "integrity": "sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=", - "dev": true - }, "node_modules/css-what": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.2.1.tgz", - "integrity": "sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", "dev": true, "engines": { "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, "node_modules/cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, "bin": { "cssesc": "bin/cssesc" @@ -4458,27 +4783,49 @@ } }, "node_modules/csso": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.2.tgz", - "integrity": "sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", "dev": true, "dependencies": { - "css-tree": "1.0.0-alpha.37" + "css-tree": "^1.1.2" }, "engines": { "node": ">=8.0.0" } }, - "node_modules/current-script-polyfill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/current-script-polyfill/-/current-script-polyfill-1.0.0.tgz", - "integrity": "sha1-8xz35PPiGLBybnOMqSoC00iO9hU=", + "node_modules/csso/node_modules/css-tree": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.2.tgz", + "integrity": "sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", "dev": true }, + "node_modules/csso/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/cyclist": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", - "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", "dev": true }, "node_modules/dashdash": { @@ -4493,12 +4840,6 @@ "node": ">=0.10" } }, - "node_modules/date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, "node_modules/de-indent": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", @@ -4506,12 +4847,20 @@ "dev": true }, "node_modules/debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "dependencies": { - "ms": "^2.1.1" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/decamelize": { @@ -4544,15 +4893,9 @@ "object-is": "^1.0.1", "object-keys": "^1.1.1", "regexp.prototype.flags": "^1.2.0" - } - }, - "node_modules/deep-equal/node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/deep-is": { @@ -4583,9 +4926,9 @@ } }, "node_modules/default-gateway/node_modules/cross-spawn": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", - "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "dependencies": { "path-key": "^3.1.0", @@ -4618,15 +4961,18 @@ } }, "node_modules/default-gateway/node_modules/get-stream": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", - "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, "dependencies": { "pump": "^3.0.0" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/default-gateway/node_modules/is-stream": { @@ -4638,15 +4984,6 @@ "node": ">=8" } }, - "node_modules/default-gateway/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/default-gateway/node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -4659,18 +4996,6 @@ "node": ">=8" } }, - "node_modules/default-gateway/node_modules/onetime": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/default-gateway/node_modules/p-finally": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", @@ -4759,44 +5084,6 @@ "node": ">=0.10.0" } }, - "node_modules/define-property/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/del": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", @@ -4840,24 +5127,6 @@ "node": ">=0.10.0" } }, - "node_modules/del/node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/del/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -4882,9 +5151,9 @@ } }, "node_modules/des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", "dev": true, "dependencies": { "inherits": "^2.0.1", @@ -4898,9 +5167,9 @@ "dev": true }, "node_modules/detect-node": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", - "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.5.tgz", + "integrity": "sha512-qi86tE6hRcFHy8jI1m2VG+LaPUR1LhqDa5G8tVjuUXmOrpuAgqsA1pN0+ldgr3aKUH+QLI9hCY/OcRYisERejw==", "dev": true }, "node_modules/diffie-hellman": { @@ -4914,6 +5183,12 @@ "randombytes": "^2.0.0" } }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, "node_modules/dir-glob": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", @@ -4983,10 +5258,16 @@ } }, "node_modules/dom-serializer/node_modules/domelementtype": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", - "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", - "dev": true + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", + "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] }, "node_modules/domain-browser": { "version": "1.2.0", @@ -5024,15 +5305,15 @@ } }, "node_modules/dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dev": true, "dependencies": { - "is-obj": "^1.0.0" + "is-obj": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/dotenv": { @@ -5051,15 +5332,15 @@ "dev": true }, "node_modules/duplexer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", "dev": true }, "node_modules/duplexify": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", - "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", "dev": true, "dependencies": { "end-of-stream": "^1.0.0", @@ -5069,9 +5350,9 @@ } }, "node_modules/easy-stack": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.0.tgz", - "integrity": "sha1-EskbMIWjfwuqM26UhurEv5Tj54g=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.1.tgz", + "integrity": "sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==", "dev": true, "engines": { "node": ">=6.0.0" @@ -5098,44 +5379,51 @@ "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", "dev": true, + "hasInstallScript": true, "engines": { "node": ">=0.10.0" } }, "node_modules/electron-to-chromium": { - "version": "1.3.293", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.293.tgz", - "integrity": "sha512-DQSBRuU2Z1vG+CEWUIfCEVMHtuaGlhVojzg39mX5dx7PLSFDJ7DSrGUWzaPFFgWR1jo26hj1nXXRQZvFwk7F8w==", + "version": "1.3.693", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.693.tgz", + "integrity": "sha512-vUdsE8yyeu30RecppQtI+XTz2++LWLVEIYmzeCaCRLSdtKZ2eXqdJcrs85KwLiPOPVc6PELgWyXBsfqIvzGZag==", "dev": true }, "node_modules/elliptic": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", - "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "dev": true, "dependencies": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", + "bn.js": "^4.11.9", + "brorand": "^1.1.0", "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" } }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, "node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, "node_modules/emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true, "engines": { - "node": ">= 0.10" + "node": ">= 4" } }, "node_modules/encodeurl": { @@ -5148,38 +5436,54 @@ } }, "node_modules/end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, "dependencies": { "once": "^1.4.0" } }, "node_modules/enhanced-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", - "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", "dev": true, "dependencies": { "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", + "memory-fs": "^0.5.0", "tapable": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/enhanced-resolve/node_modules/memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, "node_modules/entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", - "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==", - "dev": true + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } }, "node_modules/errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "dev": true, "dependencies": { "prr": "~1.0.1" @@ -5198,12 +5502,68 @@ } }, "node_modules/error-stack-parser": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.4.tgz", - "integrity": "sha512-fZ0KkoxSjLFmhW5lHbUT3tLwy3nX1qEzMYo8koY1vrsAco53CMT1djnBSeC/wUjTEZRhZl9iRw7PaMaxfJ4wzQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz", + "integrity": "sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==", "dev": true, "dependencies": { - "stackframe": "^1.1.0" + "stackframe": "^1.1.1" + } + }, + "node_modules/es-abstract": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" } }, "node_modules/escape-html": { @@ -5222,9 +5582,9 @@ } }, "node_modules/eslint": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.7.2.tgz", - "integrity": "sha512-qMlSWJaCSxDFr8fBPvJM9kJwbazrhNcBU3+DszDW1OlEwKBBRWsJc7NJFelvwQpanHCR14cOLD41x8Eqvo3Nng==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", "dev": true, "dependencies": { "@babel/code-frame": "^7.0.0", @@ -5270,6 +5630,9 @@ }, "engines": { "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-config-prettier": { @@ -5291,6 +5654,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-2.2.1.tgz", "integrity": "sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg==", + "deprecated": "This loader has been deprecated. Please use eslint-webpack-plugin", "dev": true, "dependencies": { "loader-fs-cache": "^1.0.0", @@ -5298,6 +5662,10 @@ "object-assign": "^4.0.1", "object-hash": "^1.1.4", "rimraf": "^2.6.1" + }, + "peerDependencies": { + "eslint": ">=1.6.0 <7.0.0", + "webpack": ">=2.0.0 <5.0.0" } }, "node_modules/eslint-plugin-prettier": { @@ -5338,13 +5706,22 @@ "eslint": "^5.0.0 || ^6.0.0" } }, + "node_modules/eslint-plugin-vue/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, "node_modules/eslint-scope": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", - "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "dependencies": { - "esrecurse": "^4.1.0", + "esrecurse": "^4.3.0", "estraverse": "^4.1.1" }, "engines": { @@ -5363,97 +5740,19 @@ "node": ">=6" } }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", - "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, "engines": { "node": ">=4" } }, - "node_modules/eslint/node_modules/acorn": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", - "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "node_modules/eslint/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", - "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", - "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint/node_modules/espree": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz", - "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==", - "dev": true, - "dependencies": { - "acorn": "^7.1.0", - "acorn-jsx": "^5.1.0", - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/eslint/node_modules/glob-parent": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", - "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "dependencies": { "is-glob": "^4.0.1" @@ -5462,43 +5761,25 @@ "node": ">= 6" } }, - "node_modules/eslint/node_modules/glob-parent/node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/eslint/node_modules/globals": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz", - "integrity": "sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==", + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", "dev": true, "dependencies": { "type-fest": "^0.8.1" }, "engines": { "node": ">=8" - } - }, - "node_modules/eslint/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint/node_modules/import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "dependencies": { "parent-module": "^1.0.0", @@ -5506,6 +5787,9 @@ }, "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint/node_modules/resolve-from": { @@ -5517,27 +5801,6 @@ "node": ">=4" } }, - "node_modules/eslint/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/eslint/node_modules/type-fest": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", @@ -5548,40 +5811,19 @@ } }, "node_modules/espree": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz", - "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", "dev": true, "dependencies": { - "acorn": "^7.1.0", - "acorn-jsx": "^5.1.0", + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", "eslint-visitor-keys": "^1.1.0" }, "engines": { "node": ">=6.0.0" } }, - "node_modules/espree/node_modules/acorn": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", - "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", - "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -5596,42 +5838,60 @@ } }, "node_modules/esquery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, "dependencies": { - "estraverse": "^4.0.0" + "estraverse": "^5.1.0" }, "engines": { - "node": ">=0.6" + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" } }, "node_modules/esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "dependencies": { - "estraverse": "^4.1.0" + "estraverse": "^5.2.0" }, "engines": { "node": ">=4.0" } }, - "node_modules/estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" } }, "node_modules/esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, "engines": { "node": ">=0.10.0" @@ -5656,24 +5916,24 @@ } }, "node_modules/eventemitter3": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", - "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", "dev": true }, "node_modules/events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", - "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, "engines": { "node": ">=0.8.x" } }, "node_modules/eventsource": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", - "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz", + "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==", "dev": true, "dependencies": { "original": "^1.0.0" @@ -5761,6 +6021,86 @@ "node": ">=0.10.0" } }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/expand-brackets/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -5851,18 +6191,6 @@ "node": ">=0.10.0" } }, - "node_modules/extend-shallow/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", @@ -5920,40 +6248,11 @@ "node": ">=0.10.0" } }, - "node_modules/extglob/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "node_modules/extglob/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, "engines": { "node": ">=0.10.0" } @@ -5968,9 +6267,9 @@ ] }, "node_modules/fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "node_modules/fast-diff": { @@ -5980,9 +6279,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.6.tgz", - "integrity": "sha512-0BvMaZc1k9F+MeWWMe8pL6YltFzZYcJsYU7D4JyDA6PAczaXvxqQQ/z+mDF7/4Mw01DeUc+i3CTKajnkANkV4w==", + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", "dev": true, "dependencies": { "@mrmlnc/readdir-enhanced": "^2.2.1", @@ -5997,9 +6296,9 @@ } }, "node_modules/fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, "node_modules/fast-levenshtein": { @@ -6009,33 +6308,36 @@ "dev": true }, "node_modules/faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", "dev": true, "dependencies": { "websocket-driver": ">=0.5.1" }, "engines": { - "node": ">=0.4.0" + "node": ">=0.8.0" } }, "node_modules/figgy-pudding": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", - "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", "dev": true }, "node_modules/figures": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz", - "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, "dependencies": { "escape-string-regexp": "^1.0.5" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/file-entry-cache": { @@ -6061,33 +6363,18 @@ }, "engines": { "node": ">= 8.9.0" - } - }, - "node_modules/file-loader/node_modules/ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "node_modules/file-loader/node_modules/schema-utils": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.1.tgz", - "integrity": "sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg==", - "dev": true, - "dependencies": { - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1" }, - "engines": { - "node": ">= 8.9.0" + "peerDependencies": { + "webpack": "^4.0.0" } }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, "node_modules/filesize": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", @@ -6124,6 +6411,15 @@ "node": ">=0.10.0" } }, + "node_modules/fill-range/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/finalhandler": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", @@ -6158,29 +6454,33 @@ "dev": true }, "node_modules/find-cache-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.0.0.tgz", - "integrity": "sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", "dev": true, "dependencies": { "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^3.0.0" + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, "node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "dependencies": { - "locate-path": "^3.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/flat-cache": { @@ -6197,41 +6497,52 @@ "node": ">=4" } }, + "node_modules/flat-cache/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, "node_modules/flatted": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", - "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", "dev": true }, "node_modules/flush-write-stream": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", - "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", "dev": true, "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.4" + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" } }, "node_modules/follow-redirects": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.9.0.tgz", - "integrity": "sha512-CRcPzsSIbXyVDl0QI01muNDu69S8trU4jArW9LpOt2WtC6LyUJetcIrmfHsRBx7/Jb6GHJUiuqyYxPooFfNt6A==", + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz", + "integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA==", "dev": true, - "dependencies": { - "debug": "^3.0.0" - }, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], "engines": { "node": ">=4.0" - } - }, - "node_modules/follow-redirects/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, "node_modules/for-in": { @@ -6321,9 +6632,9 @@ } }, "node_modules/fs-minipass": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.0.0.tgz", - "integrity": "sha512-40Qz+LFXmd9tzYVnnBmZvFfvAADfUA14TXPK1s7IfElJTIZ97rA8w4Kin7Wt5JBrC3ShnnFJO/5vPjPEeJIq9A==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, "dependencies": { "minipass": "^3.0.0" @@ -6351,770 +6662,19 @@ "dev": true }, "node_modules/fsevents": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz", - "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", - "bundleDependencies": [ - "abbrev", - "ansi-regex", - "aproba", - "are-we-there-yet", - "balanced-match", - "brace-expansion", - "chownr", - "code-point-at", - "concat-map", - "console-control-strings", - "core-util-is", - "debug", - "deep-extend", - "delegates", - "detect-libc", - "fs-minipass", - "fs.realpath", - "gauge", - "glob", - "has-unicode", - "iconv-lite", - "ignore-walk", - "inflight", - "inherits", - "ini", - "is-fullwidth-code-point", - "isarray", - "minimatch", - "minimist", - "minipass", - "minizlib", - "mkdirp", - "ms", - "needle", - "node-pre-gyp", - "nopt", - "npm-bundled", - "npm-packlist", - "npmlog", - "number-is-nan", - "object-assign", - "once", - "os-homedir", - "os-tmpdir", - "osenv", - "path-is-absolute", - "process-nextick-args", - "rc", - "readable-stream", - "rimraf", - "safe-buffer", - "safer-buffer", - "sax", - "semver", - "set-blocking", - "signal-exit", - "string-width", - "string_decoder", - "strip-ansi", - "strip-json-comments", - "tar", - "util-deprecate", - "wide-align", - "wrappy", - "yallist" - ], + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, "hasInstallScript": true, "optional": true, "os": [ "darwin" ], - "dependencies": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" - }, "engines": { - "node": ">=4.0" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/fsevents/node_modules/abbrev": { - "version": "1.1.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/fsevents/node_modules/ansi-regex": { - "version": "2.1.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/aproba": { - "version": "1.2.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/fsevents/node_modules/are-we-there-yet": { - "version": "1.1.5", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "node_modules/fsevents/node_modules/balanced-match": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/fsevents/node_modules/brace-expansion": { - "version": "1.1.11", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/fsevents/node_modules/chownr": { - "version": "1.1.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/fsevents/node_modules/code-point-at": { - "version": "1.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/concat-map": { - "version": "0.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/fsevents/node_modules/console-control-strings": { - "version": "1.1.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/fsevents/node_modules/core-util-is": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/fsevents/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/fsevents/node_modules/deep-extend": { - "version": "0.6.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/fsevents/node_modules/delegates": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/fsevents/node_modules/detect-libc": { - "version": "1.0.3", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "optional": true, - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/fsevents/node_modules/fs-minipass": { - "version": "1.2.5", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "minipass": "^2.2.1" - } - }, - "node_modules/fsevents/node_modules/fs.realpath": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/fsevents/node_modules/gauge": { - "version": "2.7.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "node_modules/fsevents/node_modules/glob": { - "version": "7.1.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "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" - }, - "engines": { - "node": "*" - } - }, - "node_modules/fsevents/node_modules/has-unicode": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/fsevents/node_modules/iconv-lite": { - "version": "0.4.24", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/ignore-walk": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "minimatch": "^3.0.4" - } - }, - "node_modules/fsevents/node_modules/inflight": { - "version": "1.0.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/fsevents/node_modules/inherits": { - "version": "2.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/fsevents/node_modules/ini": { - "version": "1.3.5", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "engines": { - "node": "*" - } - }, - "node_modules/fsevents/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/isarray": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/fsevents/node_modules/minimatch": { - "version": "3.0.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/fsevents/node_modules/minimist": { - "version": "0.0.8", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/fsevents/node_modules/minipass": { - "version": "2.3.5", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "node_modules/fsevents/node_modules/minizlib": { - "version": "1.2.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "minipass": "^2.2.1" - } - }, - "node_modules/fsevents/node_modules/mkdirp": { - "version": "0.5.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "minimist": "0.0.8" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/fsevents/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/fsevents/node_modules/needle": { - "version": "2.2.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "bin": { - "needle": "bin/needle" - }, - "engines": { - "node": ">= 0.10.x" - } - }, - "node_modules/fsevents/node_modules/node-pre-gyp": { - "version": "0.10.3", - "dev": true, - "inBundle": true, - "license": "BSD-3-Clause", - "optional": true, - "dependencies": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - }, - "bin": { - "node-pre-gyp": "bin/node-pre-gyp" - } - }, - "node_modules/fsevents/node_modules/nopt": { - "version": "4.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "abbrev": "1", - "osenv": "^0.1.4" - }, - "bin": { - "nopt": "bin/nopt.js" - } - }, - "node_modules/fsevents/node_modules/npm-bundled": { - "version": "1.0.5", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/fsevents/node_modules/npm-packlist": { - "version": "1.2.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "node_modules/fsevents/node_modules/npmlog": { - "version": "4.1.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "node_modules/fsevents/node_modules/number-is-nan": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/object-assign": { - "version": "4.1.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/once": { - "version": "1.4.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/fsevents/node_modules/os-homedir": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/os-tmpdir": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/osenv": { - "version": "0.1.5", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "node_modules/fsevents/node_modules/path-is-absolute": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/process-nextick-args": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/fsevents/node_modules/rc": { - "version": "1.2.8", - "dev": true, - "inBundle": true, - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", - "optional": true, - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/fsevents/node_modules/rc/node_modules/minimist": { - "version": "1.2.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/fsevents/node_modules/readable-stream": { - "version": "2.3.6", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "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" - } - }, - "node_modules/fsevents/node_modules/rimraf": { - "version": "2.6.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/fsevents/node_modules/safe-buffer": { - "version": "5.1.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/fsevents/node_modules/safer-buffer": { - "version": "2.1.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/fsevents/node_modules/sax": { - "version": "1.2.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/fsevents/node_modules/semver": { - "version": "5.6.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/fsevents/node_modules/set-blocking": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/fsevents/node_modules/signal-exit": { - "version": "3.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/fsevents/node_modules/string_decoder": { - "version": "1.1.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/fsevents/node_modules/string-width": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/strip-ansi": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/strip-json-comments": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/tar": { - "version": "4.4.8", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" - }, - "engines": { - "node": ">=4.5" - } - }, - "node_modules/fsevents/node_modules/util-deprecate": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/fsevents/node_modules/wide-align": { - "version": "1.1.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "string-width": "^1.0.2 || 2" - } - }, - "node_modules/fsevents/node_modules/wrappy": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/fsevents/node_modules/yallist": { - "version": "3.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true - }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -7127,6 +6687,15 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -7136,6 +6705,20 @@ "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/get-stdin": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", @@ -7176,9 +6759,9 @@ } }, "node_modules/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -7190,6 +6773,9 @@ }, "engines": { "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/glob-parent": { @@ -7221,9 +6807,9 @@ "dev": true }, "node_modules/globals": { - "version": "11.9.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.9.0.tgz", - "integrity": "sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg==", + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, "engines": { "node": ">=4" @@ -7248,24 +6834,6 @@ "node": ">=6" } }, - "node_modules/globby/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/globby/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/good-listener": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", @@ -7275,9 +6843,9 @@ } }, "node_modules/graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", "dev": true }, "node_modules/gzip-size": { @@ -7293,50 +6861,12 @@ "node": ">=6" } }, - "node_modules/gzip-size/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/handle-thing": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", - "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", "dev": true }, - "node_modules/handlebars": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.3.tgz", - "integrity": "sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA==", - "dev": true, - "dependencies": { - "neo-async": "^2.6.0", - "optimist": "^0.6.1", - "source-map": "^0.6.1" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/handlebars/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -7347,12 +6877,13 @@ } }, "node_modules/har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", "dev": true, "dependencies": { - "ajv": "^6.5.5", + "ajv": "^6.12.3", "har-schema": "^2.0.0" }, "engines": { @@ -7371,16 +6902,13 @@ "node": ">= 0.4.0" } }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "node_modules/has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-flag": { @@ -7393,12 +6921,15 @@ } }, "node_modules/has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "dev": true, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-value": { @@ -7441,22 +6972,57 @@ } }, "node_modules/hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", "dev": true, "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" }, "engines": { "node": ">=4" } }, + "node_modules/hash-base/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/hash-base/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/hash-sum": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", - "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", "dev": true }, "node_modules/hash.js": { @@ -7485,13 +7051,10 @@ "dev": true }, "node_modules/highlight.js": { - "version": "9.17.1", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.17.1.tgz", - "integrity": "sha512-TA2/doAur5Ol8+iM3Ov7qy3jYcr/QiJ2eDTdRF4dfbjG7AaaB99J5G+zSl11ljbl6cIcahgPY6SKb3sC3EJ0fw==", + "version": "10.7.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.1.tgz", + "integrity": "sha512-S6G97tHGqJ/U8DsXcEdnACbirtbx58Bx9CzIVeYli8OuswCfYI/LsXH2EiGcoGio1KAC3x4mmUwulOllJ2ZyRA==", "dev": true, - "dependencies": { - "handlebars": "^4.5.3" - }, "engines": { "node": "*" } @@ -7517,9 +7080,9 @@ } }, "node_modules/hosted-git-info": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", - "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", "dev": true }, "node_modules/hpack.js": { @@ -7553,13 +7116,10 @@ "dev": true }, "node_modules/html-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", - "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", - "dev": true, - "engines": [ - "node >= 0.4.0" - ] + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", + "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==", + "dev": true }, "node_modules/html-minifier": { "version": "3.5.21", @@ -7582,50 +7142,20 @@ "node": ">=4" } }, - "node_modules/html-minifier/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/html-minifier/node_modules/uglify-js": { - "version": "3.4.10", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", - "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", - "dev": true, - "dependencies": { - "commander": "~2.19.0", - "source-map": "~0.6.1" - }, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/html-minifier/node_modules/uglify-js/node_modules/commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", - "dev": true - }, "node_modules/html-tags": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", - "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", + "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/html-webpack-plugin": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", + "deprecated": "3.x is no longer supported", "dev": true, "dependencies": { "html-minifier": "^3.2.3", @@ -7638,6 +7168,9 @@ }, "engines": { "node": ">=6.9" + }, + "peerDependencies": { + "webpack": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0" } }, "node_modules/html-webpack-plugin/node_modules/big.js": { @@ -7649,6 +7182,15 @@ "node": "*" } }, + "node_modules/html-webpack-plugin/node_modules/emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/html-webpack-plugin/node_modules/json5": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", @@ -7691,9 +7233,9 @@ "dev": true }, "node_modules/htmlparser2/node_modules/readable-stream": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", - "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "dependencies": { "inherits": "^2.0.3", @@ -7726,16 +7268,22 @@ "node": ">= 0.6" } }, + "node_modules/http-errors/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, "node_modules/http-parser-js": { - "version": "0.4.10", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", - "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", + "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==", "dev": true }, "node_modules/http-proxy": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", - "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, "dependencies": { "eventemitter3": "^4.0.0", @@ -7743,22 +7291,81 @@ "requires-port": "^1.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=8.0.0" } }, "node_modules/http-proxy-middleware": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", - "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-1.0.6.tgz", + "integrity": "sha512-NyL6ZB6cVni7pl+/IT2W0ni5ME00xR0sN27AQZZrpKn1b+qRh+mLbBxIq9Cq1oGfmTc7BUq4HB77mxwCaxAYNg==", "dev": true, "dependencies": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" + "@types/http-proxy": "^1.17.4", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "lodash": "^4.17.20", + "micromatch": "^4.0.2" }, "engines": { - "node": ">=4.0.0" + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/http-proxy-middleware/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/http-proxy-middleware/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/http-proxy-middleware/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" } }, "node_modules/http-signature": { @@ -7816,10 +7423,24 @@ } }, "node_modules/ieee754": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", - "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==", - "dev": true + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/iferr": { "version": "0.1.5", @@ -7828,10 +7449,13 @@ "dev": true }, "node_modules/ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", - "dev": true + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } }, "node_modules/import-cwd": { "version": "2.1.0", @@ -7886,6 +7510,64 @@ "node": ">=6" } }, + "node_modules/import-local/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-local/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-local/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-local/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -7910,12 +7592,6 @@ "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", "dev": true }, - "node_modules/indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", - "dev": true - }, "node_modules/infer-owner": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", @@ -7933,9 +7609,9 @@ } }, "node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, "node_modules/inquirer": { @@ -8002,18 +7678,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/inquirer/node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/inquirer/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -8032,12 +7696,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/inquirer/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, "node_modules/inquirer/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -8056,44 +7714,10 @@ "node": ">=8" } }, - "node_modules/inquirer/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/inquirer/node_modules/onetime": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/inquirer/node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/inquirer/node_modules/string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "dependencies": { "emoji-regex": "^8.0.0", @@ -8154,24 +7778,6 @@ "node": ">=6" } }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "dependencies": { - "loose-envify": "^1.0.0" - } - }, - "node_modules/invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/ip": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", @@ -8188,9 +7794,9 @@ } }, "node_modules/ipaddr.js": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", - "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true, "engines": { "node": ">= 0.10" @@ -8206,36 +7812,30 @@ } }, "node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" + "kind-of": "^6.0.0" }, "engines": { "node": ">=0.10.0" } }, "node_modules/is-arguments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", + "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", "dev": true, + "dependencies": { + "call-bind": "^1.0.0" + }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-arrayish": { @@ -8244,16 +7844,41 @@ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, - "node_modules/is-binary-path": { + "node_modules/is-bigint": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", + "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==", "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "optional": true, "dependencies": { - "binary-extensions": "^1.0.0" + "binary-extensions": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", + "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-buffer": { @@ -8262,6 +7887,18 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, + "node_modules/is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-ci": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", @@ -8288,62 +7925,56 @@ "rgba-regex": "^1.0.0" } }, - "node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "node_modules/is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", "dev": true, "dependencies": { - "kind-of": "^3.0.2" + "has": "^1.0.3" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "dependencies": { - "is-buffer": "^1.1.5" + "kind-of": "^6.0.0" }, "engines": { "node": ">=0.10.0" } }, "node_modules/is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", "dev": true, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-directory": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", @@ -8353,11 +7984,29 @@ "node": ">=0.10.0" } }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "node_modules/is-docker": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", + "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==", "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, "engines": { "node": ">=0.10.0" } @@ -8381,9 +8030,9 @@ } }, "node_modules/is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "dev": true, "dependencies": { "is-extglob": "^2.1.1" @@ -8392,6 +8041,18 @@ "node": ">=0.10.0" } }, + "node_modules/is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", @@ -8404,6 +8065,18 @@ "node": ">=0.10.0" } }, + "node_modules/is-number-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-number/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", @@ -8417,12 +8090,12 @@ } }, "node_modules/is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/is-path-cwd": { @@ -8480,15 +8153,19 @@ } }, "node_modules/is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", "dev": true, "dependencies": { - "has": "^1.0.1" + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-resolvable": { @@ -8506,6 +8183,18 @@ "node": ">=0.10.0" } }, + "node_modules/is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-svg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", @@ -8519,15 +8208,18 @@ } }, "node_modules/is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", "dev": true, "dependencies": { - "has-symbols": "^1.0.0" + "has-symbols": "^1.0.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-typedarray": { @@ -8546,12 +8238,15 @@ } }, "node_modules/is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/isarray": { @@ -8588,60 +8283,60 @@ "dev": true }, "node_modules/jest-worker": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", - "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", + "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", "dev": true, "dependencies": { "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" + "supports-color": "^7.0.0" }, "engines": { - "node": ">= 6" + "node": ">= 8.3" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" } }, "node_modules/jest-worker/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/js-base64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz", - "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==" - }, - "node_modules/js-levenshtein": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", - "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==" }, "node_modules/js-message": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.5.tgz", - "integrity": "sha1-IwDSSxrwjondCVvBpMnJz8uJLRU=", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.7.tgz", + "integrity": "sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==", "dev": true, "engines": { "node": ">=0.6.0" } }, "node_modules/js-queue": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/js-queue/-/js-queue-2.0.0.tgz", - "integrity": "sha1-NiITz4YPRo8BJfxslqvBdCUx+Ug=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/js-queue/-/js-queue-2.0.2.tgz", + "integrity": "sha512-pbKLsbCfi7kriM3s1J4DDCo7jQkI58zPLHi0heXPzPlj0hjUsm+FesPUbE0DSbIVIK503A36aUBoCN7eMFedkA==", "dev": true, "dependencies": { - "easy-stack": "^1.0.0" + "easy-stack": "^1.0.1" }, "engines": { "node": ">=1.0.0" @@ -8654,9 +8349,9 @@ "dev": true }, "node_modules/js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "dependencies": { "argparse": "^1.0.7", @@ -8690,6 +8385,12 @@ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, "node_modules/json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", @@ -8721,12 +8422,12 @@ "dev": true }, "node_modules/json5": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", - "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", "dev": true, "dependencies": { - "minimist": "^1.2.0" + "minimist": "^1.2.5" }, "bin": { "json5": "lib/cli.js" @@ -8740,16 +8441,10 @@ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "dev": true, - "dependencies": { + "optionalDependencies": { "graceful-fs": "^4.1.6" } }, - "node_modules/jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, "node_modules/jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -8772,9 +8467,9 @@ "dev": true }, "node_modules/kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, "engines": { "node": ">=0.10.0" @@ -8799,18 +8494,6 @@ "launch-editor": "^2.2.1" } }, - "node_modules/lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "dependencies": { - "invert-kv": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -8831,13 +8514,13 @@ "dev": true }, "node_modules/loader-fs-cache": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.2.tgz", - "integrity": "sha512-70IzT/0/L+M20jUlEqZhZyArTU6VKLRTYRDAYN26g4jfzpJqjipLL3/hgYpySqI9PwsVRHHFja0LfEmsx9X2Cw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz", + "integrity": "sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA==", "dev": true, "dependencies": { "find-cache-dir": "^0.1.1", - "mkdirp": "0.5.1" + "mkdirp": "^0.5.1" } }, "node_modules/loader-fs-cache/node_modules/find-cache-dir": { @@ -8901,13 +8584,13 @@ } }, "node_modules/loader-utils": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "dev": true, "dependencies": { "big.js": "^5.2.2", - "emojis-list": "^2.0.0", + "emojis-list": "^3.0.0", "json5": "^1.0.1" }, "engines": { @@ -8927,16 +8610,15 @@ } }, "node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/lodash": { @@ -9010,24 +8692,16 @@ } }, "node_modules/loglevel": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.6.tgz", - "integrity": "sha512-Sgr5lbboAUBo3eXCSPL4/KoVz3ROKquOjcctxmHIt+vol2DrqTQe3SwkKKuYhEiWB5kYa13YyopJ69deJ1irzQ==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", + "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==", "dev": true, "engines": { "node": ">= 0.6.0" - } - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" }, - "bin": { - "loose-envify": "cli.js" + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/loglevel" } }, "node_modules/lower-case": { @@ -9046,27 +8720,18 @@ } }, "node_modules/make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "dependencies": { - "pify": "^3.0.0" + "semver": "^6.0.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "dependencies": { - "p-defer": "^1.0.0" + "node": ">=8" }, - "engines": { - "node": ">=6" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/map-cache": { @@ -9121,29 +8786,6 @@ "node": ">= 0.6" } }, - "node_modules/mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "dependencies": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/mem/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", @@ -9185,12 +8827,12 @@ "dev": true }, "node_modules/merge2": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.3.tgz", - "integrity": "sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, "engines": { - "node": ">= 4.5.0" + "node": ">= 8" } }, "node_modules/methods": { @@ -9239,10 +8881,16 @@ "miller-rabin": "bin/miller-rabin" } }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, "node_modules/mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", "dev": true, "bin": { "mime": "cli.js" @@ -9252,39 +8900,39 @@ } }, "node_modules/mime-db": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", - "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==", + "version": "1.46.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz", + "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==", "dev": true, "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.21", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", - "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", + "version": "2.1.29", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz", + "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==", "dev": true, "dependencies": { - "mime-db": "~1.37.0" + "mime-db": "1.46.0" }, "engines": { "node": ">= 0.6" } }, "node_modules/mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/mini-css-extract-plugin": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.2.tgz", - "integrity": "sha512-a3Y4of27Wz+mqK3qrcd3VhYz6cU0iW5x3Sgvqzbj+XmlrSizmvu8QQMl5oMYJjgHOC4iyt+w7l4umP+dQeW3bw==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz", + "integrity": "sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==", "dev": true, "dependencies": { "loader-utils": "^1.1.0", @@ -9294,21 +8942,23 @@ }, "engines": { "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^4.4.0" } }, - "node_modules/mini-css-extract-plugin/node_modules/normalize-url": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", - "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "dev": true, "dependencies": { - "object-assign": "^4.0.1", - "prepend-http": "^1.0.0", - "query-string": "^4.1.0", - "sort-keys": "^1.0.0" + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" }, "engines": { - "node": ">=4" + "node": ">= 4" } }, "node_modules/minimalistic-assert": { @@ -9336,15 +8986,15 @@ } }, "node_modules/minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, "node_modules/minipass": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", - "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", "dev": true, "dependencies": { "yallist": "^4.0.0" @@ -9378,9 +9028,9 @@ } }, "node_modules/minipass-pipeline": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz", - "integrity": "sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, "dependencies": { "minipass": "^3.0.0" @@ -9429,40 +9079,22 @@ "node": ">=0.10.0" } }, - "node_modules/mixin-deep/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "dev": true, "dependencies": { - "minimist": "0.0.8" + "minimist": "^1.2.5" }, "bin": { "mkdirp": "bin/cmd.js" } }, - "node_modules/mkdirp/node_modules/minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, "node_modules/moment": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", - "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==", + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", "engines": { "node": "*" } @@ -9482,9 +9114,9 @@ } }, "node_modules/ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "node_modules/multicast-dns": { @@ -9524,9 +9156,9 @@ } }, "node_modules/nan": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", - "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==", + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", + "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", "dev": true, "optional": true }, @@ -9568,9 +9200,9 @@ } }, "node_modules/neo-async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", - "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, "node_modules/nice-try": { @@ -9589,32 +9221,32 @@ } }, "node_modules/node-forge": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", - "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==", + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", "dev": true, "engines": { - "node": ">= 4.5.0" + "node": ">= 6.0.0" } }, "node_modules/node-ipc": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/node-ipc/-/node-ipc-9.1.1.tgz", - "integrity": "sha512-FAyICv0sIRJxVp3GW5fzgaf9jwwRQxAKDJlmNFUL5hOy+W4X/I5AypyHoq0DXXbo9o/gt79gj++4cMr4jVWE/w==", + "version": "9.1.4", + "resolved": "https://registry.npmjs.org/node-ipc/-/node-ipc-9.1.4.tgz", + "integrity": "sha512-A+f0mn2KxUt1uRTSd5ktxQUsn2OEhj5evo7NUi/powBzMSZ0vocdzDjlq9QN2v3LH6CJi3e5xAenpZ1QwU5A8g==", "dev": true, "dependencies": { "event-pubsub": "4.3.0", - "js-message": "1.0.5", - "js-queue": "2.0.0" + "js-message": "1.0.7", + "js-queue": "2.0.2" }, "engines": { - "node": ">=4.0.0" + "node": ">=8.0.0" } }, "node_modules/node-libs-browser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz", - "integrity": "sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", "dev": true, "dependencies": { "assert": "^1.1.1", @@ -9627,7 +9259,7 @@ "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", @@ -9639,7 +9271,7 @@ "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/node-libs-browser/node_modules/punycode": { @@ -9649,22 +9281,10 @@ "dev": true }, "node_modules/node-releases": { - "version": "1.1.38", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.38.tgz", - "integrity": "sha512-/5NZAaOyTj134Oy5Cp/J8mso8OD/D9CSuL+6TOXXsTKO8yjc5e4up75SRPCganCjwFKMj2jbp5tR0dViVdox7g==", - "dev": true, - "dependencies": { - "semver": "^6.3.0" - } - }, - "node_modules/node-releases/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } + "version": "1.1.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "dev": true }, "node_modules/normalize-package-data": { "version": "2.5.0", @@ -9678,6 +9298,15 @@ "validate-npm-package-license": "^3.0.1" } }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -9697,12 +9326,18 @@ } }, "node_modules/normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", "dev": true, + "dependencies": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + }, "engines": { - "node": ">=6" + "node": ">=4" } }, "node_modules/normalize.css": { @@ -9711,9 +9346,10 @@ "integrity": "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==" }, "node_modules/noty": { - "version": "3.2.0-beta", - "resolved": "https://registry.npmjs.org/noty/-/noty-3.2.0-beta.tgz", - "integrity": "sha512-a1//Rth1MTQ/GCvGzwBXrZqCwOPyxiIKMdHT1TlcdrDYBYVfb7vzwsU0N4x+j/HeIQTi6/pbP8lRtY9gBz/d3Q==" + "version": "3.2.0-beta-deprecated", + "resolved": "https://registry.npmjs.org/noty/-/noty-3.2.0-beta-deprecated.tgz", + "integrity": "sha512-ntRbHuQ9SnnnVFZm/oq5L1DBCaHQUvsU24AwZH3PGjAWx2YqR/IhOadMk11vmJovYiQo00oqTj6Hp+D6PGtmLA==", + "deprecated": "no longer supported" }, "node_modules/npm-run-path": { "version": "2.0.2", @@ -9742,15 +9378,6 @@ "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", "dev": true }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", @@ -9795,6 +9422,53 @@ "node": ">=0.10.0" } }, + "node_modules/object-copy/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-copy/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", @@ -9817,24 +9491,34 @@ } }, "node_modules/object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", - "dev": true + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/object-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz", - "integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object-keys": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", - "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, "engines": { "node": ">= 0.4" @@ -9853,106 +9537,38 @@ } }, "node_modules/object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "dev": true, "dependencies": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object.getownpropertydescriptors": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", - "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", + "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", "dev": true, "dependencies": { + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" + "es-abstract": "^1.18.0-next.2" }, "engines": { "node": ">= 0.8" - } - }, - "node_modules/object.getownpropertydescriptors/node_modules/es-abstract": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.0.tgz", - "integrity": "sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug==", - "dev": true, - "dependencies": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.getownpropertydescriptors/node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.getownpropertydescriptors/node_modules/has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.getownpropertydescriptors/node_modules/is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.getownpropertydescriptors/node_modules/is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.getownpropertydescriptors/node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object.pick": { @@ -9968,93 +9584,21 @@ } }, "node_modules/object.values": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", - "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz", + "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==", "dev": true, "dependencies": { + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", + "es-abstract": "^1.18.0-next.2", "has": "^1.0.3" }, "engines": { "node": ">= 0.4" - } - }, - "node_modules/object.values/node_modules/es-abstract": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.0.tgz", - "integrity": "sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug==", - "dev": true, - "dependencies": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.values/node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.values/node_modules/has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.values/node_modules/is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.values/node_modules/is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.values/node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/obuf": { @@ -10094,21 +9638,24 @@ } }, "node_modules/onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "dependencies": { - "mimic-fn": "^1.0.0" + "mimic-fn": "^2.1.0" }, "engines": { - "node": ">=4" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/open": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/open/-/open-6.3.0.tgz", - "integrity": "sha512-6AHdrJxPvAXIowO/aIaeHZ8CeMdDf7qCyRNq8NwJpinmCdXhz+NZR7ie1Too94lpciCDsG+qHGO9Mt0svA4OqA==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", "dev": true, "dependencies": { "is-wsl": "^1.1.0" @@ -10117,10 +9664,19 @@ "node": ">=8" } }, + "node_modules/open/node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/opener": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz", - "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", "dev": true, "bin": { "opener": "bin/opener-bin.js" @@ -10138,22 +9694,15 @@ "node": ">=4" } }, - "node_modules/optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "node_modules/opn/node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", "dev": true, - "dependencies": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" + "engines": { + "node": ">=4" } }, - "node_modules/optimist/node_modules/minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", - "dev": true - }, "node_modules/optionator": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", @@ -10188,39 +9737,50 @@ "node": ">=6" } }, - "node_modules/ora/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ora/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/ora/node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "dev": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "restore-cursor": "^2.0.0" }, "engines": { "node": ">=4" } }, - "node_modules/ora/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "node_modules/ora/node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ora/node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "dev": true, "dependencies": { - "ansi-regex": "^4.1.0" + "mimic-fn": "^1.0.0" }, "engines": { - "node": ">=6" + "node": ">=4" + } + }, + "node_modules/ora/node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" } }, "node_modules/original": { @@ -10238,20 +9798,6 @@ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", "dev": true }, - "node_modules/os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "dependencies": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -10261,15 +9807,6 @@ "node": ">=0.10.0" } }, - "node_modules/p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -10279,51 +9816,42 @@ "node": ">=4" } }, - "node_modules/p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/p-limit": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", - "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "dependencies": { "p-try": "^2.0.0" }, "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" + "p-limit": "^2.2.0" }, "engines": { "node": ">=8" } }, + "node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/p-retry": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", @@ -10337,26 +9865,26 @@ } }, "node_modules/p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, "engines": { "node": ">=6" } }, "node_modules/pako": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.8.tgz", - "integrity": "sha512-6i0HVbUfcKaTv+EG8ZTr75az7GFXcLYk9UyLEg7Notv/Ma+z/UG3TCoz6GiNeOrn1E/e63I0X/Hpw18jHOTUnA==" + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" }, "node_modules/parallel-transform": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", - "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", "dev": true, "dependencies": { - "cyclist": "~0.2.2", + "cyclist": "^1.0.1", "inherits": "^2.0.3", "readable-stream": "^2.1.5" } @@ -10392,14 +9920,13 @@ } }, "node_modules/parse-asn1": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.3.tgz", - "integrity": "sha512-VrPoetlz7B/FqjBLD2f5wBVZvsZVLnRUrxVLfRYhGXCODa/NWE4p3Wp+6+aV3ZPL3KM7/OZmxDIwwijD7yuucg==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", "dev": true, "dependencies": { - "asn1.js": "^4.0.0", + "asn1.js": "^5.2.0", "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", "evp_bytestokey": "^1.0.0", "pbkdf2": "^3.0.3", "safe-buffer": "^5.1.1" @@ -10425,14 +9952,20 @@ "dev": true }, "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-5.1.1.tgz", - "integrity": "sha512-CF+TKjXqoqyDwHqBhFQ+3l5t83xYi6fVT1tQNg+Ye0JRLnTxWvIroCjEp1A0k4lneHNBGnICUf0cfYVYGEazqw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", "dev": true, "dependencies": { - "parse5": "^5.1.1" + "parse5": "^6.0.1" } }, + "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -10452,9 +9985,9 @@ } }, "node_modules/path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", "dev": true }, "node_modules/path-dirname": { @@ -10464,12 +9997,12 @@ "dev": true }, "node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/path-is-absolute": { @@ -10520,10 +10053,19 @@ "node": ">=4" } }, + "node_modules/path-type/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/pbkdf2": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", - "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", + "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", "dev": true, "dependencies": { "create-hash": "^1.1.2", @@ -10542,13 +10084,25 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, - "node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "node_modules/picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" } }, "node_modules/pinkie": { @@ -10573,35 +10127,47 @@ } }, "node_modules/pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "dependencies": { - "find-up": "^3.0.0" + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pnp-webpack-plugin": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", + "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==", + "dev": true, + "dependencies": { + "ts-pnp": "^1.1.6" }, "engines": { "node": ">=6" } }, "node_modules/portfinder": { - "version": "1.0.25", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", - "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", "dev": true, "dependencies": { "async": "^2.6.2", "debug": "^3.1.1", - "mkdirp": "^0.5.1" + "mkdirp": "^0.5.5" }, "engines": { "node": ">= 0.12.0" } }, "node_modules/portfinder/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { "ms": "^2.1.1" @@ -10617,9 +10183,9 @@ } }, "node_modules/postcss": { - "version": "7.0.25", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.25.tgz", - "integrity": "sha512-NXXVvWq9icrm/TgQC0O6YVFi4StfJz46M1iNd/h6B26Nvh/HKI+q4YZtFN/EjcInZliEscO/WL10BXnc1E5nwg==", + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", "dev": true, "dependencies": { "chalk": "^2.4.2", @@ -10628,18 +10194,21 @@ }, "engines": { "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/postcss-calc": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.1.tgz", - "integrity": "sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", + "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", "dev": true, "dependencies": { - "css-unit-converter": "^1.1.1", - "postcss": "^7.0.5", - "postcss-selector-parser": "^5.0.0-rc.4", - "postcss-value-parser": "^3.3.1" + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" } }, "node_modules/postcss-colormin": { @@ -10658,6 +10227,12 @@ "node": ">=6.9.0" } }, + "node_modules/postcss-colormin/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, "node_modules/postcss-convert-values": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", @@ -10671,6 +10246,12 @@ "node": ">=6.9.0" } }, + "node_modules/postcss-convert-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, "node_modules/postcss-discard-comments": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", @@ -10720,9 +10301,9 @@ } }, "node_modules/postcss-load-config": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz", - "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", + "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", "dev": true, "dependencies": { "cosmiconfig": "^5.0.0", @@ -10730,6 +10311,10 @@ }, "engines": { "node": ">= 4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, "node_modules/postcss-loader": { @@ -10747,6 +10332,20 @@ "node": ">= 6" } }, + "node_modules/postcss-loader/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, "node_modules/postcss-merge-longhand": { "version": "4.0.11", "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", @@ -10762,6 +10361,12 @@ "node": ">=6.9.0" } }, + "node_modules/postcss-merge-longhand/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, "node_modules/postcss-merge-rules": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", @@ -10780,17 +10385,17 @@ } }, "node_modules/postcss-merge-rules/node_modules/postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", "dev": true, "dependencies": { - "dot-prop": "^4.1.1", + "dot-prop": "^5.2.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/postcss-minify-font-values": { @@ -10806,6 +10411,12 @@ "node": ">=6.9.0" } }, + "node_modules/postcss-minify-font-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, "node_modules/postcss-minify-gradients": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", @@ -10821,6 +10432,12 @@ "node": ">=6.9.0" } }, + "node_modules/postcss-minify-gradients/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, "node_modules/postcss-minify-params": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", @@ -10838,6 +10455,12 @@ "node": ">=6.9.0" } }, + "node_modules/postcss-minify-params/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, "node_modules/postcss-minify-selectors": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", @@ -10854,17 +10477,17 @@ } }, "node_modules/postcss-minify-selectors/node_modules/postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", "dev": true, "dependencies": { - "dot-prop": "^4.1.1", + "dot-prop": "^5.2.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/postcss-modules-extract-imports": { @@ -10880,56 +10503,24 @@ } }, "node_modules/postcss-modules-local-by-default": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz", - "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz", + "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==", "dev": true, "dependencies": { "icss-utils": "^4.1.1", - "postcss": "^7.0.16", + "postcss": "^7.0.32", "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.0" + "postcss-value-parser": "^4.1.0" }, "engines": { "node": ">= 6" } }, - "node_modules/postcss-modules-local-by-default/node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", - "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-modules-local-by-default/node_modules/postcss-value-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz", - "integrity": "sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ==", - "dev": true - }, "node_modules/postcss-modules-scope": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.1.1.tgz", - "integrity": "sha512-OXRUPecnHCg8b9xWvldG/jUpRIGPNRka0r4D4j0ESUU2/5IOnpsjfPPmDprM3Ih8CgZ8FXjWqaniK5v4rWt3oQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", + "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", "dev": true, "dependencies": { "postcss": "^7.0.6", @@ -10939,32 +10530,6 @@ "node": ">= 6" } }, - "node_modules/postcss-modules-scope/node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", - "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/postcss-modules-values": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", @@ -11001,6 +10566,12 @@ "node": ">=6.9.0" } }, + "node_modules/postcss-normalize-display-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, "node_modules/postcss-normalize-positions": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", @@ -11016,6 +10587,12 @@ "node": ">=6.9.0" } }, + "node_modules/postcss-normalize-positions/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, "node_modules/postcss-normalize-repeat-style": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", @@ -11031,6 +10608,12 @@ "node": ">=6.9.0" } }, + "node_modules/postcss-normalize-repeat-style/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, "node_modules/postcss-normalize-string": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", @@ -11045,6 +10628,12 @@ "node": ">=6.9.0" } }, + "node_modules/postcss-normalize-string/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, "node_modules/postcss-normalize-timing-functions": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", @@ -11059,6 +10648,12 @@ "node": ">=6.9.0" } }, + "node_modules/postcss-normalize-timing-functions/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, "node_modules/postcss-normalize-unicode": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", @@ -11073,6 +10668,12 @@ "node": ">=6.9.0" } }, + "node_modules/postcss-normalize-unicode/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, "node_modules/postcss-normalize-url": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", @@ -11088,6 +10689,21 @@ "node": ">=6.9.0" } }, + "node_modules/postcss-normalize-url/node_modules/normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-normalize-url/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, "node_modules/postcss-normalize-whitespace": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", @@ -11101,6 +10717,12 @@ "node": ">=6.9.0" } }, + "node_modules/postcss-normalize-whitespace/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, "node_modules/postcss-ordered-values": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", @@ -11115,6 +10737,12 @@ "node": ">=6.9.0" } }, + "node_modules/postcss-ordered-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, "node_modules/postcss-reduce-initial": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", @@ -11145,15 +10773,22 @@ "node": ">=6.9.0" } }, + "node_modules/postcss-reduce-transforms/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, "node_modules/postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz", + "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==", "dev": true, "dependencies": { - "cssesc": "^2.0.0", + "cssesc": "^3.0.0", "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "uniq": "^1.0.1", + "util-deprecate": "^1.0.2" }, "engines": { "node": ">=4" @@ -11174,6 +10809,12 @@ "node": ">=6.9.0" } }, + "node_modules/postcss-svgo/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, "node_modules/postcss-unique-selectors": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", @@ -11189,37 +10830,11 @@ } }, "node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true }, - "node_modules/postcss/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss/node_modules/chalk/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/postcss/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -11284,22 +10899,13 @@ } }, "node_modules/pretty-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", - "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", + "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", "dev": true, "dependencies": { - "renderkid": "^2.0.1", - "utila": "~0.4" - } - }, - "node_modules/private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true, - "engines": { - "node": ">= 0.6" + "lodash": "^4.17.20", + "renderkid": "^2.0.4" } }, "node_modules/process": { @@ -11312,9 +10918,9 @@ } }, "node_modules/process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "node_modules/progress": { @@ -11333,13 +10939,13 @@ "dev": true }, "node_modules/proxy-addr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", - "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", "dev": true, "dependencies": { "forwarded": "~0.1.2", - "ipaddr.js": "1.9.0" + "ipaddr.js": "1.9.1" }, "engines": { "node": ">= 0.10" @@ -11358,9 +10964,9 @@ "dev": true }, "node_modules/psl": { - "version": "1.1.31", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", "dev": true }, "node_modules/public-encrypt": { @@ -11377,6 +10983,12 @@ "safe-buffer": "^5.1.2" } }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -11430,7 +11042,10 @@ "node_modules/qrcode.vue": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/qrcode.vue/-/qrcode.vue-1.7.0.tgz", - "integrity": "sha512-R7t6Y3fDDtcU7L4rtqwGUDP9xD64gJhIwpfjhRCTKmBoYF6SS49PIJHRJ048cse6OI7iwTwgyy2C46N9Ygoc6g==" + "integrity": "sha512-R7t6Y3fDDtcU7L4rtqwGUDP9xD64gJhIwpfjhRCTKmBoYF6SS49PIJHRJ048cse6OI7iwTwgyy2C46N9Ygoc6g==", + "peerDependencies": { + "vue": "^2.0.0" + } }, "node_modules/qs": { "version": "6.5.2", @@ -11473,15 +11088,15 @@ } }, "node_modules/querystringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", - "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", "dev": true }, "node_modules/randombytes": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", - "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, "dependencies": { "safe-buffer": "^5.1.0" @@ -11537,24 +11152,36 @@ } }, "node_modules/read-pkg/node_modules/parse-json": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", - "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1", + "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, "engines": { "node": ">=8" } }, "node_modules/readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "dependencies": { "core-util-is": "~1.0.0", @@ -11567,29 +11194,28 @@ } }, "node_modules/readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", "dev": true, + "optional": true, "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" + "picomatch": "^2.2.1" }, "engines": { - "node": ">=0.10" + "node": ">=8.10.0" } }, "node_modules/regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true }, "node_modules/regenerate-unicode-properties": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", - "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", "dev": true, "dependencies": { "regenerate": "^1.4.0" @@ -11599,18 +11225,18 @@ } }, "node_modules/regenerator-runtime": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", - "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==", + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", "dev": true }, "node_modules/regenerator-transform": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz", - "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==", + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", "dev": true, "dependencies": { - "private": "^0.1.6" + "@babel/runtime": "^7.8.4" } }, "node_modules/regex-not": { @@ -11627,91 +11253,19 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", - "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", + "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", "dev": true, "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" }, "engines": { "node": ">= 0.4" - } - }, - "node_modules/regexp.prototype.flags/node_modules/es-abstract": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.0.tgz", - "integrity": "sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug==", - "dev": true, - "dependencies": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/regexp.prototype.flags/node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/regexp.prototype.flags/node_modules/has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/regexp.prototype.flags/node_modules/is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/regexp.prototype.flags/node_modules/is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/regexp.prototype.flags/node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/regexpp": { @@ -11724,32 +11278,32 @@ } }, "node_modules/regexpu-core": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", - "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", "dev": true, "dependencies": { "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.1.0", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.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.1.0" + "unicode-match-property-value-ecmascript": "^1.2.0" }, "engines": { "node": ">=4" } }, "node_modules/regjsgen": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", - "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", "dev": true }, "node_modules/regjsparser": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.2.tgz", - "integrity": "sha512-E9ghzUtoLwDekPT0DYCp+c4h+bvuUpe6rRHCTYn6eGoqj1LgKXxT6I0Il4WbjhQkOghzi/V+y03bPKvbllL93Q==", + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.7.tgz", + "integrity": "sha512-ib77G0uxsA2ovgiYbCVGx4Pv3PSttAx2vIwidqQzbL2U5S4Q+j00HdSAneSBuyVcMvEnTXMjiGgB+DlXozVhpQ==", "dev": true, "dependencies": { "jsesc": "~0.5.0" @@ -11783,47 +11337,37 @@ "dev": true }, "node_modules/renderkid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz", - "integrity": "sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.5.tgz", + "integrity": "sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ==", "dev": true, "dependencies": { - "css-select": "^1.1.0", + "css-select": "^2.0.2", "dom-converter": "^0.2", - "htmlparser2": "^3.3.0", - "strip-ansi": "^3.0.0", - "utila": "^0.4.0" + "htmlparser2": "^3.10.1", + "lodash": "^4.17.20", + "strip-ansi": "^3.0.0" } }, - "node_modules/renderkid/node_modules/css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", - "dev": true, - "dependencies": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" - } - }, - "node_modules/renderkid/node_modules/css-what": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "node_modules/renderkid/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true, "engines": { - "node": "*" + "node": ">=0.10.0" } }, - "node_modules/renderkid/node_modules/domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "node_modules/renderkid/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/repeat-element": { @@ -11898,12 +11442,16 @@ "dev": true }, "node_modules/resolve": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", - "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "dependencies": { + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/resolve-cwd": { @@ -11931,19 +11479,20 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", "dev": true }, "node_modules/restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, "dependencies": { - "onetime": "^2.0.0", + "onetime": "^5.1.0", "signal-exit": "^3.0.2" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/ret": { @@ -11977,9 +11526,9 @@ "dev": true }, "node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "dependencies": { "glob": "^7.1.3" @@ -12036,7 +11585,7 @@ }, "node_modules/safe-regex": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "dependencies": { @@ -12056,25 +11605,23 @@ "dev": true }, "node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", "dev": true, "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" }, "engines": { - "node": ">= 4" + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/schema-utils/node_modules/ajv-keywords": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.3.0.tgz", - "integrity": "sha512-CMzN9S62ZOO4sA/mJZIO4S++ZM7KFWzH3PPWkveLhy4OZ9i1/VatgwWMD46w/XbGCBy7Ye0gCk+Za6mmyfKK7g==", - "dev": true - }, "node_modules/select": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", @@ -12087,21 +11634,21 @@ "dev": true }, "node_modules/selfsigned": { - "version": "1.10.7", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", - "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", + "version": "1.10.8", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz", + "integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==", "dev": true, "dependencies": { - "node-forge": "0.9.0" + "node-forge": "^0.10.0" } }, "node_modules/semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, "bin": { - "semver": "bin/semver" + "semver": "bin/semver.js" } }, "node_modules/send": { @@ -12155,12 +11702,21 @@ "node": ">=4" } }, - "node_modules/serialize-javascript": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.6.1.tgz", - "integrity": "sha512-A5MOagrPFga4YaKQSWHryl7AXvbQkEqpw4NNYMTNYUNV51bA8ABHgYFpqKx+YFFrw59xMV1qGH1R4AgoNIVgCw==", + "node_modules/send/node_modules/ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true }, + "node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, "node_modules/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", @@ -12203,6 +11759,12 @@ "node": ">= 0.6" } }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, "node_modules/serve-index/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -12237,9 +11799,9 @@ "dev": true }, "node_modules/set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "dev": true, "dependencies": { "extend-shallow": "^2.0.1", @@ -12263,6 +11825,15 @@ "node": ">=0.10.0" } }, + "node_modules/set-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -12277,7 +11848,7 @@ }, "node_modules/sha.js": { "version": "2.4.11", - "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dev": true, "dependencies": { @@ -12310,21 +11881,15 @@ } }, "node_modules/shell-quote": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", - "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", - "dev": true, - "dependencies": { - "array-filter": "~0.0.0", - "array-map": "~0.0.0", - "array-reduce": "~0.0.0", - "jsonify": "~0.0.0" - } + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", + "dev": true }, "node_modules/signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", "dev": true }, "node_modules/simple-swizzle": { @@ -12410,44 +11975,6 @@ "node": ">=0.10.0" } }, - "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/snapdragon-util": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", @@ -12505,6 +12032,86 @@ "node": ">=0.10.0" } }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/snapdragon/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -12512,50 +12119,39 @@ "dev": true }, "node_modules/sockjs": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", - "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", + "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", "dev": true, "dependencies": { - "faye-websocket": "^0.10.0", - "uuid": "^3.0.1" + "faye-websocket": "^0.11.3", + "uuid": "^3.4.0", + "websocket-driver": "^0.7.4" } }, "node_modules/sockjs-client": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", - "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.0.tgz", + "integrity": "sha512-8Dt3BDi4FYNrCFGTL/HtwVzkARrENdwOUf1ZoW/9p3M8lZdFT35jVdrHza+qgxuG9H3/shR4cuX/X9umUrjP8Q==", "dev": true, "dependencies": { - "debug": "^3.2.5", + "debug": "^3.2.6", "eventsource": "^1.0.7", - "faye-websocket": "~0.11.1", - "inherits": "^2.0.3", - "json3": "^3.3.2", - "url-parse": "^1.4.3" + "faye-websocket": "^0.11.3", + "inherits": "^2.0.4", + "json3": "^3.3.3", + "url-parse": "^1.4.7" } }, "node_modules/sockjs-client/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { "ms": "^2.1.1" } }, - "node_modules/sockjs-client/node_modules/faye-websocket": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", - "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", - "dev": true, - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/sort-keys": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", @@ -12584,12 +12180,12 @@ } }, "node_modules/source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", "dev": true, "dependencies": { - "atob": "^2.1.1", + "atob": "^2.1.2", "decode-uri-component": "^0.2.0", "resolve-url": "^0.2.1", "source-map-url": "^0.4.0", @@ -12597,9 +12193,9 @@ } }, "node_modules/source-map-support": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.10.tgz", - "integrity": "sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ==", + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "dev": true, "dependencies": { "buffer-from": "^1.0.0", @@ -12616,15 +12212,15 @@ } }, "node_modules/source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", "dev": true }, "node_modules/spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "dev": true, "dependencies": { "spdx-expression-parse": "^3.0.0", @@ -12632,15 +12228,15 @@ } }, "node_modules/spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", "dev": true }, "node_modules/spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, "dependencies": { "spdx-exceptions": "^2.1.0", @@ -12648,15 +12244,15 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", + "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", "dev": true }, "node_modules/spdy": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.1.tgz", - "integrity": "sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", "dev": true, "dependencies": { "debug": "^4.1.0", @@ -12684,9 +12280,9 @@ } }, "node_modules/spdy-transport/node_modules/readable-stream": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", - "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "dependencies": { "inherits": "^2.0.3", @@ -12711,14 +12307,14 @@ }, "node_modules/sprintf-js": { "version": "1.0.3", - "resolved": "http://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, "node_modules/sshpk": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.0.tgz", - "integrity": "sha512-Zhev35/y7hRMcID/upReIvRse+I9SVhyVre/KTJSJQWMz3C3+G+HpO7m1wK/yckEtujKZ7dS4hkVxAnmHaIGVQ==", + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", "dev": true, "dependencies": { "asn1": "~0.2.3", @@ -12736,12 +12332,16 @@ } }, "node_modules/ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", + "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", "dev": true, "dependencies": { - "figgy-pudding": "^3.5.1" + "figgy-pudding": "^3.5.1", + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" } }, "node_modules/stable": { @@ -12751,9 +12351,9 @@ "dev": true }, "node_modules/stackframe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.1.0.tgz", - "integrity": "sha512-Vx6W1Yvy+AM1R/ckVwcHQHV147pTPBKWCRLrXMuPrFVfvBUc3os7PR1QLIWCMhPpRg5eX9ojzbQIMLGBwyLjqg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.0.tgz", + "integrity": "sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==", "dev": true }, "node_modules/static-extend": { @@ -12781,6 +12381,77 @@ "node": ">=0.10.0" } }, + "node_modules/static-extend/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", @@ -12792,7 +12463,7 @@ }, "node_modules/stream-browserify": { "version": "2.0.2", - "resolved": "http://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", "dev": true, "dependencies": { @@ -12824,9 +12495,9 @@ } }, "node_modules/stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", "dev": true }, "node_modules/strict-uri-encode": { @@ -12840,7 +12511,7 @@ }, "node_modules/string_decoder": { "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "dependencies": { @@ -12881,47 +12552,47 @@ "node": ">=4" } }, - "node_modules/string.prototype.trimleft": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", - "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "node_modules/string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", "dev": true, "dependencies": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" }, - "engines": { - "node": ">= 0.4" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/string.prototype.trimright": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "node_modules/string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", "dev": true, "dependencies": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" }, - "engines": { - "node": ">= 0.4" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "dependencies": { - "ansi-regex": "^2.0.0" + "ansi-regex": "^4.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, "node_modules/strip-eof": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true, "engines": { @@ -12947,12 +12618,15 @@ } }, "node_modules/strip-json-comments": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", - "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/stylehacks": { @@ -12970,17 +12644,17 @@ } }, "node_modules/stylehacks/node_modules/postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", "dev": true, "dependencies": { - "dot-prop": "^4.1.1", + "dot-prop": "^5.2.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/supports-color": { @@ -13043,26 +12717,11 @@ "node": ">=6.0.0" } }, - "node_modules/table/node_modules/ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "node_modules/table/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true, - "engines": { - "node": ">=6" - } + "node_modules/table/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true }, "node_modules/table/node_modules/string-width": { "version": "3.1.0", @@ -13078,104 +12737,98 @@ "node": ">=6" } }, - "node_modules/table/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/tapable": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.1.tgz", - "integrity": "sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", "dev": true, "engines": { "node": ">=6" } }, "node_modules/terser": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-3.14.1.tgz", - "integrity": "sha512-NSo3E99QDbYSMeJaEk9YW2lTg3qS9V0aKGlb+PlOrei1X02r1wSBHCNX/O+yeTRFSWPKPIGj6MqvvdqV4rnVGw==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", "dev": true, "dependencies": { - "commander": "~2.17.1", + "commander": "^2.20.0", "source-map": "~0.6.1", - "source-map-support": "~0.5.6" + "source-map-support": "~0.5.12" }, "bin": { - "terser": "bin/uglifyjs" + "terser": "bin/terser" }, "engines": { - "node": ">=4.0.0" + "node": ">=6.0.0" } }, "node_modules/terser-webpack-plugin": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.2.1.tgz", - "integrity": "sha512-GGSt+gbT0oKcMDmPx4SRSfJPE1XaN3kQRWG4ghxKQw9cn5G9x6aCKSsgYdvyM0na9NJ4Drv0RG6jbBByZ5CMjw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz", + "integrity": "sha512-/fKw3R+hWyHfYx7Bv6oPqmk4HGQcrWLtV3X6ggvPuwPNHSnzvVV51z6OaaCOus4YLjutYGOz3pEpbhe6Up2s1w==", "dev": true, "dependencies": { - "cacache": "^11.0.2", - "find-cache-dir": "^2.0.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^1.4.0", + "cacache": "^13.0.1", + "find-cache-dir": "^3.3.1", + "jest-worker": "^25.4.0", + "p-limit": "^2.3.0", + "schema-utils": "^2.6.6", + "serialize-javascript": "^4.0.0", "source-map": "^0.6.1", - "terser": "^3.8.1", - "webpack-sources": "^1.1.0", - "worker-farm": "^1.5.2" + "terser": "^4.6.12", + "webpack-sources": "^1.4.3" }, "engines": { - "node": ">= 6.9.0" + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, "node_modules/terser-webpack-plugin/node_modules/cacache": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz", - "integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", + "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", "dev": true, "dependencies": { - "bluebird": "^3.5.3", - "chownr": "^1.1.1", + "chownr": "^1.1.2", "figgy-pudding": "^3.5.1", - "glob": "^7.1.3", - "graceful-fs": "^4.1.15", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "infer-owner": "^1.0.4", "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", + "minipass": "^3.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", "mkdirp": "^0.5.1", "move-concurrently": "^1.0.1", + "p-map": "^3.0.0", "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "node_modules/terser-webpack-plugin/node_modules/mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "dev": true, - "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" + "rimraf": "^2.7.1", + "ssri": "^7.0.0", + "unique-filename": "^1.1.1" }, "engines": { - "node": ">=4.0.0" + "node": ">= 8" + } + }, + "node_modules/terser-webpack-plugin/node_modules/p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/terser-webpack-plugin/node_modules/source-map": { @@ -13187,6 +12840,12 @@ "node": ">=0.10.0" } }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, "node_modules/terser/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -13203,9 +12862,9 @@ "dev": true }, "node_modules/thenify": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz", - "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", "dev": true, "dependencies": { "any-promise": "^1.0.0" @@ -13235,11 +12894,14 @@ }, "engines": { "node": ">= 6.9.0 <7.0.0 || >= 8.9.0" + }, + "peerDependencies": { + "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0" } }, "node_modules/through": { "version": "2.3.8", - "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, @@ -13260,9 +12922,9 @@ "dev": true }, "node_modules/timers-browserify": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", - "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", "dev": true, "dependencies": { "setimmediate": "^1.0.4" @@ -13278,9 +12940,9 @@ "dev": true }, "node_modules/tiny-emitter": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.0.2.tgz", - "integrity": "sha512-2NM0auVBGft5tee/OxP4PI3d8WItkDM+fPnaRAVo6xTDI2knbz9eC5ArWGqtGlYqiH3RU5yMpdyTTO7MguC4ow==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" }, "node_modules/tmp": { "version": "0.0.33", @@ -13395,15 +13057,29 @@ "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", "dev": true }, + "node_modules/ts-pnp": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", + "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, "node_modules/tty-browserify": { "version": "0.0.0", - "resolved": "http://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", "dev": true }, @@ -13438,12 +13114,15 @@ } }, "node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", "dev": true, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/type-is": { @@ -13459,27 +13138,6 @@ "node": ">= 0.6" } }, - "node_modules/type-is/node_modules/mime-db": { - "version": "1.42.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz", - "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/type-is/node_modules/mime-types": { - "version": "2.1.25", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz", - "integrity": "sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==", - "dev": true, - "dependencies": { - "mime-db": "1.42.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -13487,13 +13145,12 @@ "dev": true }, "node_modules/uglify-js": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.7.3.tgz", - "integrity": "sha512-7tINm46/3puUA4hCkKYo4Xdts+JDaVC9ZPRcG8Xw9R4nhO/gZgUM3TENq8IF4Vatk8qCig4MzP/c8G4u2BkVQg==", + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", + "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", "dev": true, - "optional": true, "dependencies": { - "commander": "~2.20.3", + "commander": "~2.19.0", "source-map": "~0.6.1" }, "bin": { @@ -13504,22 +13161,32 @@ } }, "node_modules/uglify-js/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "optional": true + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true }, "node_modules/uglify-js/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "optional": true, "engines": { "node": ">=0.10.0" } }, + "node_modules/unbox-primitive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.0.tgz", + "integrity": "sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.0", + "has-symbols": "^1.0.0", + "which-boxed-primitive": "^1.0.1" + } + }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", @@ -13543,61 +13210,43 @@ } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", - "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/unicode-property-aliases-ecmascript": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", - "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "dev": true, "dependencies": { "arr-union": "^3.1.0", "get-value": "^2.0.6", "is-extendable": "^0.1.1", - "set-value": "^0.4.3" + "set-value": "^2.0.1" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/union-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/union-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/union-value/node_modules/set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - }, "engines": { "node": ">=0.10.0" } @@ -13624,9 +13273,9 @@ } }, "node_modules/unique-slug": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz", - "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", "dev": true, "dependencies": { "imurmurhash": "^0.1.4" @@ -13705,12 +13354,13 @@ } }, "node_modules/upath": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", - "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", "dev": true, "engines": { - "node": ">=4" + "node": ">=4", + "yarn": "*" } }, "node_modules/upper-case": { @@ -13720,9 +13370,9 @@ "dev": true }, "node_modules/uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "dependencies": { "punycode": "^2.1.0" @@ -13732,6 +13382,7 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", "dev": true }, "node_modules/url": { @@ -13756,37 +13407,21 @@ }, "engines": { "node": ">= 8.9.0" - } - }, - "node_modules/url-loader/node_modules/ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "node_modules/url-loader/node_modules/schema-utils": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.1.tgz", - "integrity": "sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg==", - "dev": true, - "dependencies": { - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1" }, - "engines": { - "node": ">= 8.9.0" + "peerDependencies": { + "file-loader": "*", + "webpack": "^4.0.0" + }, + "peerDependenciesMeta": { + "file-loader": { + "optional": true + } } }, "node_modules/url-parse": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", - "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz", + "integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==", "dev": true, "dependencies": { "querystringify": "^2.1.1", @@ -13810,7 +13445,7 @@ }, "node_modules/utif": { "version": "3.1.0", - "resolved": "http://mirrors.cloud.tencent.com/npm/utif/-/utif-3.1.0.tgz", + "resolved": "https://registry.npmjs.org/utif/-/utif-3.1.0.tgz", "integrity": "sha512-WEo4D/xOvFW53K5f5QTaTbbiORcm2/pCL9P6qmJnup+17eYfKaEhDeX9PeQkuyEoIxlbGklDuGl8xwuXYMrrXQ==", "dependencies": { "pako": "^1.0.5" @@ -13841,6 +13476,12 @@ "object.getownpropertydescriptors": "^2.0.3" } }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, "node_modules/utila": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", @@ -13857,18 +13498,18 @@ } }, "node_modules/uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "dev": true, "bin": { "uuid": "bin/uuid" } }, "node_modules/v8-compile-cache": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", - "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, "node_modules/validate-npm-package-license": { @@ -13891,10 +13532,14 @@ } }, "node_modules/vendors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.3.tgz", - "integrity": "sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw==", - "dev": true + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } }, "node_modules/verror": { "version": "1.10.0", @@ -13911,43 +13556,37 @@ } }, "node_modules/vm-browserify": { - "version": "0.0.4", - "resolved": "http://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "dev": true, - "dependencies": { - "indexof": "0.0.1" - } + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true }, "node_modules/vue": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.10.tgz", - "integrity": "sha512-ImThpeNU9HbdZL3utgMCq0oiMzAkt1mcgy3/E6zWC/G6AaQoeuFdsl9nDhTDU3X1R6FK7nsIUuRACVcjI+A2GQ==" + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.12.tgz", + "integrity": "sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg==" }, "node_modules/vue-eslint-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.0.0.tgz", - "integrity": "sha512-yR0dLxsTT7JfD2YQo9BhnQ6bUTLsZouuzt9SKRP7XNaZJV459gvlsJo4vT2nhZ/2dH9j3c53bIx9dnqU2prM9g==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.6.0.tgz", + "integrity": "sha512-QXxqH8ZevBrtiZMZK0LpwaMfevQi9UL7lY6Kcp+ogWHC88AuwUPwwCIzkOUc1LR4XsYAt/F9yHXAB/QoD17QXA==", "dev": true, "dependencies": { "debug": "^4.1.1", "eslint-scope": "^5.0.0", "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", + "espree": "^6.2.1", + "esquery": "^1.4.0", "lodash": "^4.17.15" }, "engines": { "node": ">=8.10" - } - }, - "node_modules/vue-eslint-parser/node_modules/eslint-visitor-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", - "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", - "dev": true, - "engines": { - "node": ">=4" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5.0.0" } }, "node_modules/vue-hot-reload-api": { @@ -13957,9 +13596,9 @@ "dev": true }, "node_modules/vue-i18n": { - "version": "8.15.3", - "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-8.15.3.tgz", - "integrity": "sha512-PVNgo6yhOmacZVFjSapZ314oewwLyXHjJwAqjnaPN1GJAJd/dvsrShGzSiJuCX4Hc36G4epJvNXUwO8y7wEKew==" + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-8.24.1.tgz", + "integrity": "sha512-iqM+npjvI9SGOAYkw1Od/y4O74gpvn5WOHeb3K125TmDJssvR62tDMMLIasPmKNbePZ1BMZ6d5jOBsrB/cK8Lw==" }, "node_modules/vue-lazyload": { "version": "1.3.3", @@ -13967,9 +13606,9 @@ "integrity": "sha512-uHnq0FTEeNmqnbBC2aRKlmtd9LofMZ6Q3mWvgfLa+i9vhxU8fDK+nGs9c1iVT85axSua/AUnMttIq3xPaU9G3A==" }, "node_modules/vue-loader": { - "version": "15.8.3", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.8.3.tgz", - "integrity": "sha512-yFksTFbhp+lxlm92DrKdpVIWMpranXnTEuGSc0oW+Gk43M9LWaAmBTnfj5+FCdve715mTHvo78IdaXf5TbiTJg==", + "version": "15.9.6", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.9.6.tgz", + "integrity": "sha512-j0cqiLzwbeImIC6nVIby2o/ABAWhlppyL/m5oJ67R5MloP0hj/DtFgb0Zmq3J9CG7AJ+AXIvHVnJAPBvrLyuDg==", "dev": true, "dependencies": { "@vue/component-compiler-utils": "^3.1.0", @@ -13977,27 +13616,155 @@ "loader-utils": "^1.1.0", "vue-hot-reload-api": "^2.3.0", "vue-style-loader": "^4.1.0" + }, + "peerDependencies": { + "css-loader": "*", + "webpack": "^3.0.0 || ^4.1.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "cache-loader": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } } }, + "node_modules/vue-loader-v16": { + "name": "vue-loader", + "version": "16.1.2", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.1.2.tgz", + "integrity": "sha512-8QTxh+Fd+HB6fiL52iEVLKqE9N1JSlMXLR92Ijm6g8PZrwIxckgpqjPDWRP5TWxdiPaHR+alUWsnu1ShQOwt+Q==", + "dev": true, + "optional": true, + "dependencies": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.0.0" + } + }, + "node_modules/vue-loader-v16/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "optional": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/vue-loader-v16/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "optional": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/vue-loader-v16/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "optional": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/vue-loader-v16/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "optional": true + }, + "node_modules/vue-loader-v16/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/vue-loader-v16/node_modules/loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "optional": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/vue-loader-v16/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "optional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/vue-loader/node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + }, "node_modules/vue-router": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.1.3.tgz", - "integrity": "sha512-8iSa4mGNXBjyuSZFCCO4fiKfvzqk+mhL0lnKuGcQtO1eoj8nq3CmbEG8FwK5QqoqwDgsjsf1GDuisDX4cdb/aQ==" + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.5.1.tgz", + "integrity": "sha512-RRQNLT8Mzr8z7eL4p7BtKvRaTSGdCbTy2+Mm5HTJvLGYSSeG9gDzNasJPP/yOYKLy+/cLG/ftrqq5fvkFwBJEw==" }, "node_modules/vue-style-loader": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.2.tgz", - "integrity": "sha512-0ip8ge6Gzz/Bk0iHovU9XAUQaFt/G2B61bnWa2tCcqqdgfHs1lF9xXorFbE55Gmy92okFT+8bfmySuUOu13vxQ==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz", + "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", "dev": true, "dependencies": { "hash-sum": "^1.0.2", "loader-utils": "^1.0.2" } }, + "node_modules/vue-style-loader/node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + }, "node_modules/vue-template-compiler": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.10.tgz", - "integrity": "sha512-jVZkw4/I/HT5ZMvRnhv78okGusqe0+qH2A0Em0Cp8aq78+NK9TII263CDVz2QXZsIT+yyV/gZc/j/vlwa+Epyg==", + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.12.tgz", + "integrity": "sha512-OzzZ52zS41YUbkCBfdXShQTe69j1gQDZ9HIX8miuC9C3rBCk9wIRjLiZZLrmX9V+Ftq/YEyv1JaVr5Y/hNtByg==", "dev": true, "dependencies": { "de-indent": "^1.0.2", @@ -14011,24 +13778,149 @@ "dev": true }, "node_modules/vuex": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.1.2.tgz", - "integrity": "sha512-ha3jNLJqNhhrAemDXcmMJMKf1Zu4sybMPr9KxJIuOpVcsDQlTBYLLladav2U+g1AvdYDG5Gs0xBTb0M5pXXYFQ==" + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz", + "integrity": "sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==", + "peerDependencies": { + "vue": "^2.0.0" + } }, "node_modules/vuex-router-sync": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/vuex-router-sync/-/vuex-router-sync-5.0.0.tgz", - "integrity": "sha512-Mry2sO4kiAG64714X1CFpTA/shUH1DmkZ26DFDtwoM/yyx6OtMrc+MxrU+7vvbNLO9LSpgwkiJ8W+rlmRtsM+w==" + "integrity": "sha512-Mry2sO4kiAG64714X1CFpTA/shUH1DmkZ26DFDtwoM/yyx6OtMrc+MxrU+7vvbNLO9LSpgwkiJ8W+rlmRtsM+w==", + "peerDependencies": { + "vue-router": "^3.0.0", + "vuex": "^3.0.0" + } }, "node_modules/watchpack": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", - "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", "dev": true, "dependencies": { - "chokidar": "^2.0.2", "graceful-fs": "^4.1.2", "neo-async": "^2.5.0" + }, + "optionalDependencies": { + "chokidar": "^3.4.1", + "watchpack-chokidar2": "^2.0.1" + } + }, + "node_modules/watchpack-chokidar2": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", + "dev": true, + "optional": true, + "dependencies": { + "chokidar": "^2.1.8" + } + }, + "node_modules/watchpack-chokidar2/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "optional": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/watchpack-chokidar2/node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "optional": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.", + "dev": true, + "optional": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/watchpack-chokidar2/node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "optional": true, + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "optional": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" } }, "node_modules/wbuf": { @@ -14050,51 +13942,62 @@ } }, "node_modules/webpack": { - "version": "4.28.4", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.28.4.tgz", - "integrity": "sha512-NxjD61WsK/a3JIdwWjtIpimmvE6UrRi3yG54/74Hk9rwNj5FPkA4DJCf1z4ByDWLkvZhTZE+P3C/eh6UD5lDcw==", + "version": "4.46.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-module-context": "1.7.11", - "@webassemblyjs/wasm-edit": "1.7.11", - "@webassemblyjs/wasm-parser": "1.7.11", - "acorn": "^5.6.2", - "acorn-dynamic-import": "^3.0.0", - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0", - "chrome-trace-event": "^1.0.0", - "enhanced-resolve": "^4.1.0", - "eslint-scope": "^4.0.0", + "@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.5.0", + "eslint-scope": "^4.0.3", "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.3.0", - "loader-utils": "^1.1.0", - "memory-fs": "~0.4.1", - "micromatch": "^3.1.8", - "mkdirp": "~0.5.0", - "neo-async": "^2.5.0", - "node-libs-browser": "^2.0.0", - "schema-utils": "^0.4.4", - "tapable": "^1.1.0", - "terser-webpack-plugin": "^1.1.0", - "watchpack": "^1.5.0", - "webpack-sources": "^1.3.0" + "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.7.4", + "webpack-sources": "^1.4.1" }, "bin": { "webpack": "bin/webpack.js" }, "engines": { "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + }, + "webpack-command": { + "optional": true + } } }, "node_modules/webpack-bundle-analyzer": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.6.0.tgz", - "integrity": "sha512-orUfvVYEfBMDXgEKAKVvab5iQ2wXneIEorGNsyuOyVYpjYrI7CUOhhXNDd3huMwQ3vNNWWlGP+hzflMFYNzi2g==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.9.0.tgz", + "integrity": "sha512-Ob8amZfCm3rMB1ScjQVlbYYUEJyEjdEtQ92jqiFUYt5VkEeO2v5UMbv49P/gnmCZm3A6yaFQzCBvpZqN4MUsdA==", "dev": true, "dependencies": { - "acorn": "^6.0.7", - "acorn-walk": "^6.1.1", + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1", "bfj": "^6.1.1", "chalk": "^2.4.1", "commander": "^2.18.0", @@ -14102,7 +14005,7 @@ "express": "^4.16.3", "filesize": "^3.6.1", "gzip-size": "^5.0.0", - "lodash": "^4.17.15", + "lodash": "^4.17.19", "mkdirp": "^0.5.1", "opener": "^1.5.1", "ws": "^6.0.0" @@ -14114,18 +14017,6 @@ "node": ">= 6.14.4" } }, - "node_modules/webpack-bundle-analyzer/node_modules/acorn": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz", - "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/webpack-bundle-analyzer/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -14133,19 +14024,22 @@ "dev": true }, "node_modules/webpack-chain": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-6.3.0.tgz", - "integrity": "sha512-Kri8p/JrfcQtBRghyxKN8r9E1mbxzywQPAnQbyvXN+rtSa8au1Qb7JOoyAGfEBFkOvU3XH4JeGd57CHa0QXfMQ==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-6.5.1.tgz", + "integrity": "sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==", "dev": true, "dependencies": { "deepmerge": "^1.5.2", "javascript-stringify": "^2.0.1" + }, + "engines": { + "node": ">=8" } }, "node_modules/webpack-dev-middleware": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", - "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", + "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", "dev": true, "dependencies": { "memory-fs": "^0.4.1", @@ -14156,12 +14050,15 @@ }, "engines": { "node": ">= 6" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, "node_modules/webpack-dev-server": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.10.1.tgz", - "integrity": "sha512-AGG4+XrrXn4rbZUueyNrQgO4KGnol+0wm3MPdqGLmmA+NofZl3blZQKxZ9BND6RDNuvAK9OMYClhjOSnxpWRoA==", + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz", + "integrity": "sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ==", "dev": true, "dependencies": { "ansi-html": "0.0.7", @@ -14172,52 +14069,101 @@ "debug": "^4.1.1", "del": "^4.1.1", "express": "^4.17.1", - "html-entities": "^1.2.1", + "html-entities": "^1.3.1", "http-proxy-middleware": "0.19.1", "import-local": "^2.0.0", "internal-ip": "^4.3.0", "ip": "^1.1.5", "is-absolute-url": "^3.0.3", "killable": "^1.0.1", - "loglevel": "^1.6.6", + "loglevel": "^1.6.8", "opn": "^5.5.0", "p-retry": "^3.0.1", - "portfinder": "^1.0.25", + "portfinder": "^1.0.26", "schema-utils": "^1.0.0", - "selfsigned": "^1.10.7", + "selfsigned": "^1.10.8", "semver": "^6.3.0", "serve-index": "^1.9.1", - "sockjs": "0.3.19", - "sockjs-client": "1.4.0", - "spdy": "^4.0.1", + "sockjs": "^0.3.21", + "sockjs-client": "^1.5.0", + "spdy": "^4.0.2", "strip-ansi": "^3.0.1", "supports-color": "^6.1.0", "url": "^0.11.0", "webpack-dev-middleware": "^3.7.2", "webpack-log": "^2.0.0", "ws": "^6.2.1", - "yargs": "12.0.5" + "yargs": "^13.3.2" }, "bin": { "webpack-dev-server": "bin/webpack-dev-server.js" }, "engines": { "node": ">= 6.11.5" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } } }, "node_modules/webpack-dev-server/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true, "engines": { - "node": ">=4" + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/webpack-dev-server/node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" } }, "node_modules/webpack-dev-server/node_modules/chokidar": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.", "dev": true, "dependencies": { "anymatch": "^2.0.0", @@ -14237,34 +14183,89 @@ } }, "node_modules/webpack-dev-server/node_modules/cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, "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" + } + }, + "node_modules/webpack-dev-server/node_modules/cliui/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" } }, "node_modules/webpack-dev-server/node_modules/cliui/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "dependencies": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^4.1.0" }, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/webpack-dev-server/node_modules/get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "node_modules/webpack-dev-server/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, + "node_modules/webpack-dev-server/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/webpack-dev-server/node_modules/http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "dev": true, + "dependencies": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/webpack-dev-server/node_modules/is-absolute-url": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", @@ -14274,31 +14275,125 @@ "node": ">=8" } }, - "node_modules/webpack-dev-server/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "node_modules/webpack-dev-server/node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, "dependencies": { - "number-is-nan": "^1.0.0" + "binary-extensions": "^1.0.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/webpack-dev-server/node_modules/require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "node_modules/webpack-dev-server/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "node_modules/webpack-dev-server/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack-dev-server/node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/webpack-dev-server/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/string-width/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/string-width/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/webpack-dev-server/node_modules/supports-color": { @@ -14313,67 +14408,63 @@ "node": ">=6" } }, - "node_modules/webpack-dev-server/node_modules/upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true, - "engines": { - "node": ">=4", - "yarn": "*" - } - }, "node_modules/webpack-dev-server/node_modules/wrap-ansi": { - "version": "2.1.0", - "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dev": true, "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/webpack-dev-server/node_modules/wrap-ansi/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "node_modules/webpack-dev-server/node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "ansi-regex": "^4.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, "node_modules/webpack-dev-server/node_modules/yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "dev": true, "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" + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" } }, "node_modules/webpack-dev-server/node_modules/yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, "dependencies": { "camelcase": "^5.0.0", @@ -14403,9 +14494,9 @@ } }, "node_modules/webpack-sources": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", - "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", "dev": true, "dependencies": { "source-list-map": "^2.0.0", @@ -14421,16 +14512,22 @@ "node": ">=0.10.0" } }, - "node_modules/webpack/node_modules/ajv-keywords": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.3.0.tgz", - "integrity": "sha512-CMzN9S62ZOO4sA/mJZIO4S++ZM7KFWzH3PPWkveLhy4OZ9i1/VatgwWMD46w/XbGCBy7Ye0gCk+Za6mmyfKK7g==", - "dev": true + "node_modules/webpack/node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } }, "node_modules/webpack/node_modules/eslint-scope": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", - "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", "dev": true, "dependencies": { "esrecurse": "^4.1.0", @@ -14440,26 +14537,162 @@ "node": ">=4.0.0" } }, + "node_modules/webpack/node_modules/find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack/node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/webpack/node_modules/schema-utils": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", - "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "dev": true, "dependencies": { "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", "ajv-keywords": "^3.1.0" }, "engines": { "node": ">= 4" } }, - "node_modules/websocket-driver": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", - "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", + "node_modules/webpack/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/webpack/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", "dev": true, "dependencies": { - "http-parser-js": ">=0.4.0 <0.4.11", + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" }, @@ -14468,9 +14701,9 @@ } }, "node_modules/websocket-extensions": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", - "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true, "engines": { "node": ">=0.8.0" @@ -14488,6 +14721,22 @@ "which": "bin/which" } }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", @@ -14503,19 +14752,10 @@ "node": ">=0.10.0" } }, - "node_modules/wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/worker-farm": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", - "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", "dev": true, "dependencies": { "errno": "~0.1.7" @@ -14523,7 +14763,7 @@ }, "node_modules/wrap-ansi": { "version": "6.2.0", - "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, "dependencies": { @@ -14545,16 +14785,18 @@ } }, "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.0.tgz", - "integrity": "sha512-7kFQgnEaMdRtwf6uSfUnVr9gSGC7faurn+J/Mv90/W+iTtN0405/nLdopfMWwchyxhbGYl6TC4Sccn9TUkGAgg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "@types/color-name": "^1.1.1", "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/wrap-ansi/node_modules/color-convert": { @@ -14575,12 +14817,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -14591,9 +14827,9 @@ } }, "node_modules/wrap-ansi/node_modules/string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "dependencies": { "emoji-regex": "^8.0.0", @@ -14644,53 +14880,51 @@ } }, "node_modules/xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true, "engines": { "node": ">=0.4" } }, "node_modules/y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", + "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", "dev": true }, "node_modules/yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, "node_modules/yargs": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.0.2.tgz", - "integrity": "sha512-GH/X/hYt+x5hOat4LMnCqMd8r5Cv78heOMIJn1hr7QPPBqfeC6p89Y78+WB9yGDvfpCvgasfmWLzNzEioOUD9Q==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^16.1.0" + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" } }, "node_modules/yargs-parser": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-16.1.0.tgz", - "integrity": "sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg==", + "version": "20.2.7", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", + "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "engines": { + "node": ">=10" } }, "node_modules/yargs/node_modules/ansi-regex": { @@ -14702,36 +14936,50 @@ "node": ">=8" } }, + "node_modules/yargs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/yargs/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" + "wrap-ansi": "^7.0.0" } }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/yargs/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/yargs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, + "node_modules/yargs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/yargs/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -14741,55 +14989,10 @@ "node": ">=8" } }, - "node_modules/yargs/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/yargs/node_modules/string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "dependencies": { "emoji-regex": "^8.0.0", @@ -14812,11 +15015,38 @@ "node": ">=8" } }, + "node_modules/yargs/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/yargs/node_modules/y18n": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", + "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/yorkie": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/yorkie/-/yorkie-2.0.0.tgz", "integrity": "sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==", "dev": true, + "hasInstallScript": true, "dependencies": { "execa": "^0.8.0", "is-ci": "^1.0.10", @@ -14901,25 +15131,33 @@ "@babel/highlight": "^7.12.13" } }, + "@babel/compat-data": { + "version": "7.13.11", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.11.tgz", + "integrity": "sha512-BwKEkO+2a67DcFeS3RLl0Z3Gs2OvdXewuWjc1Hfokhb5eQWP9YRYH1/+VrVZvql2CfjOiNGqSAFOYt4lsqTHzg==", + "dev": true + }, "@babel/core": { - "version": "7.7.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.7.tgz", - "integrity": "sha512-jlSjuj/7z138NLZALxVgrx13AOtqip42ATZP7+kYl53GvDV6+4dCek1mVUo8z8c8Xnw/mx2q3d9HWh3griuesQ==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.10.tgz", + "integrity": "sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw==", "dev": true, "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.7.7", - "@babel/helpers": "^7.7.4", - "@babel/parser": "^7.7.7", - "@babel/template": "^7.7.4", - "@babel/traverse": "^7.7.4", - "@babel/types": "^7.7.4", + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.9", + "@babel/helper-compilation-targets": "^7.13.10", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helpers": "^7.13.10", + "@babel/parser": "^7.13.10", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", - "json5": "^2.1.0", - "lodash": "^4.17.13", - "resolve": "^1.3.2", - "semver": "^5.4.1", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "semver": "^6.3.0", "source-map": "^0.5.0" } }, @@ -14935,78 +15173,82 @@ } }, "@babel/helper-annotate-as-pure": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.7.4.tgz", - "integrity": "sha512-2BQmQgECKzYKFPpiycoF9tlb5HA4lrVyAmLLVK177EcQAqjVLciUb2/R+n1boQ9y5ENV3uz2ZqiNw7QMBBw1Og==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", + "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", "dev": true, "requires": { - "@babel/types": "^7.7.4" + "@babel/types": "^7.12.13" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.7.4.tgz", - "integrity": "sha512-Biq/d/WtvfftWZ9Uf39hbPBYDUo986m5Bb4zhkeYDGUllF43D+nUe5M6Vuo6/8JDK/0YX/uBdeoQpyaNhNugZQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", + "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.7.4", - "@babel/types": "^7.7.4" + "@babel/helper-explode-assignable-expression": "^7.12.13", + "@babel/types": "^7.12.13" } }, - "@babel/helper-call-delegate": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.7.4.tgz", - "integrity": "sha512-8JH9/B7J7tCYJ2PpWVpw9JhPuEVHztagNVuQAFBVFYluRMlpG7F1CgKEgGeL6KFqcsIa92ZYVj6DSc0XwmN1ZA==", + "@babel/helper-compilation-targets": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.10.tgz", + "integrity": "sha512-/Xju7Qg1GQO4mHZ/Kcs6Au7gfafgZnwm+a7sy/ow/tV1sHeraRUHbjdat8/UvDor4Tez+siGKDk6zIKtCPKVJA==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.7.4", - "@babel/traverse": "^7.7.4", - "@babel/types": "^7.7.4" + "@babel/compat-data": "^7.13.8", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.7.4.tgz", - "integrity": "sha512-l+OnKACG4uiDHQ/aJT8dwpR+LhCJALxL0mJ6nzjB25e5IPwqV1VOsY7ah6UB1DG+VOXAIMtuC54rFJGiHkxjgA==", + "version": "7.13.11", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz", + "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.7.4", - "@babel/helper-member-expression-to-functions": "^7.7.4", - "@babel/helper-optimise-call-expression": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.7.4", - "@babel/helper-split-export-declaration": "^7.7.4" + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-member-expression-to-functions": "^7.13.0", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-replace-supers": "^7.13.0", + "@babel/helper-split-export-declaration": "^7.12.13" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.7.4.tgz", - "integrity": "sha512-Mt+jBKaxL0zfOIWrfQpnfYCN7/rS6GKx6CCCfuoqVVd+17R8zNDlzVYmIi9qyb2wOk002NsmSTDymkIygDUH7A==", + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", + "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", "dev": true, "requires": { - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.6.0" + "@babel/helper-annotate-as-pure": "^7.12.13", + "regexpu-core": "^4.7.1" } }, - "@babel/helper-define-map": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.7.4.tgz", - "integrity": "sha512-v5LorqOa0nVQUvAUTUF3KPastvUt/HzByXNamKQ6RdJRTV7j8rLL+WB5C/MzzWAwOomxDhYFb1wLLxHqox86lg==", + "@babel/helper-define-polyfill-provider": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", + "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.7.4", - "@babel/types": "^7.7.4", - "lodash": "^4.17.13" + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" } }, "@babel/helper-explode-assignable-expression": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.7.4.tgz", - "integrity": "sha512-2/SicuFrNSXsZNBxe5UGdLr+HZg+raWBLE9vC98bdYOKX/U6PY0mdGlYUJdtTDPSU0Lw0PNbKKDpwYHJLn2jLg==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", + "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", "dev": true, "requires": { - "@babel/traverse": "^7.7.4", - "@babel/types": "^7.7.4" + "@babel/types": "^7.13.0" } }, "@babel/helper-function-name": { @@ -15030,103 +15272,104 @@ } }, "@babel/helper-hoist-variables": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.7.4.tgz", - "integrity": "sha512-wQC4xyvc1Jo/FnLirL6CEgPgPCa8M74tOdjWpRhQYapz5JC7u3NYU1zCVoVAGCE3EaIP9T1A3iW0WLJ+reZlpQ==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", + "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", "dev": true, "requires": { - "@babel/types": "^7.7.4" + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.7.4.tgz", - "integrity": "sha512-9KcA1X2E3OjXl/ykfMMInBK+uVdfIVakVe7W7Lg3wfXUNyS3Q1HWLFRwZIjhqiCGbslummPDnmb7vIekS0C1vw==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.0.tgz", + "integrity": "sha512-yvRf8Ivk62JwisqV1rFRMxiSMDGnN6KH1/mDMmIrij4jztpQNRoHqqMG3U6apYbGRPJpgPalhva9Yd06HlUxJQ==", "dev": true, "requires": { - "@babel/types": "^7.7.4" + "@babel/types": "^7.13.0" } }, "@babel/helper-module-imports": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.7.4.tgz", - "integrity": "sha512-dGcrX6K9l8258WFjyDLJwuVKxR4XZfU0/vTUgOQYWEnRD8mgr+p4d6fCUMq/ys0h4CCt/S5JhbvtyErjWouAUQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz", + "integrity": "sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g==", "dev": true, "requires": { - "@babel/types": "^7.7.4" + "@babel/types": "^7.12.13" } }, "@babel/helper-module-transforms": { - "version": "7.7.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.7.5.tgz", - "integrity": "sha512-A7pSxyJf1gN5qXVcidwLWydjftUN878VkalhXX5iQDuGyiGK3sOrrKKHF4/A4fwHtnsotv/NipwAeLzY4KQPvw==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.0.tgz", + "integrity": "sha512-Ls8/VBwH577+pw7Ku1QkUWIyRRNHpYlts7+qSqBBFCW3I8QteB9DxfcZ5YJpOwH6Ihe/wn8ch7fMGOP1OhEIvw==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.7.4", - "@babel/helper-simple-access": "^7.7.4", - "@babel/helper-split-export-declaration": "^7.7.4", - "@babel/template": "^7.7.4", - "@babel/types": "^7.7.4", - "lodash": "^4.17.13" + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-replace-supers": "^7.13.0", + "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-validator-identifier": "^7.12.11", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0", + "lodash": "^4.17.19" } }, "@babel/helper-optimise-call-expression": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.7.4.tgz", - "integrity": "sha512-VB7gWZ2fDkSuqW6b1AKXkJWO5NyNI3bFL/kK79/30moK57blr6NbH8xcl2XcKCwOmJosftWunZqfO84IGq3ZZg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", + "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", "dev": true, "requires": { - "@babel/types": "^7.7.4" + "@babel/types": "^7.12.13" } }, "@babel/helper-plugin-utils": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", - "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", + "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", "dev": true }, - "@babel/helper-regex": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.5.5.tgz", - "integrity": "sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw==", - "dev": true, - "requires": { - "lodash": "^4.17.13" - } - }, "@babel/helper-remap-async-to-generator": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.7.4.tgz", - "integrity": "sha512-Sk4xmtVdM9sA/jCI80f+KS+Md+ZHIpjuqmYPk1M7F/upHou5e4ReYmExAiu6PVe65BhJPZA2CY9x9k4BqE5klw==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", + "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.7.4", - "@babel/helper-wrap-function": "^7.7.4", - "@babel/template": "^7.7.4", - "@babel/traverse": "^7.7.4", - "@babel/types": "^7.7.4" + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@babel/helper-replace-supers": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.7.4.tgz", - "integrity": "sha512-pP0tfgg9hsZWo5ZboYGuBn/bbYT/hdLPVSS4NMmiRJdwWhP0IznPwN9AE1JwyGsjSPLC364I0Qh5p+EPkGPNpg==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.0.tgz", + "integrity": "sha512-Segd5me1+Pz+rmN/NFBOplMbZG3SqRJOBlY+mA0SxAv6rjj7zJqr1AVr3SfzUVTLCv7ZLU5FycOM/SBGuLPbZw==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.7.4", - "@babel/helper-optimise-call-expression": "^7.7.4", - "@babel/traverse": "^7.7.4", - "@babel/types": "^7.7.4" + "@babel/helper-member-expression-to-functions": "^7.13.0", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@babel/helper-simple-access": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.7.4.tgz", - "integrity": "sha512-zK7THeEXfan7UlWsG2A6CI/L9jVnI5+xxKZOdej39Y0YtDYKx9raHk5F2EtK9K8DHRTihYwg20ADt9S36GR78A==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz", + "integrity": "sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA==", "dev": true, "requires": { - "@babel/template": "^7.7.4", - "@babel/types": "^7.7.4" + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" } }, "@babel/helper-split-export-declaration": { @@ -15144,27 +15387,33 @@ "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", "dev": true }, + "@babel/helper-validator-option": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", + "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", + "dev": true + }, "@babel/helper-wrap-function": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.7.4.tgz", - "integrity": "sha512-VsfzZt6wmsocOaVU0OokwrIytHND55yvyT4BPB9AIIgwr8+x7617hetdJTsuGwygN5RC6mxA9EJztTjuwm2ofg==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", + "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.7.4", - "@babel/template": "^7.7.4", - "@babel/traverse": "^7.7.4", - "@babel/types": "^7.7.4" + "@babel/helper-function-name": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@babel/helpers": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.7.4.tgz", - "integrity": "sha512-ak5NGZGJ6LV85Q1Zc9gn2n+ayXOizryhjSUBTdu5ih1tlVCJeuQENzc4ItyCVhINVXvIT/ZQ4mheGIsfBkpskg==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", + "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", "dev": true, "requires": { - "@babel/template": "^7.7.4", - "@babel/traverse": "^7.7.4", - "@babel/types": "^7.7.4" + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@babel/highlight": { @@ -15185,543 +15434,699 @@ "dev": true }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.7.4.tgz", - "integrity": "sha512-1ypyZvGRXriY/QP668+s8sFr2mqinhkRDMPSQLNghCQE+GAkFtp+wkHVvg2+Hdki8gwP+NFzJBJ/N1BfzCCDEw==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", + "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.7.4", - "@babel/plugin-syntax-async-generators": "^7.7.4" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/plugin-syntax-async-generators": "^7.8.4" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.7.4.tgz", - "integrity": "sha512-EcuXeV4Hv1X3+Q1TsuOmyyxeTRiSqurGJ26+I/FW1WbymmRRapVORm6x1Zl3iDIHyRxEs+VXWp6qnlcfcJSbbw==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", + "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-proposal-decorators": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.7.4.tgz", - "integrity": "sha512-GftcVDcLCwVdzKmwOBDjATd548+IE+mBo7ttgatqNDR7VG7GqIuZPtRWlMLHbhTXhcnFZiGER8iIYl1n/imtsg==", + "version": "7.13.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.13.5.tgz", + "integrity": "sha512-i0GDfVNuoapwiheevUOuSW67mInqJ8qw7uWfpjNVeHMn143kXblEy/bmL9AdZ/0yf/4BMQeWXezK0tQIvNPqag==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-decorators": "^7.7.4" + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-decorators": "^7.12.13" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.7.4.tgz", - "integrity": "sha512-StH+nGAdO6qDB1l8sZ5UBV8AC3F2VW2I8Vfld73TMKyptMU9DY5YsJAS8U81+vEtxcH3Y/La0wG0btDrhpnhjQ==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", + "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.7.4" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", + "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.7.4.tgz", - "integrity": "sha512-wQvt3akcBTfLU/wYoqm/ws7YOAQKu8EVJEvHip/mzkNtjaclQoCCIqKXFP5/eyfnfbQCDV3OLRIK3mIVyXuZlw==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", + "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-json-strings": "^7.7.4" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", + "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", + "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", + "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.7.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.7.7.tgz", - "integrity": "sha512-3qp9I8lelgzNedI3hrhkvhaEYree6+WHnyA/q4Dza9z7iEIs1eyhWyJnetk3jJ69RT0AT4G0UhEGwyGFJ7GUuQ==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", + "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.7.4" + "@babel/compat-data": "^7.13.8", + "@babel/helper-compilation-targets": "^7.13.8", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.13.0" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.7.4.tgz", - "integrity": "sha512-DyM7U2bnsQerCQ+sejcTNZh8KQEUuC3ufzdnVnSiUv/qoGJp2Z3hanKL18KDhsBT5Wj6a7CMT5mdyCNJsEaA9w==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", + "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.7.4" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.8.tgz", + "integrity": "sha512-hpbBwbTgd7Cz1QryvwJZRo1U0k1q8uyBmeXOSQUjdg/A2TASkhR/rz7AyqZ/kS8kbpsNA80rOYbxySBJAqmhhQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", + "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.7.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.7.7.tgz", - "integrity": "sha512-80PbkKyORBUVm1fbTLrHpYdJxMThzM1UqFGh0ALEhO9TYbG86Ah9zQYAB/84axz2vcxefDLdZwWwZNlYARlu9w==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", + "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-syntax-async-generators": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.7.4.tgz", - "integrity": "sha512-Li4+EjSpBgxcsmeEF8IFcfV/+yJGxHXDirDkEoyFjumuwbmfCVHUt0HuowD/iGM7OhIRyXJH9YXxqiH6N815+g==", + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-syntax-decorators": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.7.4.tgz", - "integrity": "sha512-0oNLWNH4k5ZbBVfAwiTU53rKFWIeTh6ZlaWOXWJc4ywxs0tjz5fc3uZ6jKAnZSxN98eXVgg7bJIuzjX+3SXY+A==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.13.tgz", + "integrity": "sha512-Rw6aIXGuqDLr6/LoBBYE57nKOzQpz/aDkKlMqEwH+Vp0MXbG6H/TfRjaY343LKxzAKAMXIHsQ8JzaZKuDZ9MwA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-syntax-dynamic-import": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.7.4.tgz", - "integrity": "sha512-jHQW0vbRGvwQNgyVxwDh4yuXu4bH1f5/EICJLAhl1SblLs2CDhrsmCk+v5XLdE9wxtAFRyxx+P//Iw+a5L/tTg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-syntax-json-strings": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.7.4.tgz", - "integrity": "sha512-QpGupahTQW1mHRXddMG5srgpHWqRLwJnJZKXTigB9RPFCCGbDGCgBeM/iC82ICXp414WeYx/tD54w7M2qRqTMg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" } }, "@babel/plugin-syntax-jsx": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.7.4.tgz", - "integrity": "sha512-wuy6fiMe9y7HeZBWXYCGt2RGxZOj0BImZ9EyXJVnVGBKO/Br592rbR3rtIQn0eQhAk9vqaKP5n8tVqEFBQMfLg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz", + "integrity": "sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-object-rest-spread": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.7.4.tgz", - "integrity": "sha512-mObR+r+KZq0XhRVS2BrBKBpr5jqrqzlPvS9C9vuOf5ilSwzloAl7RPWLrgKdWS6IreaVrjHxTjtyqFiOisaCwg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" } }, "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.7.4.tgz", - "integrity": "sha512-4ZSuzWgFxqHRE31Glu+fEr/MirNZOMYmD/0BhBWyLyOOQz/gTAl7QmWm2hX1QxEIXsr2vkdlwxIzTyiYRC4xcQ==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" } }, "@babel/plugin-syntax-top-level-await": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.7.4.tgz", - "integrity": "sha512-wdsOw0MvkL1UIgiQ/IFr3ETcfv1xb8RMM0H9wbiDyLaJFyiDg5oZvDLCXosIXmFeIlweML5iOBXAkqddkYNizg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", + "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.7.4.tgz", - "integrity": "sha512-zUXy3e8jBNPiffmqkHRNDdZM2r8DWhCB7HhcoyZjiK1TxYEluLHAvQuYnTT+ARqRpabWqy/NHkO6e3MsYB5YfA==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", + "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.7.4.tgz", - "integrity": "sha512-zpUTZphp5nHokuy8yLlyafxCJ0rSlFoSHypTUWgpdwoDXWQcseaect7cJ8Ppk6nunOM6+5rPMkod4OYKPR5MUg==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", + "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.7.4" + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-remap-async-to-generator": "^7.13.0" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.7.4.tgz", - "integrity": "sha512-kqtQzwtKcpPclHYjLK//3lH8OFsCDuDJBaFhVwf8kqdnF6MN4l618UDlcA7TfRs3FayrHj+svYnSX8MC9zmUyQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", + "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.7.4.tgz", - "integrity": "sha512-2VBe9u0G+fDt9B5OV5DQH4KBf5DoiNkwFKOz0TCvBWvdAN2rOykCTkrL+jTLxfCAm76l9Qo5OqL7HBOx2dWggg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", + "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "lodash": "^4.17.13" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-classes": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.7.4.tgz", - "integrity": "sha512-sK1mjWat7K+buWRuImEzjNf68qrKcrddtpQo3swi9j7dUcG6y6R6+Di039QN2bD1dykeswlagupEmpOatFHHUg==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", + "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.7.4", - "@babel/helper-define-map": "^7.7.4", - "@babel/helper-function-name": "^7.7.4", - "@babel/helper-optimise-call-expression": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.7.4", - "@babel/helper-split-export-declaration": "^7.7.4", + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-replace-supers": "^7.13.0", + "@babel/helper-split-export-declaration": "^7.12.13", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.7.4.tgz", - "integrity": "sha512-bSNsOsZnlpLLyQew35rl4Fma3yKWqK3ImWMSC/Nc+6nGjC9s5NFWAer1YQ899/6s9HxO2zQC1WoFNfkOqRkqRQ==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", + "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-destructuring": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.7.4.tgz", - "integrity": "sha512-4jFMXI1Cu2aXbcXXl8Lr6YubCn6Oc7k9lLsu8v61TZh+1jny2BWmdtvY9zSUlLdGUvcy9DMAWyZEOqjsbeg/wA==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", + "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.7.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.7.7.tgz", - "integrity": "sha512-b4in+YlTeE/QmTgrllnb3bHA0HntYvjz8O3Mcbx75UBPJA2xhb5A8nle498VhxSXJHQefjtQxpnLPehDJ4TRlg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", + "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.7.4.tgz", - "integrity": "sha512-g1y4/G6xGWMD85Tlft5XedGaZBCIVN+/P0bs6eabmcPP9egFleMAo65OOjlhcz1njpwagyY3t0nsQC9oTFegJA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", + "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.7.4.tgz", - "integrity": "sha512-MCqiLfCKm6KEA1dglf6Uqq1ElDIZwFuzz1WH5mTf8k2uQSxEJMbOIEh7IZv7uichr7PMfi5YVSrr1vz+ipp7AQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", + "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-for-of": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.7.4.tgz", - "integrity": "sha512-zZ1fD1B8keYtEcKF+M1TROfeHTKnijcVQm0yO/Yu1f7qoDoxEIc/+GX6Go430Bg84eM/xwPFp0+h4EbZg7epAA==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", + "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-function-name": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.7.4.tgz", - "integrity": "sha512-E/x09TvjHNhsULs2IusN+aJNRV5zKwxu1cpirZyRPw+FyyIKEHPXTsadj48bVpc1R5Qq1B5ZkzumuFLytnbT6g==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", + "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-literals": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.7.4.tgz", - "integrity": "sha512-X2MSV7LfJFm4aZfxd0yLVFrEXAgPqYoDG53Br/tCKiKYfX0MjVjQeWPIhPHHsCqzwQANq+FLN786fF5rgLS+gw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", + "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.7.4.tgz", - "integrity": "sha512-9VMwMO7i69LHTesL0RdGy93JU6a+qOPuvB4F4d0kR0zyVjJRVJRaoaGjhtki6SzQUu8yen/vxPKN6CWnCUw6bA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", + "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.7.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.7.5.tgz", - "integrity": "sha512-CT57FG4A2ZUNU1v+HdvDSDrjNWBrtCmSH6YbbgN3Lrf0Di/q/lWRxZrE72p3+HCCz9UjfZOEBdphgC0nzOS6DQ==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", + "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.7.5", - "@babel/helper-plugin-utils": "^7.0.0", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.7.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.7.5.tgz", - "integrity": "sha512-9Cq4zTFExwFhQI6MT1aFxgqhIsMWQWDVwOgLzl7PTWJHsNaqFvklAU+Oz6AQLAS0dJKTwZSOCo20INwktxpi3Q==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", + "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.7.5", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-simple-access": "^7.7.4", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-simple-access": "^7.12.13", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.7.4.tgz", - "integrity": "sha512-y2c96hmcsUi6LrMqvmNDPBBiGCiQu0aYqpHatVVu6kD4mFEXKjyNxd/drc18XXAf9dv7UXjrZwBVmTTGaGP8iw==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", + "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-hoist-variables": "^7.13.0", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-identifier": "^7.12.11", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.7.4.tgz", - "integrity": "sha512-u2B8TIi0qZI4j8q4C51ktfO7E3cQ0qnaXFI1/OXITordD40tt17g/sXqgNNCcMTcBFKrUPcGDx+TBJuZxLx7tw==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", + "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.7.4.tgz", - "integrity": "sha512-jBUkiqLKvUWpv9GLSuHUFYdmHg0ujC1JEYoZUfeOOfNydZXp1sXObgyPatpcwjWgsdBGsagWW0cdJpX/DO2jMw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", + "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.7.4" + "@babel/helper-create-regexp-features-plugin": "^7.12.13" } }, "@babel/plugin-transform-new-target": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.7.4.tgz", - "integrity": "sha512-CnPRiNtOG1vRodnsyGX37bHQleHE14B9dnnlgSeEs3ek3fHN1A1SScglTCg1sfbe7sRQ2BUcpgpTpWSfMKz3gg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", + "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-object-super": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.7.4.tgz", - "integrity": "sha512-ho+dAEhC2aRnff2JCA0SAK7V2R62zJd/7dmtoe7MHcso4C2mS+vZjn1Pb1pCVZvJs1mgsvv5+7sT+m3Bysb6eg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", + "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.7.4" + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13" } }, "@babel/plugin-transform-parameters": { - "version": "7.7.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.7.7.tgz", - "integrity": "sha512-OhGSrf9ZBrr1fw84oFXj5hgi8Nmg+E2w5L7NhnG0lPvpDtqd7dbyilM2/vR8CKbJ907RyxPh2kj6sBCSSfI9Ew==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", + "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", "dev": true, "requires": { - "@babel/helper-call-delegate": "^7.7.4", - "@babel/helper-get-function-arity": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-property-literals": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.7.4.tgz", - "integrity": "sha512-MatJhlC4iHsIskWYyawl53KuHrt+kALSADLQQ/HkhTjX954fkxIEh4q5slL4oRAnsm/eDoZ4q0CIZpcqBuxhJQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", + "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-regenerator": { - "version": "7.7.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.7.5.tgz", - "integrity": "sha512-/8I8tPvX2FkuEyWbjRCt4qTAgZK0DVy8QRguhA524UH48RfGJy94On2ri+dCuwOpcerPRl9O4ebQkRcVzIaGBw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", + "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", "dev": true, "requires": { - "regenerator-transform": "^0.14.0" + "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.7.4.tgz", - "integrity": "sha512-OrPiUB5s5XvkCO1lS7D8ZtHcswIC57j62acAnJZKqGGnHP+TIc/ljQSrgdX/QyOTdEK5COAhuc820Hi1q2UgLQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", + "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-runtime": { - "version": "7.7.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.7.6.tgz", - "integrity": "sha512-tajQY+YmXR7JjTwRvwL4HePqoL3DYxpYXIHKVvrOIvJmeHe2y1w4tz5qz9ObUDC9m76rCzIMPyn4eERuwA4a4A==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.13.10.tgz", + "integrity": "sha512-Y5k8ipgfvz5d/76tx7JYbKQTcgFSU6VgJ3kKQv4zGTKr+a9T/KBvfRvGtSFgKDQGt/DBykQixV0vNWKIdzWErA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0", - "resolve": "^1.8.1", - "semver": "^5.5.1" + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "babel-plugin-polyfill-corejs2": "^0.1.4", + "babel-plugin-polyfill-corejs3": "^0.1.3", + "babel-plugin-polyfill-regenerator": "^0.1.2", + "semver": "^6.3.0" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.7.4.tgz", - "integrity": "sha512-q+suddWRfIcnyG5YiDP58sT65AJDZSUhXQDZE3r04AuqD6d/XLaQPPXSBzP2zGerkgBivqtQm9XKGLuHqBID6Q==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", + "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-spread": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.7.4.tgz", - "integrity": "sha512-8OSs0FLe5/80cndziPlg4R0K6HcWSM0zyNhHhLsmw/Nc5MaA49cAsnoJ/t/YZf8qkG7fD+UjTRaApVDB526d7Q==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", + "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.7.4.tgz", - "integrity": "sha512-Ls2NASyL6qtVe1H1hXts9yuEeONV2TJZmplLONkMPUG158CtmnrzW5Q5teibM5UVOFjG0D3IC5mzXR6pPpUY7A==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", + "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-template-literals": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.7.4.tgz", - "integrity": "sha512-sA+KxLwF3QwGj5abMHkHgshp9+rRz+oY9uoRil4CyLtgEuE/88dpkeWgNk5qKVsJE9iSfly3nvHapdRiIS2wnQ==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", + "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.13.0" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.7.4.tgz", - "integrity": "sha512-KQPUQ/7mqe2m0B8VecdyaW5XcQYaePyl9R7IsKd+irzj6jvbhoGnRE+M0aNkyAzI07VfUQ9266L5xMARitV3wg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", + "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", + "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.7.4.tgz", - "integrity": "sha512-N77UUIV+WCvE+5yHw+oks3m18/umd7y392Zv7mYTpFqHtkpcc+QUz+gLJNTWVlWROIWeLqY0f3OjZxV5TcXnRw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", + "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/preset-env": { - "version": "7.7.7", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.7.7.tgz", - "integrity": "sha512-pCu0hrSSDVI7kCVUOdcMNQEbOPJ52E+LrQ14sN8uL2ALfSqePZQlKrOy+tM4uhEdYlCHi4imr8Zz2cZe9oSdIg==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.10.tgz", + "integrity": "sha512-nOsTScuoRghRtUsRr/c69d042ysfPHcu+KOB4A9aAO9eJYqrkat+LF8G1yp1HD18QiwixT2CisZTr/0b3YZPXQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.8", + "@babel/helper-compilation-targets": "^7.13.10", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-option": "^7.12.17", + "@babel/plugin-proposal-async-generator-functions": "^7.13.8", + "@babel/plugin-proposal-class-properties": "^7.13.0", + "@babel/plugin-proposal-dynamic-import": "^7.13.8", + "@babel/plugin-proposal-export-namespace-from": "^7.12.13", + "@babel/plugin-proposal-json-strings": "^7.13.8", + "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", + "@babel/plugin-proposal-numeric-separator": "^7.12.13", + "@babel/plugin-proposal-object-rest-spread": "^7.13.8", + "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", + "@babel/plugin-proposal-optional-chaining": "^7.13.8", + "@babel/plugin-proposal-private-methods": "^7.13.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@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/plugin-syntax-top-level-await": "^7.12.13", + "@babel/plugin-transform-arrow-functions": "^7.13.0", + "@babel/plugin-transform-async-to-generator": "^7.13.0", + "@babel/plugin-transform-block-scoped-functions": "^7.12.13", + "@babel/plugin-transform-block-scoping": "^7.12.13", + "@babel/plugin-transform-classes": "^7.13.0", + "@babel/plugin-transform-computed-properties": "^7.13.0", + "@babel/plugin-transform-destructuring": "^7.13.0", + "@babel/plugin-transform-dotall-regex": "^7.12.13", + "@babel/plugin-transform-duplicate-keys": "^7.12.13", + "@babel/plugin-transform-exponentiation-operator": "^7.12.13", + "@babel/plugin-transform-for-of": "^7.13.0", + "@babel/plugin-transform-function-name": "^7.12.13", + "@babel/plugin-transform-literals": "^7.12.13", + "@babel/plugin-transform-member-expression-literals": "^7.12.13", + "@babel/plugin-transform-modules-amd": "^7.13.0", + "@babel/plugin-transform-modules-commonjs": "^7.13.8", + "@babel/plugin-transform-modules-systemjs": "^7.13.8", + "@babel/plugin-transform-modules-umd": "^7.13.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", + "@babel/plugin-transform-new-target": "^7.12.13", + "@babel/plugin-transform-object-super": "^7.12.13", + "@babel/plugin-transform-parameters": "^7.13.0", + "@babel/plugin-transform-property-literals": "^7.12.13", + "@babel/plugin-transform-regenerator": "^7.12.13", + "@babel/plugin-transform-reserved-words": "^7.12.13", + "@babel/plugin-transform-shorthand-properties": "^7.12.13", + "@babel/plugin-transform-spread": "^7.13.0", + "@babel/plugin-transform-sticky-regex": "^7.12.13", + "@babel/plugin-transform-template-literals": "^7.13.0", + "@babel/plugin-transform-typeof-symbol": "^7.12.13", + "@babel/plugin-transform-unicode-escapes": "^7.12.13", + "@babel/plugin-transform-unicode-regex": "^7.12.13", + "@babel/preset-modules": "^0.1.4", + "@babel/types": "^7.13.0", + "babel-plugin-polyfill-corejs2": "^0.1.4", + "babel-plugin-polyfill-corejs3": "^0.1.3", + "babel-plugin-polyfill-regenerator": "^0.1.2", + "core-js-compat": "^3.9.0", + "semver": "^6.3.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.7.4", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-async-generator-functions": "^7.7.4", - "@babel/plugin-proposal-dynamic-import": "^7.7.4", - "@babel/plugin-proposal-json-strings": "^7.7.4", - "@babel/plugin-proposal-object-rest-spread": "^7.7.7", - "@babel/plugin-proposal-optional-catch-binding": "^7.7.4", - "@babel/plugin-proposal-unicode-property-regex": "^7.7.7", - "@babel/plugin-syntax-async-generators": "^7.7.4", - "@babel/plugin-syntax-dynamic-import": "^7.7.4", - "@babel/plugin-syntax-json-strings": "^7.7.4", - "@babel/plugin-syntax-object-rest-spread": "^7.7.4", - "@babel/plugin-syntax-optional-catch-binding": "^7.7.4", - "@babel/plugin-syntax-top-level-await": "^7.7.4", - "@babel/plugin-transform-arrow-functions": "^7.7.4", - "@babel/plugin-transform-async-to-generator": "^7.7.4", - "@babel/plugin-transform-block-scoped-functions": "^7.7.4", - "@babel/plugin-transform-block-scoping": "^7.7.4", - "@babel/plugin-transform-classes": "^7.7.4", - "@babel/plugin-transform-computed-properties": "^7.7.4", - "@babel/plugin-transform-destructuring": "^7.7.4", - "@babel/plugin-transform-dotall-regex": "^7.7.7", - "@babel/plugin-transform-duplicate-keys": "^7.7.4", - "@babel/plugin-transform-exponentiation-operator": "^7.7.4", - "@babel/plugin-transform-for-of": "^7.7.4", - "@babel/plugin-transform-function-name": "^7.7.4", - "@babel/plugin-transform-literals": "^7.7.4", - "@babel/plugin-transform-member-expression-literals": "^7.7.4", - "@babel/plugin-transform-modules-amd": "^7.7.5", - "@babel/plugin-transform-modules-commonjs": "^7.7.5", - "@babel/plugin-transform-modules-systemjs": "^7.7.4", - "@babel/plugin-transform-modules-umd": "^7.7.4", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.7.4", - "@babel/plugin-transform-new-target": "^7.7.4", - "@babel/plugin-transform-object-super": "^7.7.4", - "@babel/plugin-transform-parameters": "^7.7.7", - "@babel/plugin-transform-property-literals": "^7.7.4", - "@babel/plugin-transform-regenerator": "^7.7.5", - "@babel/plugin-transform-reserved-words": "^7.7.4", - "@babel/plugin-transform-shorthand-properties": "^7.7.4", - "@babel/plugin-transform-spread": "^7.7.4", - "@babel/plugin-transform-sticky-regex": "^7.7.4", - "@babel/plugin-transform-template-literals": "^7.7.4", - "@babel/plugin-transform-typeof-symbol": "^7.7.4", - "@babel/plugin-transform-unicode-regex": "^7.7.4", - "@babel/types": "^7.7.4", - "browserslist": "^4.6.0", - "core-js-compat": "^3.6.0", - "invariant": "^2.2.2", - "js-levenshtein": "^1.1.3", - "semver": "^5.5.0" + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" } }, "@babel/runtime": { - "version": "7.7.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.7.7.tgz", - "integrity": "sha512-uCnC2JEVAu8AKB5do1WRIsvrdJ0flYx/A/9f/6chdacnEZ7LmavjdsDXr5ksYBegxtuTPR5Va9/+13QF/kFkCA==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", + "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", "dev": true, "requires": { - "regenerator-runtime": "^0.13.2" + "regenerator-runtime": "^0.13.4" } }, "@babel/template": { @@ -15764,35 +16169,42 @@ } }, "@hapi/address": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.0.0.tgz", - "integrity": "sha512-mV6T0IYqb0xL1UALPFplXYQmR0twnXG0M6jUswpquqT2sD12BOiCiLy3EvMp/Fy7s3DZElC4/aPjEjo2jeZpvw==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", + "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==", + "dev": true + }, + "@hapi/bourne": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", + "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==", "dev": true }, "@hapi/hoek": { - "version": "6.2.4", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-6.2.4.tgz", - "integrity": "sha512-HOJ20Kc93DkDVvjwHyHawPwPkX44sIrbXazAUDiUXaY2R9JwQGo2PhFfnQtdrsIe4igjG2fPgMra7NYw7qhy0A==", + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", + "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==", "dev": true }, "@hapi/joi": { - "version": "15.0.3", - "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.0.3.tgz", - "integrity": "sha512-z6CesJ2YBwgVCi+ci8SI8zixoj8bGFn/vZb9MBPbSyoxsS2PnWYjHcyTM17VLK6tx64YVK38SDIh10hJypB+ig==", + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", + "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", "dev": true, "requires": { "@hapi/address": "2.x.x", - "@hapi/hoek": "6.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", "@hapi/topo": "3.x.x" } }, "@hapi/topo": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.0.tgz", - "integrity": "sha512-gZDI/eXOIk8kP2PkUKjWu9RW8GGVd2Hkgjxyr/S7Z+JF+0mr7bAlbw+DkTRxnD580o8Kqxlnba9wvqp5aOHBww==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", + "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", "dev": true, "requires": { - "@hapi/hoek": "6.x.x" + "@hapi/hoek": "^8.3.0" } }, "@intervolga/optimize-cssnano-plugin": { @@ -15823,76 +16235,128 @@ "dev": true }, "@soda/friendly-errors-webpack-plugin": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.1.tgz", - "integrity": "sha512-cWKrGaFX+rfbMrAxVv56DzhPNqOJPZuNIS2HGMELtgGzb+vsMzyig9mml5gZ/hr2BGtSLV+dP2LUEuAL8aG2mQ==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.0.tgz", + "integrity": "sha512-RLotfx6k1+nfLacwNCenj7VnTMPxVwYKoGOcffMFoJDKM8tXzBiCN0hMHFJNnoAojduYAsxuiMm0EOMixgiRow==", "dev": true, "requires": { - "chalk": "^1.1.3", - "error-stack-parser": "^2.0.0", - "string-width": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } + "chalk": "^2.4.2", + "error-stack-parser": "^2.0.2", + "string-width": "^2.0.0", + "strip-ansi": "^5" } }, - "@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "@soda/get-current-script": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@soda/get-current-script/-/get-current-script-1.0.2.tgz", + "integrity": "sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w==", "dev": true }, - "@types/events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", - "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", + "@types/anymatch": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz", + "integrity": "sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==", "dev": true }, - "@types/glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", - "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "@types/body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.34.tgz", + "integrity": "sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.4.tgz", + "integrity": "sha512-Kf8v0wljR5GSCOCF/VQWdV3ZhKOVA73drXtY3geMTQgHy9dgqQ0dLrf31M0hcuWkhFzK5sP0kkS3mJzcKVtZbw==", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "@types/express": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.11.tgz", + "integrity": "sha512-no+R6rW60JEc59977wIxreQVsIEOAYwgCqldrA/vkpCnbD7MqTefO97lmoBe4WE0F156bC4uLSP1XHDOySnChg==", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.19.tgz", + "integrity": "sha512-DJOSHzX7pCiSElWaGR8kCprwibCB/3yW6vcT8VG3P0SJjnv19gnWG/AZMfM60Xj/YJIp/YCaDHyvzsFVeniARA==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", "dev": true, "requires": { - "@types/events": "*", "@types/minimatch": "*", "@types/node": "*" } }, + "@types/http-proxy": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.5.tgz", + "integrity": "sha512-GNkDE7bTv6Sf8JbV2GksknKOsk7OznNYHSdrtvPJXO0qJ9odZig6IZKUi5RFGi6d1bf6dgIAe4uXi3DBc7069Q==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/json-schema": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", + "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", + "dev": true + }, + "@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, "@types/minimatch": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", "dev": true }, + "@types/minimist": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz", + "integrity": "sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==", + "dev": true + }, "@types/node": { - "version": "11.13.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-11.13.4.tgz", - "integrity": "sha512-+rabAZZ3Yn7tF/XPGHupKIL5EcAbrLxnTr/hgQICxbeuAfWtT0UZSfULE+ndusckBItcv4o6ZeOJplQikVcLvQ==", + "version": "14.14.35", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.35.tgz", + "integrity": "sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag==", "dev": true }, "@types/normalize-package-data": { @@ -15902,125 +16366,304 @@ "dev": true }, "@types/q": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", - "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", + "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", "dev": true }, + "@types/qs": { + "version": "6.9.6", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.6.tgz", + "integrity": "sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA==", + "dev": true + }, + "@types/range-parser": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", + "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==", + "dev": true + }, + "@types/serve-static": { + "version": "1.13.9", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.9.tgz", + "integrity": "sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA==", + "dev": true, + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@types/source-list-map": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", + "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", + "dev": true + }, + "@types/tapable": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.6.tgz", + "integrity": "sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA==", + "dev": true + }, + "@types/uglify-js": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.13.0.tgz", + "integrity": "sha512-EGkrJD5Uy+Pg0NUR8uA4bJ5WMfljyad0G+784vLCNUkD+QwOJXUbBYExXfVGf7YtyzdQp3L/XMYcliB987kL5Q==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@types/webpack": { + "version": "4.41.26", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.26.tgz", + "integrity": "sha512-7ZyTfxjCRwexh+EJFwRUM+CDB2XvgHl4vfuqf1ZKrgGvcS5BrNvPQqJh3tsZ0P6h6Aa1qClVHaJZszLPzpqHeA==", + "dev": true, + "requires": { + "@types/anymatch": "*", + "@types/node": "*", + "@types/tapable": "*", + "@types/uglify-js": "*", + "@types/webpack-sources": "*", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@types/webpack-dev-server": { + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/@types/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz", + "integrity": "sha512-13w1VhaghN+G1rYjkBPgN/GFRoHd9uI2fwK9cSKvLutdmZ22L9iicFEvt69by40DP2I6uNcClaGTyPY6nYhIgQ==", + "dev": true, + "requires": { + "@types/connect-history-api-fallback": "*", + "@types/express": "*", + "@types/serve-static": "*", + "@types/webpack": "*", + "http-proxy-middleware": "^1.0.0" + } + }, + "@types/webpack-sources": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-2.1.0.tgz", + "integrity": "sha512-LXn/oYIpBeucgP1EIJbKQ2/4ZmpvRl+dlrFdX7+94SKRUV3Evy3FsfMZY318vGhkWUS5MPhtOM3w1/hCOAOXcg==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, "@vue/babel-helper-vue-jsx-merge-props": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.0.0.tgz", - "integrity": "sha512-6tyf5Cqm4m6v7buITuwS+jHzPlIPxbFzEhXR5JGZpbrvOcp1hiQKckd305/3C7C36wFekNTQSxAtgeM0j0yoUw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.2.1.tgz", + "integrity": "sha512-QOi5OW45e2R20VygMSNhyQHvpdUwQZqGPc748JLGCYEy+yp8fNFNdbNIGAgZmi9e+2JHPd6i6idRuqivyicIkA==", "dev": true }, + "@vue/babel-helper-vue-transform-on": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz", + "integrity": "sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==", + "dev": true + }, + "@vue/babel-plugin-jsx": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.0.3.tgz", + "integrity": "sha512-+52ZQFmrM0yh61dQlgwQlfHZXmYbswbQEL25SOSt9QkjegAdfIGu87oELw0l8H6cuJYazZCiNjPR9eU++ZIbxg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "@vue/babel-helper-vue-transform-on": "^1.0.2", + "camelcase": "^6.0.0", + "html-tags": "^3.1.0", + "svg-tags": "^1.0.0" + } + }, "@vue/babel-plugin-transform-vue-jsx": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.1.2.tgz", - "integrity": "sha512-YfdaoSMvD1nj7+DsrwfTvTnhDXI7bsuh+Y5qWwvQXlD24uLgnsoww3qbiZvWf/EoviZMrvqkqN4CBw0W3BWUTQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.2.1.tgz", + "integrity": "sha512-HJuqwACYehQwh1fNT8f4kyzqlNMpBuUK4rSiSES5D4QsYncv5fxFsLyrxFPG2ksO7t5WP+Vgix6tt6yKClwPzA==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.0.0", "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", "html-tags": "^2.0.0", "lodash.kebabcase": "^4.1.1", "svg-tags": "^1.0.0" + }, + "dependencies": { + "html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", + "dev": true + } } }, "@vue/babel-preset-app": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-4.1.2.tgz", - "integrity": "sha512-M2vodPy1Wh0ZIlBf2MA3mhHvxuFp6dwx5nHxBSd4VpBdrgq4Jb0ECbGnNcH9RI2yNPfkoyiHmqOGDQoFGt+FUg==", + "version": "4.5.12", + "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-4.5.12.tgz", + "integrity": "sha512-8q67ORQ9O0Ms0nlqsXTVhaBefRBaLrzPxOewAZhdcO7onHwcO5/wRdWtHhZgfpCZlhY7NogkU16z3WnorSSkEA==", "dev": true, "requires": { - "@babel/core": "^7.7.4", - "@babel/helper-module-imports": "^7.7.4", - "@babel/plugin-proposal-class-properties": "^7.7.4", - "@babel/plugin-proposal-decorators": "^7.7.4", - "@babel/plugin-syntax-dynamic-import": "^7.7.4", - "@babel/plugin-syntax-jsx": "^7.7.4", - "@babel/plugin-transform-runtime": "^7.7.4", - "@babel/preset-env": "^7.7.4", - "@babel/runtime": "^7.7.4", - "@vue/babel-preset-jsx": "^1.1.2", - "babel-plugin-dynamic-import-node": "^2.2.0", - "core-js": "^3.4.4", - "core-js-compat": "^3.4.4" + "@babel/helper-compilation-targets": "^7.9.6", + "@babel/helper-module-imports": "^7.8.3", + "@babel/plugin-proposal-class-properties": "^7.8.3", + "@babel/plugin-proposal-decorators": "^7.8.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.11.0", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.0", + "@vue/babel-plugin-jsx": "^1.0.3", + "@vue/babel-preset-jsx": "^1.2.4", + "babel-plugin-dynamic-import-node": "^2.3.3", + "core-js-compat": "^3.6.5", + "semver": "^6.1.0" } }, "@vue/babel-preset-jsx": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@vue/babel-preset-jsx/-/babel-preset-jsx-1.1.2.tgz", - "integrity": "sha512-zDpVnFpeC9YXmvGIDSsKNdL7qCG2rA3gjywLYHPCKDT10erjxF4U+6ay9X6TW5fl4GsDlJp9bVfAVQAAVzxxvQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@vue/babel-preset-jsx/-/babel-preset-jsx-1.2.4.tgz", + "integrity": "sha512-oRVnmN2a77bYDJzeGSt92AuHXbkIxbf/XXSE3klINnh9AXBmVS1DGa1f0d+dDYpLfsAKElMnqKTQfKn7obcL4w==", "dev": true, "requires": { - "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", - "@vue/babel-plugin-transform-vue-jsx": "^1.1.2", - "@vue/babel-sugar-functional-vue": "^1.1.2", - "@vue/babel-sugar-inject-h": "^1.1.2", - "@vue/babel-sugar-v-model": "^1.1.2", - "@vue/babel-sugar-v-on": "^1.1.2" + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "@vue/babel-sugar-composition-api-inject-h": "^1.2.1", + "@vue/babel-sugar-composition-api-render-instance": "^1.2.4", + "@vue/babel-sugar-functional-vue": "^1.2.2", + "@vue/babel-sugar-inject-h": "^1.2.2", + "@vue/babel-sugar-v-model": "^1.2.3", + "@vue/babel-sugar-v-on": "^1.2.3" + } + }, + "@vue/babel-sugar-composition-api-inject-h": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.2.1.tgz", + "integrity": "sha512-4B3L5Z2G+7s+9Bwbf+zPIifkFNcKth7fQwekVbnOA3cr3Pq71q71goWr97sk4/yyzH8phfe5ODVzEjX7HU7ItQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-composition-api-render-instance": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.2.4.tgz", + "integrity": "sha512-joha4PZznQMsxQYXtR3MnTgCASC9u3zt9KfBxIeuI5g2gscpTsSKRDzWQt4aqNIpx6cv8On7/m6zmmovlNsG7Q==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" } }, "@vue/babel-sugar-functional-vue": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.1.2.tgz", - "integrity": "sha512-YhmdJQSVEFF5ETJXzrMpj0nkCXEa39TvVxJTuVjzvP2rgKhdMmQzlJuMv/HpadhZaRVMCCF3AEjjJcK5q/cYzQ==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.2.2.tgz", + "integrity": "sha512-JvbgGn1bjCLByIAU1VOoepHQ1vFsroSA/QkzdiSs657V79q6OwEWLCQtQnEXD/rLTA8rRit4rMOhFpbjRFm82w==", "dev": true, "requires": { "@babel/plugin-syntax-jsx": "^7.2.0" } }, "@vue/babel-sugar-inject-h": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.1.2.tgz", - "integrity": "sha512-VRSENdTvD5htpnVp7i7DNuChR5rVMcORdXjvv5HVvpdKHzDZAYiLSD+GhnhxLm3/dMuk8pSzV+k28ECkiN5m8w==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.2.2.tgz", + "integrity": "sha512-y8vTo00oRkzQTgufeotjCLPAvlhnpSkcHFEp60+LJUwygGcd5Chrpn5480AQp/thrxVm8m2ifAk0LyFel9oCnw==", "dev": true, "requires": { "@babel/plugin-syntax-jsx": "^7.2.0" } }, "@vue/babel-sugar-v-model": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.1.2.tgz", - "integrity": "sha512-vLXPvNq8vDtt0u9LqFdpGM9W9IWDmCmCyJXuozlq4F4UYVleXJ2Fa+3JsnTZNJcG+pLjjfnEGHci2339Kj5sGg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.2.3.tgz", + "integrity": "sha512-A2jxx87mySr/ulAsSSyYE8un6SIH0NWHiLaCWpodPCVOlQVODCaSpiR4+IMsmBr73haG+oeCuSvMOM+ttWUqRQ==", "dev": true, "requires": { "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", - "@vue/babel-plugin-transform-vue-jsx": "^1.1.2", + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", "camelcase": "^5.0.0", "html-tags": "^2.0.0", "svg-tags": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", + "dev": true + } } }, "@vue/babel-sugar-v-on": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.1.2.tgz", - "integrity": "sha512-T8ZCwC8Jp2uRtcZ88YwZtZXe7eQrJcfRq0uTFy6ShbwYJyz5qWskRFoVsdTi9o0WEhmQXxhQUewodOSCUPVmsQ==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.2.3.tgz", + "integrity": "sha512-kt12VJdz/37D3N3eglBywV8GStKNUhNrsxChXIV+o0MwVXORYuhDTHJRKPgLJRb/EY3vM2aRFQdxJBp9CLikjw==", "dev": true, "requires": { "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-plugin-transform-vue-jsx": "^1.1.2", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", "camelcase": "^5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } } }, "@vue/cli-overlay": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-4.1.2.tgz", - "integrity": "sha512-d+joLTtthj6l1JnCeFyJRKoISBQeqKZQY0EIYnJBcPPR3/dEKctMRkh5Sy1MR0H1JQQIko9CPrFjT/NHFW48Mg==", + "version": "4.5.12", + "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-4.5.12.tgz", + "integrity": "sha512-dCN0RzVpA8fp+MfjuVBROgM483MPObAb/je+APE/JhpCJyPQORYQEvNpmaorpN+9Cp6mrESVSzhh0qD4SFrlzg==", "dev": true }, "@vue/cli-plugin-babel": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-babel/-/cli-plugin-babel-4.1.2.tgz", - "integrity": "sha512-/j998Q16h8gbYcYf2sE+CYobCpIzDYtOJ76JuhJZnCfy5H8gh4g+x5fepbLs0gOW/cZ2OQxJFx7Jd/yT2/G/qQ==", + "version": "4.5.12", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-babel/-/cli-plugin-babel-4.5.12.tgz", + "integrity": "sha512-PhiNDhlGydsRR0F00OJqG/Q3Mz2G1ko8XqS7CJ0l1GVVGmklUEBy2dW/S8ntEgHpSkFa6h49PgYP3WE2OM3CEg==", "dev": true, "requires": { - "@babel/core": "^7.7.4", - "@vue/babel-preset-app": "^4.1.2", - "@vue/cli-shared-utils": "^4.1.2", - "babel-loader": "^8.0.6", + "@babel/core": "^7.11.0", + "@vue/babel-preset-app": "^4.5.12", + "@vue/cli-shared-utils": "^4.5.12", + "babel-loader": "^8.1.0", "cache-loader": "^4.1.0", "thread-loader": "^2.1.3", "webpack": "^4.0.0" @@ -16041,49 +16684,53 @@ } }, "@vue/cli-plugin-router": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-router/-/cli-plugin-router-4.1.2.tgz", - "integrity": "sha512-P1OwZfskUzs8KoQDozT+TfSKREMB8NpJ34raor8CiXtM80pdaNU+mO1HLOvl9ckaOWbAgNrxFmANiSBvHzSo+w==", + "version": "4.5.12", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-router/-/cli-plugin-router-4.5.12.tgz", + "integrity": "sha512-DYNz5AA3W7Ewt3aaiOLGdYFt4MX4w/HTEtep+kPzP9S9tAknzyoIJXkaYzhwu8ArpEYwhWgtuCcDZ8hR6++DbA==", "dev": true, "requires": { - "@vue/cli-shared-utils": "^4.1.2" + "@vue/cli-shared-utils": "^4.5.12" } }, "@vue/cli-plugin-vuex": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.1.2.tgz", - "integrity": "sha512-qsf8sfUUtTuFf24iB6vbdapvCTCt4FqLj7r66POutGWmBCTlPHsMaAXMaD2ZD53/hqr8QHd/557IUensSwj5wA==", - "dev": true + "version": "4.5.12", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.12.tgz", + "integrity": "sha512-STgbvNv/3iHAKArc18b/qjN7RX1FTrfxPeHH26GOr/A8lJes7+CSluZZ8E5R7Zr/vL0zOqOkUVDAjFXVf4zWQA==", + "dev": true, + "requires": {} }, "@vue/cli-service": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-4.1.2.tgz", - "integrity": "sha512-ljJ3qoR5NNHuG0HPqQyfO3xa4Ti5zCSmHp0tDYxgiVz1vMDvzPXBhGBGsc2Y1HH71BUyx3Ei+H7mWdML/+Bm9Q==", + "version": "4.5.12", + "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-4.5.12.tgz", + "integrity": "sha512-Di/dFw72HIvUrpTgnnPQkPq07mdd7z3GPeCH/o+6fv4bxOD+gwK9z7P6RkG4lGv2QdLz+qjim9f7xw5w+9ENkg==", "dev": true, "requires": { "@intervolga/optimize-cssnano-plugin": "^1.0.5", "@soda/friendly-errors-webpack-plugin": "^1.7.1", - "@vue/cli-overlay": "^4.1.2", - "@vue/cli-plugin-router": "^4.1.2", - "@vue/cli-plugin-vuex": "^4.1.2", - "@vue/cli-shared-utils": "^4.1.2", - "@vue/component-compiler-utils": "^3.0.2", + "@soda/get-current-script": "^1.0.0", + "@types/minimist": "^1.2.0", + "@types/webpack": "^4.0.0", + "@types/webpack-dev-server": "^3.11.0", + "@vue/cli-overlay": "^4.5.12", + "@vue/cli-plugin-router": "^4.5.12", + "@vue/cli-plugin-vuex": "^4.5.12", + "@vue/cli-shared-utils": "^4.5.12", + "@vue/component-compiler-utils": "^3.1.2", "@vue/preload-webpack-plugin": "^1.1.0", "@vue/web-component-wrapper": "^1.2.0", - "acorn": "^6.1.1", - "acorn-walk": "^6.1.1", + "acorn": "^7.4.0", + "acorn-walk": "^7.1.1", "address": "^1.1.2", - "autoprefixer": "^9.7.2", - "browserslist": "^4.7.3", + "autoprefixer": "^9.8.6", + "browserslist": "^4.12.0", "cache-loader": "^4.1.0", - "case-sensitive-paths-webpack-plugin": "^2.2.0", + "case-sensitive-paths-webpack-plugin": "^2.3.0", "cli-highlight": "^2.1.4", - "clipboardy": "^2.0.0", - "cliui": "^5.0.0", - "copy-webpack-plugin": "^5.0.5", - "css-loader": "^3.1.0", + "clipboardy": "^2.3.0", + "cliui": "^6.0.0", + "copy-webpack-plugin": "^5.1.1", + "css-loader": "^3.5.3", "cssnano": "^4.1.10", - "current-script-polyfill": "^1.0.0", "debug": "^4.1.1", "default-gateway": "^5.0.5", "dotenv": "^8.2.0", @@ -16091,304 +16738,29 @@ "file-loader": "^4.2.0", "fs-extra": "^7.0.1", "globby": "^9.2.0", - "hash-sum": "^1.0.2", + "hash-sum": "^2.0.0", "html-webpack-plugin": "^3.2.0", "launch-editor-middleware": "^2.2.1", "lodash.defaultsdeep": "^4.6.1", "lodash.mapvalues": "^4.6.0", "lodash.transform": "^4.6.0", - "mini-css-extract-plugin": "^0.8.0", - "minimist": "^1.2.0", - "portfinder": "^1.0.25", + "mini-css-extract-plugin": "^0.9.0", + "minimist": "^1.2.5", + "pnp-webpack-plugin": "^1.6.4", + "portfinder": "^1.0.26", "postcss-loader": "^3.0.0", - "read-pkg": "^5.1.1", "ssri": "^7.1.0", - "terser-webpack-plugin": "^2.2.1", + "terser-webpack-plugin": "^2.3.6", "thread-loader": "^2.1.3", "url-loader": "^2.2.0", - "vue-loader": "^15.7.2", - "vue-style-loader": "^4.1.0", + "vue-loader": "^15.9.2", + "vue-loader-v16": "npm:vue-loader@^16.1.0", + "vue-style-loader": "^4.1.2", "webpack": "^4.0.0", - "webpack-bundle-analyzer": "^3.6.0", - "webpack-chain": "^6.0.0", - "webpack-dev-server": "^3.9.0", + "webpack-bundle-analyzer": "^3.8.0", + "webpack-chain": "^6.4.0", + "webpack-dev-server": "^3.11.0", "webpack-merge": "^4.2.2" - }, - "dependencies": { - "acorn": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz", - "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==", - "dev": true - }, - "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "browserslist": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.2.tgz", - "integrity": "sha512-+M4oeaTplPm/f1pXDw84YohEv7B1i/2Aisei8s4s6k3QsoSHa7i5sz8u/cGQkkatCPxMASKxPualR4wwYgVboA==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001015", - "electron-to-chromium": "^1.3.322", - "node-releases": "^1.1.42" - } - }, - "cacache": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", - "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", - "dev": true, - "requires": { - "chownr": "^1.1.2", - "figgy-pudding": "^3.5.1", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.2", - "infer-owner": "^1.0.4", - "lru-cache": "^5.1.1", - "minipass": "^3.0.0", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "p-map": "^3.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^2.7.1", - "ssri": "^7.0.0", - "unique-filename": "^1.1.1" - } - }, - "caniuse-lite": { - "version": "1.0.30001017", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001017.tgz", - "integrity": "sha512-EDnZyOJ6eYh6lHmCvCdHAFbfV4KJ9lSdfv4h/ppEhrU/Yudkl7jujwMZ1we6RX7DXqBfT04pVMQ4J+1wcTlsKA==", - "dev": true - }, - "chownr": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", - "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==", - "dev": true - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.322", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.322.tgz", - "integrity": "sha512-Tc8JQEfGQ1MzfSzI/bTlSr7btJv/FFO7Yh6tanqVmIWOuNCu6/D1MilIEgLtmWqIrsv+o4IjpLAhgMBr/ncNAA==", - "dev": true - }, - "find-cache-dir": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.2.0.tgz", - "integrity": "sha512-1JKclkYYsf1q9WIJKLZa9S9muC+08RIjzAlLrK4QcYLJMS6mk9yombQ9qf+zJ7H9LS800k0s44L4sDq9VYzqyg==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.0", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "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" - } - }, - "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", - "dev": true - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "make-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz", - "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "node-releases": { - "version": "1.1.44", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.44.tgz", - "integrity": "sha512-NwbdvJyR7nrcGrXvKAvzc5raj/NkoJudkarh2yIpJ4t0NH4aqjUDz/486P+ynIW5eokKOfzGNRdYoLfBlomruw==", - "dev": true, - "requires": { - "semver": "^6.3.0" - } - }, - "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "schema-utils": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.1.tgz", - "integrity": "sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg==", - "dev": true, - "requires": { - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "serialize-javascript": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", - "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", - "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "ssri": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", - "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", - "dev": true, - "requires": { - "figgy-pudding": "^3.5.1", - "minipass": "^3.1.1" - } - }, - "terser": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.4.3.tgz", - "integrity": "sha512-0ikKraVtRDKGzHrzkCv5rUNDzqlhmhowOBqC0XqUHFpW+vJ45+20/IFBcebwKfiS2Z9fJin6Eo+F1zLZsxi8RA==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - } - }, - "terser-webpack-plugin": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.1.tgz", - "integrity": "sha512-dNxivOXmDgZqrGxOttBH6B4xaxT4zNC+Xd+2K8jwGDMK5q2CZI+KZMA1AAnSRT+BTRvuzKsDx+fpxzPAmAMVcA==", - "dev": true, - "requires": { - "cacache": "^13.0.1", - "find-cache-dir": "^3.2.0", - "jest-worker": "^24.9.0", - "schema-utils": "^2.6.1", - "serialize-javascript": "^2.1.2", - "source-map": "^0.6.1", - "terser": "^4.4.3", - "webpack-sources": "^1.4.3" - } - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - } } }, "@vue/cli-shared-utils": { @@ -16417,23 +16789,6 @@ "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, "strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", @@ -16446,9 +16801,9 @@ } }, "@vue/component-compiler-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.1.0.tgz", - "integrity": "sha512-OJ7swvl8LtKtX5aYP8jHhO6fQBIRIGkU6rvWzK+CGJiNOnvg16nzcBkd9qMZzW8trI2AsqAKx263nv7kb5rhZw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.2.0.tgz", + "integrity": "sha512-lejBLa7xAMsfiZfNp7Kv51zOzifnb29FwdnMLa96z26kXErPFioSf9BMcePVIQ6/Gc6/mC0UrPpxAWIHyae0vw==", "dev": true, "requires": { "consolidate": "^0.15.1", @@ -16456,12 +16811,18 @@ "lru-cache": "^4.1.2", "merge-source-map": "^1.1.0", "postcss": "^7.0.14", - "postcss-selector-parser": "^5.0.0", + "postcss-selector-parser": "^6.0.2", "prettier": "^1.18.2", "source-map": "~0.6.1", "vue-template-es2015-compiler": "^1.9.0" }, "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + }, "lru-cache": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", @@ -16476,7 +16837,8 @@ "version": "1.19.1", "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", - "dev": true + "dev": true, + "optional": true }, "source-map": { "version": "0.6.1", @@ -16502,187 +16864,191 @@ } }, "@vue/preload-webpack-plugin": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.1.tgz", - "integrity": "sha512-8VCoJeeH8tCkzhkpfOkt+abALQkS11OIHhte5MBzYaKMTqK0A3ZAKEUVAffsOklhEv7t0yrQt696Opnu9oAx+w==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.2.tgz", + "integrity": "sha512-LIZMuJk38pk9U9Ur4YzHjlIyMuxPlACdBIHH9/nGYVTsaGKOSnSuELiE8vS9wa+dJpIYspYUOqk+L1Q4pgHQHQ==", + "dev": true, + "requires": {} }, "@vue/web-component-wrapper": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@vue/web-component-wrapper/-/web-component-wrapper-1.2.0.tgz", - "integrity": "sha512-Xn/+vdm9CjuC9p3Ae+lTClNutrVhsXpzxvoTXXtoys6kVRX9FkueSUAqSWAyZntmVLlR4DosBV4pH8y5Z/HbUw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz", + "integrity": "sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==", "dev": true }, "@webassemblyjs/ast": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.11.tgz", - "integrity": "sha512-ZEzy4vjvTzScC+SH8RBssQUawpaInUdMTYwYYLh54/s8TuT0gBLuyUnppKsVyZEi876VmmStKsUs28UxPgdvrA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", "dev": true, "requires": { - "@webassemblyjs/helper-module-context": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/wast-parser": "1.7.11" + "@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": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz", - "integrity": "sha512-zY8dSNyYcgzNRNT666/zOoAyImshm3ycKdoLsyDw/Bwo6+/uktb7p4xyApuef1dwEBo/U/SYQzbGBvV+nru2Xg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz", - "integrity": "sha512-7r1qXLmiglC+wPNkGuXCvkmalyEstKVwcueZRP2GNC2PAvxbLYwLLPr14rcdJaE4UtHxQKfFkuDFuv91ipqvXg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz", - "integrity": "sha512-MynuervdylPPh3ix+mKZloTcL06P8tenNH3sx6s0qE8SLR6DdwnfgA7Hc9NSYeob2jrW5Vql6GVlsQzKQCa13w==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", "dev": true }, "@webassemblyjs/helper-code-frame": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz", - "integrity": "sha512-T8ESC9KMXFTXA5urJcyor5cn6qWeZ4/zLPyWeEXZ03hj/x9weSokGNkVCdnhSabKGYWxElSdgJ+sFa9G/RdHNw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", "dev": true, "requires": { - "@webassemblyjs/wast-printer": "1.7.11" + "@webassemblyjs/wast-printer": "1.9.0" } }, "@webassemblyjs/helper-fsm": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz", - "integrity": "sha512-nsAQWNP1+8Z6tkzdYlXT0kxfa2Z1tRTARd8wYnc/e3Zv3VydVVnaeePgqUzFrpkGUyhUUxOl5ML7f1NuT+gC0A==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", "dev": true }, "@webassemblyjs/helper-module-context": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz", - "integrity": "sha512-JxfD5DX8Ygq4PvXDucq0M+sbUFA7BJAv/GGl9ITovqE+idGX+J3QSzJYz+LwQmL7fC3Rs+utvWoJxDb6pmC0qg==", - "dev": true + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0" + } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz", - "integrity": "sha512-cMXeVS9rhoXsI9LLL4tJxBgVD/KMOKXuFqYb5oCJ/opScWpkCMEz9EJtkonaNcnLv2R3K5jIeS4TRj/drde1JQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz", - "integrity": "sha512-8ZRY5iZbZdtNFE5UFunB8mmBEAbSI3guwbrsCl4fWdfRiAcvqQpeqd5KHhSWLL5wuxo53zcaGZDBU64qgn4I4Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-buffer": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/wasm-gen": "1.7.11" + "@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": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz", - "integrity": "sha512-Mmqx/cS68K1tSrvRLtaV/Lp3NZWzXtOHUW2IvDvl2sihAwJh4ACE0eL6A8FvMyDG9abes3saB6dMimLOs+HMoQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.7.11.tgz", - "integrity": "sha512-vuGmgZjjp3zjcerQg+JA+tGOncOnJLWVkt8Aze5eWQLwTQGNgVLcyOTqgSCxWTR4J42ijHbBxnuRaL1Rv7XMdw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", "dev": true, "requires": { - "@xtuc/long": "4.2.1" + "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.7.11.tgz", - "integrity": "sha512-C6GFkc7aErQIAH+BMrIdVSmW+6HSe20wg57HEC1uqJP8E/xpMjXqQUxkQw07MhNDSDcGpxI9G5JSNOQCqJk4sA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz", - "integrity": "sha512-FUd97guNGsCZQgeTPKdgxJhBXkUbMTY6hFPf2Y4OedXd48H97J+sOY2Ltaq6WGVpIH8o/TGOVNiVz/SbpEMJGg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-buffer": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/helper-wasm-section": "1.7.11", - "@webassemblyjs/wasm-gen": "1.7.11", - "@webassemblyjs/wasm-opt": "1.7.11", - "@webassemblyjs/wasm-parser": "1.7.11", - "@webassemblyjs/wast-printer": "1.7.11" + "@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": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz", - "integrity": "sha512-U/KDYp7fgAZX5KPfq4NOupK/BmhDc5Kjy2GIqstMhvvdJRcER/kUsMThpWeRP8BMn4LXaKhSTggIJPOeYHwISA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/ieee754": "1.7.11", - "@webassemblyjs/leb128": "1.7.11", - "@webassemblyjs/utf8": "1.7.11" + "@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": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz", - "integrity": "sha512-XynkOwQyiRidh0GLua7SkeHvAPXQV/RxsUeERILmAInZegApOUAIJfRuPYe2F7RcjOC9tW3Cb9juPvAC/sCqvg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-buffer": "1.7.11", - "@webassemblyjs/wasm-gen": "1.7.11", - "@webassemblyjs/wasm-parser": "1.7.11" + "@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": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz", - "integrity": "sha512-6lmXRTrrZjYD8Ng8xRyvyXQJYUQKYSXhJqXOBLw24rdiXsHAOlvw5PhesjdcaMadU/pyPQOJ5dHreMjBxwnQKg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-api-error": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/ieee754": "1.7.11", - "@webassemblyjs/leb128": "1.7.11", - "@webassemblyjs/utf8": "1.7.11" + "@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": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz", - "integrity": "sha512-lEyVCg2np15tS+dm7+JJTNhNWq9yTZvi3qEhAIIOaofcYlUp0UR5/tVqOwa/gXYr3gjwSZqw+/lS9dscyLelbQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/floating-point-hex-parser": "1.7.11", - "@webassemblyjs/helper-api-error": "1.7.11", - "@webassemblyjs/helper-code-frame": "1.7.11", - "@webassemblyjs/helper-fsm": "1.7.11", - "@xtuc/long": "4.2.1" + "@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": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz", - "integrity": "sha512-m5vkAsuJ32QpkdkDOUPGSltrg8Cuk3KBx4YrmAGQwCZPRdUHXxG4phIOuuycLemHFr74sWL9Wthqss4fzdzSwg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/wast-parser": "1.7.11", - "@xtuc/long": "4.2.1" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" } }, "@xtuc/ieee754": { @@ -16692,9 +17058,9 @@ "dev": true }, "@xtuc/long": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.1.tgz", - "integrity": "sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, "accepts": { @@ -16705,55 +17071,30 @@ "requires": { "mime-types": "~2.1.24", "negotiator": "0.6.2" - }, - "dependencies": { - "mime-db": { - "version": "1.42.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz", - "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==", - "dev": true - }, - "mime-types": { - "version": "2.1.25", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz", - "integrity": "sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==", - "dev": true, - "requires": { - "mime-db": "1.42.0" - } - } } }, "ace-builds": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.4.7.tgz", - "integrity": "sha512-gwQGVFewBopRLho08BfahyvRa9FlB43JUig5ItAKTYc9kJJsbA9QNz75p28QtQomoPQ9rJx82ymL21x4ZSZmdg==" + "version": "1.4.12", + "resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.4.12.tgz", + "integrity": "sha512-G+chJctFPiiLGvs3+/Mly3apXTcfgE45dT5yp12BcWZ1kUs+gm0qd3/fv4gsz6fVag4mM0moHVpjHDIgph6Psg==" }, "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true }, - "acorn-dynamic-import": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", - "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", - "dev": true, - "requires": { - "acorn": "^5.0.0" - } - }, "acorn-jsx": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz", - "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==", - "dev": true + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true, + "requires": {} }, "acorn-walk": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", - "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", "dev": true }, "address": { @@ -16763,9 +17104,9 @@ "dev": true }, "aggregate-error": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", - "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, "requires": { "clean-stack": "^2.0.0", @@ -16773,12 +17114,12 @@ } }, "ajv": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz", - "integrity": "sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" @@ -16788,13 +17129,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true + "dev": true, + "requires": {} }, "ajv-keywords": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", - "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", - "dev": true + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} }, "alphanum-sort": { "version": "1.0.2", @@ -16809,20 +17152,12 @@ "dev": true }, "ansi-escapes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz", - "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", "dev": true, "requires": { - "type-fest": "^0.8.1" - }, - "dependencies": { - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - } + "type-fest": "^0.11.0" } }, "ansi-html": { @@ -16832,9 +17167,9 @@ "dev": true }, "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, "ansi-styles": { @@ -16853,24 +17188,14 @@ "dev": true }, "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", "dev": true, + "optional": true, "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" } }, "aproba": { @@ -16880,9 +17205,9 @@ "dev": true }, "arch": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.1.tgz", - "integrity": "sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", "dev": true }, "argparse": { @@ -16912,30 +17237,12 @@ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, - "array-filter": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", - "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", - "dev": true - }, "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", "dev": true }, - "array-map": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", - "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", - "dev": true - }, - "array-reduce": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", - "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", - "dev": true - }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", @@ -16967,22 +17274,32 @@ } }, "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", "dev": true, "requires": { "bn.js": "^4.0.0", "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } } }, "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", "dev": true, "requires": { + "object-assign": "^4.1.1", "util": "0.10.3" }, "dependencies": { @@ -17031,9 +17348,9 @@ } }, "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", "dev": true }, "async-limiter": { @@ -17055,75 +17372,18 @@ "dev": true }, "autoprefixer": { - "version": "9.7.3", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.3.tgz", - "integrity": "sha512-8T5Y1C5Iyj6PgkPSFd0ODvK9DIleuPKUPYniNxybS47g2k2wFgLZ46lGQHlBuGKIAEV8fbCDfKCCRS1tvOgc3Q==", + "version": "9.8.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", + "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", "dev": true, "requires": { - "browserslist": "^4.8.0", - "caniuse-lite": "^1.0.30001012", - "chalk": "^2.4.2", + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "colorette": "^1.2.1", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", - "postcss": "^7.0.23", - "postcss-value-parser": "^4.0.2" - }, - "dependencies": { - "browserslist": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.2.tgz", - "integrity": "sha512-+M4oeaTplPm/f1pXDw84YohEv7B1i/2Aisei8s4s6k3QsoSHa7i5sz8u/cGQkkatCPxMASKxPualR4wwYgVboA==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001015", - "electron-to-chromium": "^1.3.322", - "node-releases": "^1.1.42" - } - }, - "caniuse-lite": { - "version": "1.0.30001017", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001017.tgz", - "integrity": "sha512-EDnZyOJ6eYh6lHmCvCdHAFbfV4KJ9lSdfv4h/ppEhrU/Yudkl7jujwMZ1we6RX7DXqBfT04pVMQ4J+1wcTlsKA==", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "electron-to-chromium": { - "version": "1.3.322", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.322.tgz", - "integrity": "sha512-Tc8JQEfGQ1MzfSzI/bTlSr7btJv/FFO7Yh6tanqVmIWOuNCu6/D1MilIEgLtmWqIrsv+o4IjpLAhgMBr/ncNAA==", - "dev": true - }, - "node-releases": { - "version": "1.1.44", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.44.tgz", - "integrity": "sha512-NwbdvJyR7nrcGrXvKAvzc5raj/NkoJudkarh2yIpJ4t0NH4aqjUDz/486P+ynIW5eokKOfzGNRdYoLfBlomruw==", - "dev": true, - "requires": { - "semver": "^6.3.0" - } - }, - "postcss-value-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz", - "integrity": "sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ==", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" } }, "aws-sign2": { @@ -17133,9 +17393,9 @@ "dev": true }, "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", "dev": true }, "babel-eslint": { @@ -17150,48 +17410,59 @@ "@babel/types": "^7.7.0", "eslint-visitor-keys": "^1.0.0", "resolve": "^1.12.0" - }, - "dependencies": { - "resolve": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", - "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - } } }, "babel-loader": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz", - "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==", + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", + "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==", "dev": true, "requires": { - "find-cache-dir": "^2.0.0", - "loader-utils": "^1.0.2", - "mkdirp": "^0.5.1", - "pify": "^4.0.1" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - } + "find-cache-dir": "^3.3.1", + "loader-utils": "^1.4.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" } }, "babel-plugin-dynamic-import-node": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", - "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "dev": true, "requires": { "object.assign": "^4.1.0" } }, + "babel-plugin-polyfill-corejs2": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz", + "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.0", + "@babel/helper-define-polyfill-provider": "^0.1.5", + "semver": "^6.1.1" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", + "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.1.5", + "core-js-compat": "^3.8.1" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz", + "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.1.5" + } + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -17221,42 +17492,13 @@ "requires": { "is-descriptor": "^1.0.0" } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } } } }, "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "dev": true }, "batch": { @@ -17284,14 +17526,6 @@ "check-types": "^8.0.3", "hoopy": "^0.1.4", "tryer": "^1.0.1" - }, - "dependencies": { - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - } } }, "big.js": { @@ -17301,21 +17535,32 @@ "dev": true }, "binary-extensions": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", - "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==", - "dev": true + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "optional": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } }, "bluebird": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", - "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true }, "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", "dev": true }, "body-parser": { @@ -17423,6 +17668,12 @@ "requires": { "is-extendable": "^0.1.0" } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true } } }, @@ -17470,28 +17721,49 @@ } }, "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", "dev": true, "requires": { - "bn.js": "^4.1.0", + "bn.js": "^5.0.0", "randombytes": "^2.0.1" } }, "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", "dev": true, "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } } }, "browserify-zlib": { @@ -17504,20 +17776,22 @@ } }, "browserslist": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.1.tgz", - "integrity": "sha512-QtULFqKIAtiyNx7NhZ/p4rB8m3xDozVo/pi5VgTlADLF2tNigz/QH+v0m5qhn7XfHT7u+607NcCNOnC0HZAlMg==", + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", + "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30000999", - "electron-to-chromium": "^1.3.284", - "node-releases": "^1.1.36" + "caniuse-lite": "^1.0.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "node-releases": "^1.1.70" } }, "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", "dev": true, "requires": { "base64-js": "^1.0.2", @@ -17562,9 +17836,9 @@ "dev": true }, "cacache": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", - "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", "dev": true, "requires": { "bluebird": "^3.5.5", @@ -17584,24 +17858,13 @@ "y18n": "^4.0.0" }, "dependencies": { - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", "dev": true, "requires": { - "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" + "figgy-pudding": "^3.5.1" } } } @@ -17635,114 +17898,16 @@ "mkdirp": "^0.5.1", "neo-async": "^2.6.1", "schema-utils": "^2.0.0" - }, - "dependencies": { - "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "find-cache-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.0.0.tgz", - "integrity": "sha512-t7ulV1fmbxh5G9l/492O1p5+EBbr3uwpt6odhFTMc+nWyhmbloe+ja9BZ8pIBtqFWhOmCWVjx+pTW4zDkFoclw==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.0", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "make-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz", - "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", - "dev": true - }, - "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "schema-utils": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.5.0.tgz", - "integrity": "sha512-32ISrwW2scPXHUSusP8qMg5dLUawKkyV+/qIEV9JdXKx+rsM6mi8vZY8khg2M69Qom16rtroWXD3Ybtiws38gQ==", - "dev": true, - "requires": { - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" } }, "call-me-maybe": { @@ -17786,9 +17951,9 @@ } }, "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", "dev": true }, "caniuse-api": { @@ -17804,15 +17969,15 @@ } }, "caniuse-lite": { - "version": "1.0.30001002", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001002.tgz", - "integrity": "sha512-pRuxPE8wdrWmVPKcDmJJiGBxr6lFJq4ivdSeo9FTmGj5Rb8NX3Mby2pARG57MXF15hYAhZ0nHV5XxT2ig4bz3g==", + "version": "1.0.30001203", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001203.tgz", + "integrity": "sha512-/I9tvnzU/PHMH7wBPrfDMSuecDeUKerjCPX7D0xBbaJZPxoT9m+yYxt0zCTkcijCkjTdim3H56Zm0i5Adxch4w==", "dev": true }, "case-sensitive-paths-webpack-plugin": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.2.0.tgz", - "integrity": "sha512-u5ElzokS8A1pm9vM3/iDgTcI3xqHxuCao94Oz8etI3cf0Tio0p8izkDYbTIn09uP3yUUr6+veaE6IkjnTYS46g==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", + "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", "dev": true }, "caseless": { @@ -17822,9 +17987,9 @@ "dev": true }, "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", @@ -17845,47 +18010,81 @@ "dev": true }, "chokidar": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", - "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", "dev": true, + "optional": true, "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.0", - "braces": "^2.3.0", - "fsevents": "^1.2.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "lodash.debounce": "^4.0.8", - "normalize-path": "^2.1.1", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0", - "upath": "^1.0.5" + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.3.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" }, "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, + "optional": true, "requires": { - "remove-trailing-separator": "^1.0.1" + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "optional": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "optional": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "optional": true, + "requires": { + "is-number": "^7.0.0" } } } }, "chownr": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", - "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "dev": true }, "chrome-trace-event": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz", - "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -17927,13 +18126,70 @@ "requires": { "is-descriptor": "^0.1.0" } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true } } }, "clean-css": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", - "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", + "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", "dev": true, "requires": { "source-map": "~0.6.0" @@ -17954,42 +18210,41 @@ "dev": true }, "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, "requires": { - "restore-cursor": "^2.0.0" + "restore-cursor": "^3.1.0" } }, "cli-highlight": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.4.tgz", - "integrity": "sha512-s7Zofobm20qriqDoU9sXptQx0t2R9PEgac92mENNm7xaEe1hn71IIMsXMK+6encA6WRCWWxIGQbipr3q998tlQ==", + "version": "2.1.10", + "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.10.tgz", + "integrity": "sha512-CcPFD3JwdQ2oSzy+AMG6j3LRTkNjM82kzcSKzoVw6cLanDCJNlsLjeqVTOTfOfucnWv5F0rmBemVf1m9JiIasw==", "dev": true, "requires": { - "chalk": "^3.0.0", - "highlight.js": "^9.6.0", + "chalk": "^4.0.0", + "highlight.js": "^10.0.0", "mz": "^2.4.0", "parse5": "^5.1.1", - "parse5-htmlparser2-tree-adapter": "^5.1.1", - "yargs": "^15.0.0" + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" }, "dependencies": { "ansi-styles": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.0.tgz", - "integrity": "sha512-7kFQgnEaMdRtwf6uSfUnVr9gSGC7faurn+J/Mv90/W+iTtN0405/nLdopfMWwchyxhbGYl6TC4Sccn9TUkGAgg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "@types/color-name": "^1.1.1", "color-convert": "^2.0.1" } }, "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -18018,9 +18273,9 @@ "dev": true }, "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -18029,9 +18284,9 @@ } }, "cli-spinners": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.1.0.tgz", - "integrity": "sha512-8B00fJOEh1HPrx4fo5eW16XmE1PcL1tGpGrxy63CXGP9nHdPBN63X75hA1zhvQuhVztJWLqV58Roj2qlNM7cAA==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.0.tgz", + "integrity": "sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q==", "dev": true }, "cli-width": { @@ -18041,9 +18296,9 @@ "dev": true }, "clipboard": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.4.tgz", - "integrity": "sha512-Vw26VSLRpJfBofiVaFb/I8PVfdI1OxKcYShe6fm0sP/DtmiWQNCjhM/okTvdCo0G+lMMm1rMYbk4IK4x1X+kgQ==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.8.tgz", + "integrity": "sha512-Y6WO0unAIQp5bLmk1zdThRhgJt/x3ks6f30s3oE3H1mgIEU33XyQjEf8gsf6DxC7NPX8Y1SsNWjUjL/ywLnnbQ==", "requires": { "good-listener": "^1.2.2", "select": "^1.1.2", @@ -18051,61 +18306,57 @@ } }, "clipboardy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.1.0.tgz", - "integrity": "sha512-2pzOUxWcLlXWtn+Jd6js3o12TysNOOVes/aQfg+MT/35vrxWzedHlLwyoJpXjsFKWm95BTNEcMGD9+a7mKzZkQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", + "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", "dev": true, "requires": { "arch": "^2.1.1", - "execa": "^1.0.0" + "execa": "^1.0.0", + "is-wsl": "^2.1.1" } }, "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" } }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "ansi-regex": "^5.0.0" } } } @@ -18127,12 +18378,6 @@ "q": "^1.1.2" } }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -18144,13 +18389,13 @@ } }, "color": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", - "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", + "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", "dev": true, "requires": { "color-convert": "^1.9.1", - "color-string": "^1.5.2" + "color-string": "^1.5.4" } }, "color-convert": { @@ -18169,19 +18414,25 @@ "dev": true }, "color-string": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", - "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.5.tgz", + "integrity": "sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg==", "dev": true, "requires": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" } }, + "colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "dev": true + }, "combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "requires": { "delayed-stream": "~1.0.0" @@ -18200,26 +18451,18 @@ "dev": true }, "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", "dev": true }, "compressible": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz", - "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==", + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dev": true, "requires": { - "mime-db": ">= 1.40.0 < 2" - }, - "dependencies": { - "mime-db": { - "version": "1.42.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz", - "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==", - "dev": true - } + "mime-db": ">= 1.43.0 < 2" } }, "compression": { @@ -18285,13 +18528,10 @@ "dev": true }, "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "requires": { - "date-now": "^0.1.4" - } + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true }, "consolidate": { "version": "0.15.1", @@ -18365,9 +18605,9 @@ "dev": true }, "copy-webpack-plugin": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz", - "integrity": "sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz", + "integrity": "sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ==", "dev": true, "requires": { "cacache": "^12.0.3", @@ -18380,7 +18620,7 @@ "normalize-path": "^3.0.0", "p-limit": "^2.2.1", "schema-utils": "^1.0.0", - "serialize-javascript": "^2.1.2", + "serialize-javascript": "^4.0.0", "webpack-log": "^2.0.0" }, "dependencies": { @@ -18395,6 +18635,15 @@ "pkg-dir": "^3.0.0" } }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, "globby": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", @@ -18417,13 +18666,20 @@ } } }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { - "is-extglob": "^2.1.1" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } }, "make-dir": { @@ -18436,25 +18692,45 @@ "semver": "^5.6.0" } }, - "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "p-try": "^2.0.0" + "p-limit": "^2.0.0" } }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true }, - "serialize-javascript": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", - "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true }, "slash": { @@ -18466,61 +18742,20 @@ } }, "core-js": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.1.tgz", - "integrity": "sha512-186WjSik2iTGfDjfdCZAxv2ormxtKgemjC3SI6PL31qOA0j5LhTDVjHChccoc7brwLvpvLPiMyRlcO88C4l1QQ==", - "dev": true + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.9.1.tgz", + "integrity": "sha512-gSjRvzkxQc1zjM/5paAmL4idJBFzuJoo+jDjF1tStYFMV2ERfD02HhahhCGXUyHxQRG4yFKVSdO6g62eoRMcDg==" }, "core-js-compat": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.1.tgz", - "integrity": "sha512-2Tl1EuxZo94QS2VeH28Ebf5g3xbPZG/hj/N5HDDy4XMP/ImR0JIer/nggQRiMN91Q54JVkGbytf42wO29oXVHg==", + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.9.1.tgz", + "integrity": "sha512-jXAirMQxrkbiiLsCx9bQPJFA6llDadKMpYrBJQJ3/c4/vsPP/fAf29h24tviRlvwUL6AmY5CHLu2GvjuYviQqA==", "dev": true, "requires": { - "browserslist": "^4.8.2", + "browserslist": "^4.16.3", "semver": "7.0.0" }, "dependencies": { - "browserslist": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.2.tgz", - "integrity": "sha512-+M4oeaTplPm/f1pXDw84YohEv7B1i/2Aisei8s4s6k3QsoSHa7i5sz8u/cGQkkatCPxMASKxPualR4wwYgVboA==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001015", - "electron-to-chromium": "^1.3.322", - "node-releases": "^1.1.42" - } - }, - "caniuse-lite": { - "version": "1.0.30001017", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001017.tgz", - "integrity": "sha512-EDnZyOJ6eYh6lHmCvCdHAFbfV4KJ9lSdfv4h/ppEhrU/Yudkl7jujwMZ1we6RX7DXqBfT04pVMQ4J+1wcTlsKA==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.322", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.322.tgz", - "integrity": "sha512-Tc8JQEfGQ1MzfSzI/bTlSr7btJv/FFO7Yh6tanqVmIWOuNCu6/D1MilIEgLtmWqIrsv+o4IjpLAhgMBr/ncNAA==", - "dev": true - }, - "node-releases": { - "version": "1.1.44", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.44.tgz", - "integrity": "sha512-NwbdvJyR7nrcGrXvKAvzc5raj/NkoJudkarh2yIpJ4t0NH4aqjUDz/486P+ynIW5eokKOfzGNRdYoLfBlomruw==", - "dev": true, - "requires": { - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, "semver": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", @@ -18548,13 +18783,21 @@ } }, "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", "dev": true, "requires": { "bn.js": "^4.1.0", - "elliptic": "^6.0.0" + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } } }, "create-hash": { @@ -18595,6 +18838,14 @@ "semver": "^5.5.0", "shebang-command": "^1.2.0", "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, "crypto-browserify": { @@ -18633,9 +18884,9 @@ } }, "css-loader": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.4.0.tgz", - "integrity": "sha512-JornYo4RAXl1Mzt0lOSVPmArzAMV3rGY2VuwtaDc732WTWjdwTaeS19nCGWMcSCf305Q396lhhDAJEWWM0SgPQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz", + "integrity": "sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==", "dev": true, "requires": { "camelcase": "^5.3.1", @@ -18643,48 +18894,21 @@ "icss-utils": "^4.1.1", "loader-utils": "^1.2.3", "normalize-path": "^3.0.0", - "postcss": "^7.0.23", + "postcss": "^7.0.32", "postcss-modules-extract-imports": "^2.0.0", "postcss-modules-local-by-default": "^3.0.2", - "postcss-modules-scope": "^2.1.1", + "postcss-modules-scope": "^2.2.0", "postcss-modules-values": "^3.0.0", - "postcss-value-parser": "^4.0.2", - "schema-utils": "^2.6.0" + "postcss-value-parser": "^4.1.0", + "schema-utils": "^2.7.0", + "semver": "^6.3.0" }, "dependencies": { - "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true - }, - "postcss-value-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz", - "integrity": "sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ==", - "dev": true - }, - "schema-utils": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.1.tgz", - "integrity": "sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg==", - "dev": true, - "requires": { - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1" - } } } }, @@ -18724,22 +18948,16 @@ } } }, - "css-unit-converter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.1.tgz", - "integrity": "sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=", - "dev": true - }, "css-what": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.2.1.tgz", - "integrity": "sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", "dev": true }, "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true }, "cssnano": { @@ -18820,24 +19038,42 @@ "dev": true }, "csso": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.2.tgz", - "integrity": "sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", "dev": true, "requires": { - "css-tree": "1.0.0-alpha.37" + "css-tree": "^1.1.2" + }, + "dependencies": { + "css-tree": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.2.tgz", + "integrity": "sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ==", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, - "current-script-polyfill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/current-script-polyfill/-/current-script-polyfill-1.0.0.tgz", - "integrity": "sha1-8xz35PPiGLBybnOMqSoC00iO9hU=", - "dev": true - }, "cyclist": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", - "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", "dev": true }, "dashdash": { @@ -18849,12 +19085,6 @@ "assert-plus": "^1.0.0" } }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, "de-indent": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", @@ -18862,12 +19092,12 @@ "dev": true }, "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "decamelize": { @@ -18894,14 +19124,6 @@ "object-is": "^1.0.1", "object-keys": "^1.1.1", "regexp.prototype.flags": "^1.2.0" - }, - "dependencies": { - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - } } }, "deep-is": { @@ -18926,9 +19148,9 @@ }, "dependencies": { "cross-spawn": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", - "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "requires": { "path-key": "^3.1.0", @@ -18955,9 +19177,9 @@ } }, "get-stream": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", - "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, "requires": { "pump": "^3.0.0" @@ -18969,12 +19191,6 @@ "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", "dev": true }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, "npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -18984,15 +19200,6 @@ "path-key": "^3.0.0" } }, - "onetime": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, "p-finally": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", @@ -19057,37 +19264,6 @@ "requires": { "is-descriptor": "^1.0.2", "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } } }, "del": { @@ -19125,18 +19301,6 @@ "dev": true } } - }, - "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true } } }, @@ -19158,9 +19322,9 @@ "dev": true }, "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", "dev": true, "requires": { "inherits": "^2.0.1", @@ -19174,9 +19338,9 @@ "dev": true }, "detect-node": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", - "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.5.tgz", + "integrity": "sha512-qi86tE6hRcFHy8jI1m2VG+LaPUR1LhqDa5G8tVjuUXmOrpuAgqsA1pN0+ldgr3aKUH+QLI9hCY/OcRYisERejw==", "dev": true }, "diffie-hellman": { @@ -19188,6 +19352,14 @@ "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } } }, "dir-glob": { @@ -19253,9 +19425,9 @@ }, "dependencies": { "domelementtype": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", - "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", + "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==", "dev": true } } @@ -19292,12 +19464,12 @@ } }, "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dev": true, "requires": { - "is-obj": "^1.0.0" + "is-obj": "^2.0.0" } }, "dotenv": { @@ -19313,15 +19485,15 @@ "dev": true }, "duplexer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", "dev": true }, "duplexify": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", - "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", "dev": true, "requires": { "end-of-stream": "^1.0.0", @@ -19331,9 +19503,9 @@ } }, "easy-stack": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.0.tgz", - "integrity": "sha1-EskbMIWjfwuqM26UhurEv5Tj54g=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.1.tgz", + "integrity": "sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==", "dev": true }, "ecc-jsbn": { @@ -19359,36 +19531,44 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.293", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.293.tgz", - "integrity": "sha512-DQSBRuU2Z1vG+CEWUIfCEVMHtuaGlhVojzg39mX5dx7PLSFDJ7DSrGUWzaPFFgWR1jo26hj1nXXRQZvFwk7F8w==", + "version": "1.3.693", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.693.tgz", + "integrity": "sha512-vUdsE8yyeu30RecppQtI+XTz2++LWLVEIYmzeCaCRLSdtKZ2eXqdJcrs85KwLiPOPVc6PELgWyXBsfqIvzGZag==", "dev": true }, "elliptic": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", - "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "dev": true, "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", + "bn.js": "^4.11.9", + "brorand": "^1.1.0", "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } } }, "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true }, "encodeurl": { @@ -19398,35 +19578,47 @@ "dev": true }, "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, "requires": { "once": "^1.4.0" } }, "enhanced-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", - "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", "dev": true, "requires": { "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", + "memory-fs": "^0.5.0", "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } } }, "entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", - "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true }, "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "dev": true, "requires": { "prr": "~1.0.1" @@ -19442,14 +19634,55 @@ } }, "error-stack-parser": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.4.tgz", - "integrity": "sha512-fZ0KkoxSjLFmhW5lHbUT3tLwy3nX1qEzMYo8koY1vrsAco53CMT1djnBSeC/wUjTEZRhZl9iRw7PaMaxfJ4wzQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz", + "integrity": "sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==", "dev": true, "requires": { - "stackframe": "^1.1.0" + "stackframe": "^1.1.1" } }, + "es-abstract": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -19463,9 +19696,9 @@ "dev": true }, "eslint": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.7.2.tgz", - "integrity": "sha512-qMlSWJaCSxDFr8fBPvJM9kJwbazrhNcBU3+DszDW1OlEwKBBRWsJc7NJFelvwQpanHCR14cOLD41x8Eqvo3Nng==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -19507,96 +19740,28 @@ "v8-compile-cache": "^2.0.3" }, "dependencies": { - "acorn": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", - "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==", - "dev": true - }, - "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "eslint-scope": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", - "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "eslint-visitor-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", - "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", - "dev": true - }, - "espree": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz", - "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==", - "dev": true, - "requires": { - "acorn": "^7.1.0", - "acorn-jsx": "^5.1.0", - "eslint-visitor-keys": "^1.1.0" - } - }, "glob-parent": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", - "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "requires": { "is-glob": "^4.0.1" - }, - "dependencies": { - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - } } }, "globals": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz", - "integrity": "sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==", + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", "dev": true, "requires": { "type-fest": "^0.8.1" } }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -19609,21 +19774,6 @@ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, "type-fest": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", @@ -19672,15 +19822,23 @@ "natural-compare": "^1.4.0", "semver": "^5.6.0", "vue-eslint-parser": "^7.0.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, "eslint-scope": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", - "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "requires": { - "esrecurse": "^4.1.0", + "esrecurse": "^4.3.0", "estraverse": "^4.1.1" } }, @@ -19691,45 +19849,23 @@ "dev": true, "requires": { "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", - "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", - "dev": true - } } }, "eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true }, "espree": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz", - "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", "dev": true, "requires": { - "acorn": "^7.1.0", - "acorn-jsx": "^5.1.0", + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "acorn": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", - "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==", - "dev": true - }, - "eslint-visitor-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", - "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", - "dev": true - } } }, "esprima": { @@ -19739,33 +19875,49 @@ "dev": true }, "esquery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, "requires": { - "estraverse": "^4.0.0" + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } } }, "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "requires": { - "estraverse": "^4.1.0" + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } } }, "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, "etag": { @@ -19781,21 +19933,21 @@ "dev": true }, "eventemitter3": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", - "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", "dev": true }, "events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", - "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true }, "eventsource": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", - "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz", + "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==", "dev": true, "requires": { "original": "^1.0.0" @@ -19868,6 +20020,69 @@ "is-extendable": "^0.1.0" } }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -19951,17 +20166,6 @@ "requires": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } } }, "external-editor": { @@ -20009,34 +20213,11 @@ "is-extendable": "^0.1.0" } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true } } }, @@ -20047,9 +20228,9 @@ "dev": true }, "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "fast-diff": { @@ -20059,9 +20240,9 @@ "dev": true }, "fast-glob": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.6.tgz", - "integrity": "sha512-0BvMaZc1k9F+MeWWMe8pL6YltFzZYcJsYU7D4JyDA6PAczaXvxqQQ/z+mDF7/4Mw01DeUc+i3CTKajnkANkV4w==", + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", "dev": true, "requires": { "@mrmlnc/readdir-enhanced": "^2.2.1", @@ -20073,9 +20254,9 @@ } }, "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, "fast-levenshtein": { @@ -20085,24 +20266,24 @@ "dev": true }, "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", "dev": true, "requires": { "websocket-driver": ">=0.5.1" } }, "figgy-pudding": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", - "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", "dev": true }, "figures": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz", - "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, "requires": { "escape-string-regexp": "^1.0.5" @@ -20125,32 +20306,15 @@ "requires": { "loader-utils": "^1.2.3", "schema-utils": "^2.5.0" - }, - "dependencies": { - "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "schema-utils": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.1.tgz", - "integrity": "sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg==", - "dev": true, - "requires": { - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1" - } - } } }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, "filesize": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", @@ -20177,6 +20341,12 @@ "requires": { "is-extendable": "^0.1.0" } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true } } }, @@ -20213,23 +20383,24 @@ } }, "find-cache-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.0.0.tgz", - "integrity": "sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", "dev": true, "requires": { "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^3.0.0" + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" } }, "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { - "locate-path": "^3.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, "flat-cache": { @@ -20241,44 +20412,41 @@ "flatted": "^2.0.0", "rimraf": "2.6.3", "write": "1.0.3" - } - }, - "flatted": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", - "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", - "dev": true - }, - "flush-write-stream": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", - "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.4" - } - }, - "follow-redirects": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.9.0.tgz", - "integrity": "sha512-CRcPzsSIbXyVDl0QI01muNDu69S8trU4jArW9LpOt2WtC6LyUJetcIrmfHsRBx7/Jb6GHJUiuqyYxPooFfNt6A==", - "dev": true, - "requires": { - "debug": "^3.0.0" }, "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "dev": true, "requires": { - "ms": "^2.1.1" + "glob": "^7.1.3" } } } }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz", + "integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA==", + "dev": true + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -20345,9 +20513,9 @@ } }, "fs-minipass": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.0.0.tgz", - "integrity": "sha512-40Qz+LFXmd9tzYVnnBmZvFfvAADfUA14TXPK1s7IfElJTIZ97rA8w4Kin7Wt5JBrC3ShnnFJO/5vPjPEeJIq9A==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, "requires": { "minipass": "^3.0.0" @@ -20372,552 +20540,11 @@ "dev": true }, "fsevents": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz", - "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, - "optional": true, - "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "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" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true, - "optional": true - }, - "minipass": { - "version": "2.3.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.2.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.10.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "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" - } - }, - "rimraf": { - "version": "2.6.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "yallist": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "optional": true - } - } + "optional": true }, "function-bind": { "version": "1.1.1", @@ -20931,12 +20558,29 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, "get-stdin": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", @@ -20968,9 +20612,9 @@ } }, "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -21009,9 +20653,9 @@ "dev": true }, "globals": { - "version": "11.9.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.9.0.tgz", - "integrity": "sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg==", + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true }, "globby": { @@ -21028,20 +20672,6 @@ "ignore": "^4.0.3", "pify": "^4.0.1", "slash": "^2.0.0" - }, - "dependencies": { - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - } } }, "good-listener": { @@ -21053,9 +20683,9 @@ } }, "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", "dev": true }, "gzip-size": { @@ -21066,42 +20696,14 @@ "requires": { "duplexer": "^0.1.1", "pify": "^4.0.1" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - } } }, "handle-thing": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", - "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", "dev": true }, - "handlebars": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.3.tgz", - "integrity": "sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA==", - "dev": true, - "requires": { - "neo-async": "^2.6.0", - "optimist": "^0.6.1", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -21109,12 +20711,12 @@ "dev": true }, "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", "dev": true, "requires": { - "ajv": "^6.5.5", + "ajv": "^6.12.3", "har-schema": "^2.0.0" } }, @@ -21127,14 +20729,11 @@ "function-bind": "^1.1.1" } }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true }, "has-flag": { "version": "3.0.0", @@ -21143,9 +20742,9 @@ "dev": true }, "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "dev": true }, "has-value": { @@ -21181,19 +20780,39 @@ } }, "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", "dev": true, "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } } }, "hash-sum": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", - "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", "dev": true }, "hash.js": { @@ -21219,13 +20838,10 @@ "dev": true }, "highlight.js": { - "version": "9.17.1", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.17.1.tgz", - "integrity": "sha512-TA2/doAur5Ol8+iM3Ov7qy3jYcr/QiJ2eDTdRF4dfbjG7AaaB99J5G+zSl11ljbl6cIcahgPY6SKb3sC3EJ0fw==", - "dev": true, - "requires": { - "handlebars": "^4.5.3" - } + "version": "10.7.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.1.tgz", + "integrity": "sha512-S6G97tHGqJ/U8DsXcEdnACbirtbx58Bx9CzIVeYli8OuswCfYI/LsXH2EiGcoGio1KAC3x4mmUwulOllJ2ZyRA==", + "dev": true }, "hmac-drbg": { "version": "1.0.1", @@ -21245,9 +20861,9 @@ "dev": true }, "hosted-git-info": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", - "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", "dev": true }, "hpack.js": { @@ -21281,9 +20897,9 @@ "dev": true }, "html-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", - "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", + "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==", "dev": true }, "html-minifier": { @@ -21299,38 +20915,12 @@ "param-case": "2.1.x", "relateurl": "0.2.x", "uglify-js": "3.4.x" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "uglify-js": { - "version": "3.4.10", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", - "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", - "dev": true, - "requires": { - "commander": "~2.19.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", - "dev": true - } - } - } } }, "html-tags": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", - "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", + "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==", "dev": true }, "html-webpack-plugin": { @@ -21354,6 +20944,12 @@ "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", "dev": true }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, "json5": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", @@ -21395,9 +20991,9 @@ "dev": true }, "readable-stream": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", - "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "requires": { "inherits": "^2.0.3", @@ -21424,18 +21020,26 @@ "setprototypeof": "1.1.1", "statuses": ">= 1.5.0 < 2", "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } } }, "http-parser-js": { - "version": "0.4.10", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", - "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", + "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==", "dev": true }, "http-proxy": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", - "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, "requires": { "eventemitter3": "^4.0.0", @@ -21444,15 +21048,61 @@ } }, "http-proxy-middleware": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", - "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-1.0.6.tgz", + "integrity": "sha512-NyL6ZB6cVni7pl+/IT2W0ni5ME00xR0sN27AQZZrpKn1b+qRh+mLbBxIq9Cq1oGfmTc7BUq4HB77mxwCaxAYNg==", "dev": true, "requires": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" + "@types/http-proxy": "^1.17.4", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "lodash": "^4.17.20", + "micromatch": "^4.0.2" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } } }, "http-signature": { @@ -21497,9 +21147,9 @@ } }, "ieee754": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", - "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "dev": true }, "iferr": { @@ -21509,9 +21159,9 @@ "dev": true }, "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true }, "import-cwd": { @@ -21550,6 +21200,51 @@ "requires": { "pkg-dir": "^3.0.0", "resolve-cwd": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + } } }, "imurmurhash": { @@ -21570,12 +21265,6 @@ "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", "dev": true }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", - "dev": true - }, "infer-owner": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", @@ -21593,9 +21282,9 @@ } }, "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, "inquirer": { @@ -21644,15 +21333,6 @@ "supports-color": "^7.1.0" } }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -21668,12 +21348,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -21686,35 +21360,10 @@ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "onetime": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "requires": { "emoji-regex": "^8.0.0", @@ -21764,21 +21413,6 @@ } } }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true - }, "ip": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", @@ -21792,9 +21426,9 @@ "dev": true }, "ipaddr.js": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", - "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true }, "is-absolute-url": { @@ -21804,30 +21438,22 @@ "dev": true }, "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "kind-of": "^6.0.0" } }, "is-arguments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", - "dev": true + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", + "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } }, "is-arrayish": { "version": "0.2.1", @@ -21835,13 +21461,29 @@ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, - "is-binary-path": { + "is-bigint": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", + "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", + "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", "dev": true, "requires": { - "binary-extensions": "^1.0.0" + "call-bind": "^1.0.0" } }, "is-buffer": { @@ -21850,6 +21492,12 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, + "is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "dev": true + }, "is-ci": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", @@ -21873,49 +21521,39 @@ "rgba-regex": "^1.0.0" } }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", "dev": true, "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" } }, "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", "dev": true }, "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "is-directory": { @@ -21924,12 +21562,21 @@ "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", "dev": true }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "is-docker": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", + "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==", "dev": true }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -21943,14 +21590,20 @@ "dev": true }, "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "dev": true, "requires": { "is-extglob": "^2.1.1" } }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true + }, "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", @@ -21971,10 +21624,16 @@ } } }, + "is-number-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", + "dev": true + }, "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true }, "is-path-cwd": { @@ -22017,12 +21676,13 @@ } }, "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", "dev": true, "requires": { - "has": "^1.0.1" + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" } }, "is-resolvable": { @@ -22037,6 +21697,12 @@ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, "is-svg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", @@ -22047,12 +21713,12 @@ } }, "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", "dev": true, "requires": { - "has-symbols": "^1.0.0" + "has-symbols": "^1.0.1" } }, "is-typedarray": { @@ -22068,10 +21734,13 @@ "dev": true }, "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } }, "isarray": { "version": "1.0.0", @@ -22104,50 +21773,50 @@ "dev": true }, "jest-worker": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", - "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", + "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", "dev": true, "requires": { "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" + "supports-color": "^7.0.0" }, "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" } } } }, "js-base64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz", - "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==" - }, - "js-levenshtein": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", - "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", - "dev": true + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==" }, "js-message": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.5.tgz", - "integrity": "sha1-IwDSSxrwjondCVvBpMnJz8uJLRU=", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.7.tgz", + "integrity": "sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==", "dev": true }, "js-queue": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/js-queue/-/js-queue-2.0.0.tgz", - "integrity": "sha1-NiITz4YPRo8BJfxslqvBdCUx+Ug=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/js-queue/-/js-queue-2.0.2.tgz", + "integrity": "sha512-pbKLsbCfi7kriM3s1J4DDCo7jQkI58zPLHi0heXPzPlj0hjUsm+FesPUbE0DSbIVIK503A36aUBoCN7eMFedkA==", "dev": true, "requires": { - "easy-stack": "^1.0.0" + "easy-stack": "^1.0.1" } }, "js-tokens": { @@ -22157,9 +21826,9 @@ "dev": true }, "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -22184,6 +21853,12 @@ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", @@ -22215,12 +21890,12 @@ "dev": true }, "json5": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", - "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", "dev": true, "requires": { - "minimist": "^1.2.0" + "minimist": "^1.2.5" } }, "jsonfile": { @@ -22232,12 +21907,6 @@ "graceful-fs": "^4.1.6" } }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -22257,9 +21926,9 @@ "dev": true }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, "launch-editor": { @@ -22281,15 +21950,6 @@ "launch-editor": "^2.2.1" } }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "requires": { - "invert-kv": "^2.0.0" - } - }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -22307,13 +21967,13 @@ "dev": true }, "loader-fs-cache": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.2.tgz", - "integrity": "sha512-70IzT/0/L+M20jUlEqZhZyArTU6VKLRTYRDAYN26g4jfzpJqjipLL3/hgYpySqI9PwsVRHHFja0LfEmsx9X2Cw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz", + "integrity": "sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA==", "dev": true, "requires": { "find-cache-dir": "^0.1.1", - "mkdirp": "0.5.1" + "mkdirp": "^0.5.1" }, "dependencies": { "find-cache-dir": { @@ -22364,13 +22024,13 @@ "dev": true }, "loader-utils": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "dev": true, "requires": { "big.js": "^5.2.2", - "emojis-list": "^2.0.0", + "emojis-list": "^3.0.0", "json5": "^1.0.1" }, "dependencies": { @@ -22386,13 +22046,12 @@ } }, "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" } }, "lodash": { @@ -22463,20 +22122,11 @@ } }, "loglevel": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.6.tgz", - "integrity": "sha512-Sgr5lbboAUBo3eXCSPL4/KoVz3ROKquOjcctxmHIt+vol2DrqTQe3SwkKKuYhEiWB5kYa13YyopJ69deJ1irzQ==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", + "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==", "dev": true }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, "lower-case": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", @@ -22493,21 +22143,12 @@ } }, "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "requires": { - "pify": "^3.0.0" - } - }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "requires": { - "p-defer": "^1.0.0" + "semver": "^6.0.0" } }, "map-cache": { @@ -22553,25 +22194,6 @@ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - }, - "dependencies": { - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - } - } - }, "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", @@ -22612,9 +22234,9 @@ "dev": true }, "merge2": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.3.tgz", - "integrity": "sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true }, "methods": { @@ -22652,39 +22274,47 @@ "requires": { "bn.js": "^4.0.0", "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } } }, "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", "dev": true }, "mime-db": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", - "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==", + "version": "1.46.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz", + "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==", "dev": true }, "mime-types": { - "version": "2.1.21", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", - "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", + "version": "2.1.29", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz", + "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==", "dev": true, "requires": { - "mime-db": "~1.37.0" + "mime-db": "1.46.0" } }, "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, "mini-css-extract-plugin": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.2.tgz", - "integrity": "sha512-a3Y4of27Wz+mqK3qrcd3VhYz6cU0iW5x3Sgvqzbj+XmlrSizmvu8QQMl5oMYJjgHOC4iyt+w7l4umP+dQeW3bw==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz", + "integrity": "sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==", "dev": true, "requires": { "loader-utils": "^1.1.0", @@ -22693,16 +22323,15 @@ "webpack-sources": "^1.1.0" }, "dependencies": { - "normalize-url": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", - "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "dev": true, "requires": { - "object-assign": "^4.0.1", - "prepend-http": "^1.0.0", - "query-string": "^4.1.0", - "sort-keys": "^1.0.0" + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" } } } @@ -22729,15 +22358,15 @@ } }, "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, "minipass": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", - "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", "dev": true, "requires": { "yallist": "^4.0.0" @@ -22770,9 +22399,9 @@ } }, "minipass-pipeline": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz", - "integrity": "sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, "requires": { "minipass": "^3.0.0" @@ -22804,40 +22433,21 @@ "requires": { "for-in": "^1.0.2", "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } } }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "dev": true, "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - } + "minimist": "^1.2.5" } }, "moment": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", - "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" }, "move-concurrently": { "version": "1.0.1", @@ -22854,9 +22464,9 @@ } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "multicast-dns": { @@ -22893,9 +22503,9 @@ } }, "nan": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", - "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==", + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", + "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", "dev": true, "optional": true }, @@ -22931,9 +22541,9 @@ "dev": true }, "neo-async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", - "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, "nice-try": { @@ -22952,26 +22562,26 @@ } }, "node-forge": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", - "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==", + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", "dev": true }, "node-ipc": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/node-ipc/-/node-ipc-9.1.1.tgz", - "integrity": "sha512-FAyICv0sIRJxVp3GW5fzgaf9jwwRQxAKDJlmNFUL5hOy+W4X/I5AypyHoq0DXXbo9o/gt79gj++4cMr4jVWE/w==", + "version": "9.1.4", + "resolved": "https://registry.npmjs.org/node-ipc/-/node-ipc-9.1.4.tgz", + "integrity": "sha512-A+f0mn2KxUt1uRTSd5ktxQUsn2OEhj5evo7NUi/powBzMSZ0vocdzDjlq9QN2v3LH6CJi3e5xAenpZ1QwU5A8g==", "dev": true, "requires": { "event-pubsub": "4.3.0", - "js-message": "1.0.5", - "js-queue": "2.0.0" + "js-message": "1.0.7", + "js-queue": "2.0.2" } }, "node-libs-browser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz", - "integrity": "sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", "dev": true, "requires": { "assert": "^1.1.1", @@ -22984,7 +22594,7 @@ "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", @@ -22996,7 +22606,7 @@ "tty-browserify": "0.0.0", "url": "^0.11.0", "util": "^0.11.0", - "vm-browserify": "0.0.4" + "vm-browserify": "^1.0.1" }, "dependencies": { "punycode": { @@ -23008,21 +22618,10 @@ } }, "node-releases": { - "version": "1.1.38", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.38.tgz", - "integrity": "sha512-/5NZAaOyTj134Oy5Cp/J8mso8OD/D9CSuL+6TOXXsTKO8yjc5e4up75SRPCganCjwFKMj2jbp5tR0dViVdox7g==", - "dev": true, - "requires": { - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } + "version": "1.1.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "dev": true }, "normalize-package-data": { "version": "2.5.0", @@ -23034,6 +22633,14 @@ "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, "normalize-path": { @@ -23049,10 +22656,16 @@ "dev": true }, "normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", - "dev": true + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } }, "normalize.css": { "version": "8.0.1", @@ -23060,9 +22673,9 @@ "integrity": "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==" }, "noty": { - "version": "3.2.0-beta", - "resolved": "https://registry.npmjs.org/noty/-/noty-3.2.0-beta.tgz", - "integrity": "sha512-a1//Rth1MTQ/GCvGzwBXrZqCwOPyxiIKMdHT1TlcdrDYBYVfb7vzwsU0N4x+j/HeIQTi6/pbP8lRtY9gBz/d3Q==" + "version": "3.2.0-beta-deprecated", + "resolved": "https://registry.npmjs.org/noty/-/noty-3.2.0-beta-deprecated.tgz", + "integrity": "sha512-ntRbHuQ9SnnnVFZm/oq5L1DBCaHQUvsU24AwZH3PGjAWx2YqR/IhOadMk11vmJovYiQo00oqTj6Hp+D6PGtmLA==" }, "npm-run-path": { "version": "2.0.2", @@ -23088,12 +22701,6 @@ "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", "dev": true }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", @@ -23126,6 +22733,43 @@ "is-descriptor": "^0.1.0" } }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", @@ -23144,21 +22788,25 @@ "dev": true }, "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", "dev": true }, "object-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz", - "integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==", - "dev": true + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } }, "object-keys": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", - "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true }, "object-visit": { @@ -23171,84 +22819,26 @@ } }, "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" } }, "object.getownpropertydescriptors": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", - "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", + "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", "dev": true, "requires": { + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.0.tgz", - "integrity": "sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true - }, - "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", - "dev": true - }, - "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - } + "es-abstract": "^1.18.0-next.2" } }, "object.pick": { @@ -23261,74 +22851,15 @@ } }, "object.values": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", - "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz", + "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==", "dev": true, "requires": { + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", + "es-abstract": "^1.18.0-next.2", "has": "^1.0.3" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.0.tgz", - "integrity": "sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true - }, - "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", - "dev": true - }, - "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - } } }, "obuf": { @@ -23362,27 +22893,35 @@ } }, "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "requires": { - "mimic-fn": "^1.0.0" + "mimic-fn": "^2.1.0" } }, "open": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/open/-/open-6.3.0.tgz", - "integrity": "sha512-6AHdrJxPvAXIowO/aIaeHZ8CeMdDf7qCyRNq8NwJpinmCdXhz+NZR7ie1Too94lpciCDsG+qHGO9Mt0svA4OqA==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", "dev": true, "requires": { "is-wsl": "^1.1.0" + }, + "dependencies": { + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + } } }, "opener": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz", - "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", "dev": true }, "opn": { @@ -23392,22 +22931,12 @@ "dev": true, "requires": { "is-wsl": "^1.1.0" - } - }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" }, "dependencies": { - "minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", "dev": true } } @@ -23440,30 +22969,38 @@ "wcwidth": "^1.0.1" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "restore-cursor": "^2.0.0" } }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "mimic-fn": "^1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" } } } @@ -23483,67 +23020,41 @@ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", "dev": true }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true - }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, - "p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true - }, "p-limit": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", - "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { "p-try": "^2.0.0" } }, "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "p-limit": "^2.2.0" } }, "p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true }, "p-retry": { "version": "3.0.1", @@ -23555,23 +23066,23 @@ } }, "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, "pako": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.8.tgz", - "integrity": "sha512-6i0HVbUfcKaTv+EG8ZTr75az7GFXcLYk9UyLEg7Notv/Ma+z/UG3TCoz6GiNeOrn1E/e63I0X/Hpw18jHOTUnA==" + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" }, "parallel-transform": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", - "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", "dev": true, "requires": { - "cyclist": "~0.2.2", + "cyclist": "^1.0.1", "inherits": "^2.0.3", "readable-stream": "^2.1.5" } @@ -23603,14 +23114,13 @@ } }, "parse-asn1": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.3.tgz", - "integrity": "sha512-VrPoetlz7B/FqjBLD2f5wBVZvsZVLnRUrxVLfRYhGXCODa/NWE4p3Wp+6+aV3ZPL3KM7/OZmxDIwwijD7yuucg==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", "dev": true, "requires": { - "asn1.js": "^4.0.0", + "asn1.js": "^5.2.0", "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", "evp_bytestokey": "^1.0.0", "pbkdf2": "^3.0.3", "safe-buffer": "^5.1.1" @@ -23633,12 +23143,20 @@ "dev": true }, "parse5-htmlparser2-tree-adapter": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-5.1.1.tgz", - "integrity": "sha512-CF+TKjXqoqyDwHqBhFQ+3l5t83xYi6fVT1tQNg+Ye0JRLnTxWvIroCjEp1A0k4lneHNBGnICUf0cfYVYGEazqw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", "dev": true, "requires": { - "parse5": "^5.1.1" + "parse5": "^6.0.1" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + } } }, "parseurl": { @@ -23654,9 +23172,9 @@ "dev": true }, "path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", "dev": true }, "path-dirname": { @@ -23666,9 +23184,9 @@ "dev": true }, "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, "path-is-absolute": { @@ -23708,12 +23226,20 @@ "dev": true, "requires": { "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } } }, "pbkdf2": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", - "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", + "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", "dev": true, "requires": { "create-hash": "^1.1.2", @@ -23729,10 +23255,16 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true }, "pinkie": { @@ -23751,29 +23283,38 @@ } }, "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "requires": { - "find-up": "^3.0.0" + "find-up": "^4.0.0" + } + }, + "pnp-webpack-plugin": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", + "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==", + "dev": true, + "requires": { + "ts-pnp": "^1.1.6" } }, "portfinder": { - "version": "1.0.25", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", - "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", "dev": true, "requires": { "async": "^2.6.2", "debug": "^3.1.1", - "mkdirp": "^0.5.1" + "mkdirp": "^0.5.5" }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { "ms": "^2.1.1" @@ -23788,9 +23329,9 @@ "dev": true }, "postcss": { - "version": "7.0.25", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.25.tgz", - "integrity": "sha512-NXXVvWq9icrm/TgQC0O6YVFi4StfJz46M1iNd/h6B26Nvh/HKI+q4YZtFN/EjcInZliEscO/WL10BXnc1E5nwg==", + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -23798,28 +23339,6 @@ "supports-color": "^6.1.0" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -23838,15 +23357,14 @@ } }, "postcss-calc": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.1.tgz", - "integrity": "sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", + "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", "dev": true, "requires": { - "css-unit-converter": "^1.1.1", - "postcss": "^7.0.5", - "postcss-selector-parser": "^5.0.0-rc.4", - "postcss-value-parser": "^3.3.1" + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" } }, "postcss-colormin": { @@ -23860,6 +23378,14 @@ "has": "^1.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-convert-values": { @@ -23870,6 +23396,14 @@ "requires": { "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-discard-comments": { @@ -23909,9 +23443,9 @@ } }, "postcss-load-config": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz", - "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", + "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", "dev": true, "requires": { "cosmiconfig": "^5.0.0", @@ -23928,6 +23462,19 @@ "postcss": "^7.0.0", "postcss-load-config": "^2.0.0", "schema-utils": "^1.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } } }, "postcss-merge-longhand": { @@ -23940,6 +23487,14 @@ "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0", "stylehacks": "^4.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-merge-rules": { @@ -23957,12 +23512,12 @@ }, "dependencies": { "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", "dev": true, "requires": { - "dot-prop": "^4.1.1", + "dot-prop": "^5.2.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } @@ -23977,6 +23532,14 @@ "requires": { "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-minify-gradients": { @@ -23989,6 +23552,14 @@ "is-color-stop": "^1.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-minify-params": { @@ -24003,6 +23574,14 @@ "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0", "uniqs": "^2.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-minify-selectors": { @@ -24018,12 +23597,12 @@ }, "dependencies": { "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", "dev": true, "requires": { - "dot-prop": "^4.1.1", + "dot-prop": "^5.2.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } @@ -24040,69 +23619,25 @@ } }, "postcss-modules-local-by-default": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz", - "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz", + "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==", "dev": true, "requires": { "icss-utils": "^4.1.1", - "postcss": "^7.0.16", + "postcss": "^7.0.32", "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.0" - }, - "dependencies": { - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "postcss-selector-parser": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", - "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - }, - "postcss-value-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz", - "integrity": "sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ==", - "dev": true - } + "postcss-value-parser": "^4.1.0" } }, "postcss-modules-scope": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.1.1.tgz", - "integrity": "sha512-OXRUPecnHCg8b9xWvldG/jUpRIGPNRka0r4D4j0ESUU2/5IOnpsjfPPmDprM3Ih8CgZ8FXjWqaniK5v4rWt3oQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", + "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", "dev": true, "requires": { "postcss": "^7.0.6", "postcss-selector-parser": "^6.0.0" - }, - "dependencies": { - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "postcss-selector-parser": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", - "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } } }, "postcss-modules-values": { @@ -24133,6 +23668,14 @@ "cssnano-util-get-match": "^4.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-normalize-positions": { @@ -24145,6 +23688,14 @@ "has": "^1.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-normalize-repeat-style": { @@ -24157,6 +23708,14 @@ "cssnano-util-get-match": "^4.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-normalize-string": { @@ -24168,6 +23727,14 @@ "has": "^1.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-normalize-timing-functions": { @@ -24179,6 +23746,14 @@ "cssnano-util-get-match": "^4.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-normalize-unicode": { @@ -24190,6 +23765,14 @@ "browserslist": "^4.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-normalize-url": { @@ -24202,6 +23785,20 @@ "normalize-url": "^3.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "dev": true + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-normalize-whitespace": { @@ -24212,6 +23809,14 @@ "requires": { "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-ordered-values": { @@ -24223,6 +23828,14 @@ "cssnano-util-get-arguments": "^4.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-reduce-initial": { @@ -24247,17 +23860,26 @@ "has": "^1.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz", + "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==", "dev": true, "requires": { - "cssesc": "^2.0.0", + "cssesc": "^3.0.0", "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "uniq": "^1.0.1", + "util-deprecate": "^1.0.2" } }, "postcss-svgo": { @@ -24270,6 +23892,14 @@ "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0", "svgo": "^1.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } } }, "postcss-unique-selectors": { @@ -24284,9 +23914,9 @@ } }, "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true }, "prelude-ls": { @@ -24317,21 +23947,15 @@ } }, "pretty-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", - "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", + "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", "dev": true, "requires": { - "renderkid": "^2.0.1", - "utila": "~0.4" + "lodash": "^4.17.20", + "renderkid": "^2.0.4" } }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -24339,9 +23963,9 @@ "dev": true }, "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "progress": { @@ -24357,13 +23981,13 @@ "dev": true }, "proxy-addr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", - "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", "dev": true, "requires": { "forwarded": "~0.1.2", - "ipaddr.js": "1.9.0" + "ipaddr.js": "1.9.1" } }, "prr": { @@ -24379,9 +24003,9 @@ "dev": true }, "psl": { - "version": "1.1.31", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", "dev": true }, "public-encrypt": { @@ -24396,6 +24020,14 @@ "parse-asn1": "^5.0.0", "randombytes": "^2.0.1", "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } } }, "pump": { @@ -24446,7 +24078,8 @@ "qrcode.vue": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/qrcode.vue/-/qrcode.vue-1.7.0.tgz", - "integrity": "sha512-R7t6Y3fDDtcU7L4rtqwGUDP9xD64gJhIwpfjhRCTKmBoYF6SS49PIJHRJ048cse6OI7iwTwgyy2C46N9Ygoc6g==" + "integrity": "sha512-R7t6Y3fDDtcU7L4rtqwGUDP9xD64gJhIwpfjhRCTKmBoYF6SS49PIJHRJ048cse6OI7iwTwgyy2C46N9Ygoc6g==", + "requires": {} }, "qs": { "version": "6.5.2", @@ -24477,15 +24110,15 @@ "dev": true }, "querystringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", - "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", "dev": true }, "randombytes": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", - "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, "requires": { "safe-buffer": "^5.1.0" @@ -24532,23 +24165,29 @@ }, "dependencies": { "parse-json": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", - "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1", + "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" } + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true } } }, "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -24561,44 +24200,43 @@ } }, "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", "dev": true, + "optional": true, "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" + "picomatch": "^2.2.1" } }, "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true }, "regenerate-unicode-properties": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", - "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", "dev": true, "requires": { "regenerate": "^1.4.0" } }, "regenerator-runtime": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", - "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==", + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", "dev": true }, "regenerator-transform": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz", - "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==", + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", "dev": true, "requires": { - "private": "^0.1.6" + "@babel/runtime": "^7.8.4" } }, "regex-not": { @@ -24612,72 +24250,13 @@ } }, "regexp.prototype.flags": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", - "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", + "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.0.tgz", - "integrity": "sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true - }, - "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", - "dev": true - }, - "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - } + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "regexpp": { @@ -24687,29 +24266,29 @@ "dev": true }, "regexpu-core": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", - "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", "dev": true, "requires": { "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.1.0", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.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.1.0" + "unicode-match-property-value-ecmascript": "^1.2.0" } }, "regjsgen": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", - "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", "dev": true }, "regjsparser": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.2.tgz", - "integrity": "sha512-E9ghzUtoLwDekPT0DYCp+c4h+bvuUpe6rRHCTYn6eGoqj1LgKXxT6I0Il4WbjhQkOghzi/V+y03bPKvbllL93Q==", + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.7.tgz", + "integrity": "sha512-ib77G0uxsA2ovgiYbCVGx4Pv3PSttAx2vIwidqQzbL2U5S4Q+j00HdSAneSBuyVcMvEnTXMjiGgB+DlXozVhpQ==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -24736,44 +24315,31 @@ "dev": true }, "renderkid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz", - "integrity": "sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.5.tgz", + "integrity": "sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ==", "dev": true, "requires": { - "css-select": "^1.1.0", + "css-select": "^2.0.2", "dom-converter": "^0.2", - "htmlparser2": "^3.3.0", - "strip-ansi": "^3.0.0", - "utila": "^0.4.0" + "htmlparser2": "^3.10.1", + "lodash": "^4.17.20", + "strip-ansi": "^3.0.0" }, "dependencies": { - "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", - "dev": true, - "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" - } - }, - "css-what": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "dom-serializer": "0", - "domelementtype": "1" + "ansi-regex": "^2.0.0" } } } @@ -24837,11 +24403,12 @@ "dev": true }, "resolve": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", - "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" } }, @@ -24867,12 +24434,12 @@ "dev": true }, "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, "requires": { - "onetime": "^2.0.0", + "onetime": "^5.1.0", "signal-exit": "^3.0.2" } }, @@ -24901,9 +24468,9 @@ "dev": true }, "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "requires": { "glob": "^7.1.3" @@ -24951,7 +24518,7 @@ }, "safe-regex": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "requires": { @@ -24971,22 +24538,14 @@ "dev": true }, "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "dependencies": { - "ajv-keywords": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.3.0.tgz", - "integrity": "sha512-CMzN9S62ZOO4sA/mJZIO4S++ZM7KFWzH3PPWkveLhy4OZ9i1/VatgwWMD46w/XbGCBy7Ye0gCk+Za6mmyfKK7g==", - "dev": true - } + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" } }, "select": { @@ -25001,18 +24560,18 @@ "dev": true }, "selfsigned": { - "version": "1.10.7", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", - "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", + "version": "1.10.8", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz", + "integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==", "dev": true, "requires": { - "node-forge": "0.9.0" + "node-forge": "^0.10.0" } }, "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, "send": { @@ -25058,14 +24617,23 @@ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true } } }, "serialize-javascript": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.6.1.tgz", - "integrity": "sha512-A5MOagrPFga4YaKQSWHryl7AXvbQkEqpw4NNYMTNYUNV51bA8ABHgYFpqKx+YFFrw59xMV1qGH1R4AgoNIVgCw==", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } }, "serve-index": { "version": "1.9.1", @@ -25103,6 +24671,12 @@ "statuses": ">= 1.4.0 < 2" } }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -25136,9 +24710,9 @@ "dev": true }, "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -25155,6 +24729,12 @@ "requires": { "is-extendable": "^0.1.0" } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true } } }, @@ -25172,7 +24752,7 @@ }, "sha.js": { "version": "2.4.11", - "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dev": true, "requires": { @@ -25196,21 +24776,15 @@ "dev": true }, "shell-quote": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", - "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", - "dev": true, - "requires": { - "array-filter": "~0.0.0", - "array-map": "~0.0.0", - "array-reduce": "~0.0.0", - "jsonify": "~0.0.0" - } + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", + "dev": true }, "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", "dev": true }, "simple-swizzle": { @@ -25290,6 +24864,69 @@ "is-extendable": "^0.1.0" } }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -25317,35 +24954,6 @@ "requires": { "is-descriptor": "^1.0.0" } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } } } }, @@ -25370,46 +24978,38 @@ } }, "sockjs": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", - "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", + "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", "dev": true, "requires": { - "faye-websocket": "^0.10.0", - "uuid": "^3.0.1" + "faye-websocket": "^0.11.3", + "uuid": "^3.4.0", + "websocket-driver": "^0.7.4" } }, "sockjs-client": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", - "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.0.tgz", + "integrity": "sha512-8Dt3BDi4FYNrCFGTL/HtwVzkARrENdwOUf1ZoW/9p3M8lZdFT35jVdrHza+qgxuG9H3/shR4cuX/X9umUrjP8Q==", "dev": true, "requires": { - "debug": "^3.2.5", + "debug": "^3.2.6", "eventsource": "^1.0.7", - "faye-websocket": "~0.11.1", - "inherits": "^2.0.3", - "json3": "^3.3.2", - "url-parse": "^1.4.3" + "faye-websocket": "^0.11.3", + "inherits": "^2.0.4", + "json3": "^3.3.3", + "url-parse": "^1.4.7" }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { "ms": "^2.1.1" } - }, - "faye-websocket": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", - "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } } } }, @@ -25435,12 +25035,12 @@ "dev": true }, "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", "dev": true, "requires": { - "atob": "^2.1.1", + "atob": "^2.1.2", "decode-uri-component": "^0.2.0", "resolve-url": "^0.2.1", "source-map-url": "^0.4.0", @@ -25448,9 +25048,9 @@ } }, "source-map-support": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.10.tgz", - "integrity": "sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ==", + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -25466,15 +25066,15 @@ } }, "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", "dev": true }, "spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -25482,15 +25082,15 @@ } }, "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", "dev": true }, "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, "requires": { "spdx-exceptions": "^2.1.0", @@ -25498,15 +25098,15 @@ } }, "spdx-license-ids": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", + "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", "dev": true }, "spdy": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.1.tgz", - "integrity": "sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", "dev": true, "requires": { "debug": "^4.1.0", @@ -25531,9 +25131,9 @@ }, "dependencies": { "readable-stream": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", - "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "requires": { "inherits": "^2.0.3", @@ -25554,14 +25154,14 @@ }, "sprintf-js": { "version": "1.0.3", - "resolved": "http://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, "sshpk": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.0.tgz", - "integrity": "sha512-Zhev35/y7hRMcID/upReIvRse+I9SVhyVre/KTJSJQWMz3C3+G+HpO7m1wK/yckEtujKZ7dS4hkVxAnmHaIGVQ==", + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", "dev": true, "requires": { "asn1": "~0.2.3", @@ -25576,12 +25176,13 @@ } }, "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", + "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", "dev": true, "requires": { - "figgy-pudding": "^3.5.1" + "figgy-pudding": "^3.5.1", + "minipass": "^3.1.1" } }, "stable": { @@ -25591,9 +25192,9 @@ "dev": true }, "stackframe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.1.0.tgz", - "integrity": "sha512-Vx6W1Yvy+AM1R/ckVwcHQHV147pTPBKWCRLrXMuPrFVfvBUc3os7PR1QLIWCMhPpRg5eX9ojzbQIMLGBwyLjqg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.0.tgz", + "integrity": "sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==", "dev": true }, "static-extend": { @@ -25614,6 +25215,63 @@ "requires": { "is-descriptor": "^0.1.0" } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true } } }, @@ -25625,7 +25283,7 @@ }, "stream-browserify": { "version": "2.0.2", - "resolved": "http://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", "dev": true, "requires": { @@ -25657,9 +25315,9 @@ } }, "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", "dev": true }, "strict-uri-encode": { @@ -25670,7 +25328,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { @@ -25704,38 +25362,38 @@ } } }, - "string.prototype.trimleft": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", - "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, - "string.prototype.trimright": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "^4.1.0" } }, "strip-eof": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, @@ -25752,9 +25410,9 @@ "dev": true }, "strip-json-comments": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", - "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, "stylehacks": { @@ -25769,12 +25427,12 @@ }, "dependencies": { "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", "dev": true, "requires": { - "dot-prop": "^4.1.1", + "dot-prop": "^5.2.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" } @@ -25829,22 +25487,10 @@ "string-width": "^3.0.0" }, "dependencies": { - "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, "string-width": { @@ -25857,35 +25503,32 @@ "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^5.1.0" } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } } } }, "tapable": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.1.tgz", - "integrity": "sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", "dev": true }, "terser": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-3.14.1.tgz", - "integrity": "sha512-NSo3E99QDbYSMeJaEk9YW2lTg3qS9V0aKGlb+PlOrei1X02r1wSBHCNX/O+yeTRFSWPKPIGj6MqvvdqV4rnVGw==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", "dev": true, "requires": { - "commander": "~2.17.1", + "commander": "^2.20.0", "source-map": "~0.6.1", - "source-map-support": "~0.5.6" + "source-map-support": "~0.5.12" }, "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -25895,59 +25538,55 @@ } }, "terser-webpack-plugin": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.2.1.tgz", - "integrity": "sha512-GGSt+gbT0oKcMDmPx4SRSfJPE1XaN3kQRWG4ghxKQw9cn5G9x6aCKSsgYdvyM0na9NJ4Drv0RG6jbBByZ5CMjw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz", + "integrity": "sha512-/fKw3R+hWyHfYx7Bv6oPqmk4HGQcrWLtV3X6ggvPuwPNHSnzvVV51z6OaaCOus4YLjutYGOz3pEpbhe6Up2s1w==", "dev": true, "requires": { - "cacache": "^11.0.2", - "find-cache-dir": "^2.0.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^1.4.0", + "cacache": "^13.0.1", + "find-cache-dir": "^3.3.1", + "jest-worker": "^25.4.0", + "p-limit": "^2.3.0", + "schema-utils": "^2.6.6", + "serialize-javascript": "^4.0.0", "source-map": "^0.6.1", - "terser": "^3.8.1", - "webpack-sources": "^1.1.0", - "worker-farm": "^1.5.2" + "terser": "^4.6.12", + "webpack-sources": "^1.4.3" }, "dependencies": { "cacache": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz", - "integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", + "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", "dev": true, "requires": { - "bluebird": "^3.5.3", - "chownr": "^1.1.1", + "chownr": "^1.1.2", "figgy-pudding": "^3.5.1", - "glob": "^7.1.3", - "graceful-fs": "^4.1.15", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "infer-owner": "^1.0.4", "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", + "minipass": "^3.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", "mkdirp": "^0.5.1", "move-concurrently": "^1.0.1", + "p-map": "^3.0.0", "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" + "rimraf": "^2.7.1", + "ssri": "^7.0.0", + "unique-filename": "^1.1.1" } }, - "mississippi": { + "p-map": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", "dev": true, "requires": { - "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" + "aggregate-error": "^3.0.0" } }, "source-map": { @@ -25965,9 +25604,9 @@ "dev": true }, "thenify": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz", - "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", "dev": true, "requires": { "any-promise": "^1.0.0" @@ -25995,7 +25634,7 @@ }, "through": { "version": "2.3.8", - "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, @@ -26016,9 +25655,9 @@ "dev": true }, "timers-browserify": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", - "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", "dev": true, "requires": { "setimmediate": "^1.0.4" @@ -26031,9 +25670,9 @@ "dev": true }, "tiny-emitter": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.0.2.tgz", - "integrity": "sha512-2NM0auVBGft5tee/OxP4PI3d8WItkDM+fPnaRAVo6xTDI2knbz9eC5ArWGqtGlYqiH3RU5yMpdyTTO7MguC4ow==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" }, "tmp": { "version": "0.0.33", @@ -26126,15 +25765,21 @@ "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", "dev": true }, + "ts-pnp": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", + "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==", + "dev": true + }, "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, "tty-browserify": { "version": "0.0.0", - "resolved": "http://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", "dev": true }, @@ -26163,9 +25808,9 @@ } }, "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", "dev": true }, "type-is": { @@ -26176,23 +25821,6 @@ "requires": { "media-typer": "0.3.0", "mime-types": "~2.1.24" - }, - "dependencies": { - "mime-db": { - "version": "1.42.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz", - "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==", - "dev": true - }, - "mime-types": { - "version": "2.1.25", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz", - "integrity": "sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==", - "dev": true, - "requires": { - "mime-db": "1.42.0" - } - } } }, "typedarray": { @@ -26202,32 +25830,41 @@ "dev": true }, "uglify-js": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.7.3.tgz", - "integrity": "sha512-7tINm46/3puUA4hCkKYo4Xdts+JDaVC9ZPRcG8Xw9R4nhO/gZgUM3TENq8IF4Vatk8qCig4MzP/c8G4u2BkVQg==", + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", + "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", "dev": true, - "optional": true, "requires": { - "commander": "~2.20.3", + "commander": "~2.19.0", "source-map": "~0.6.1" }, "dependencies": { "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "optional": true + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true + "dev": true } } }, + "unbox-primitive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.0.tgz", + "integrity": "sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.0", + "has-symbols": "^1.0.0", + "which-boxed-primitive": "^1.0.1" + } + }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", @@ -26245,49 +25882,34 @@ } }, "unicode-match-property-value-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", - "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", - "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", "dev": true }, "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "dev": true, "requires": { "arr-union": "^3.1.0", "get-value": "^2.0.6", "is-extendable": "^0.1.1", - "set-value": "^0.4.3" + "set-value": "^2.0.1" }, "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true } } }, @@ -26313,9 +25935,9 @@ } }, "unique-slug": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz", - "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", "dev": true, "requires": { "imurmurhash": "^0.1.4" @@ -26380,9 +26002,9 @@ } }, "upath": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", - "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", "dev": true }, "upper-case": { @@ -26392,9 +26014,9 @@ "dev": true }, "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "requires": { "punycode": "^2.1.0" @@ -26433,36 +26055,12 @@ "loader-utils": "^1.2.3", "mime": "^2.4.4", "schema-utils": "^2.5.0" - }, - "dependencies": { - "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "schema-utils": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.1.tgz", - "integrity": "sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg==", - "dev": true, - "requires": { - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1" - } - } } }, "url-parse": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", - "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz", + "integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==", "dev": true, "requires": { "querystringify": "^2.1.1", @@ -26477,7 +26075,7 @@ }, "utif": { "version": "3.1.0", - "resolved": "http://mirrors.cloud.tencent.com/npm/utif/-/utif-3.1.0.tgz", + "resolved": "https://registry.npmjs.org/utif/-/utif-3.1.0.tgz", "integrity": "sha512-WEo4D/xOvFW53K5f5QTaTbbiORcm2/pCL9P6qmJnup+17eYfKaEhDeX9PeQkuyEoIxlbGklDuGl8xwuXYMrrXQ==", "requires": { "pako": "^1.0.5" @@ -26490,6 +26088,14 @@ "dev": true, "requires": { "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } } }, "util-deprecate": { @@ -26521,15 +26127,15 @@ "dev": true }, "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "dev": true }, "v8-compile-cache": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", - "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, "validate-npm-package-license": { @@ -26549,9 +26155,9 @@ "dev": true }, "vendors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.3.tgz", - "integrity": "sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", "dev": true }, "verror": { @@ -26566,39 +26172,28 @@ } }, "vm-browserify": { - "version": "0.0.4", - "resolved": "http://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "dev": true, - "requires": { - "indexof": "0.0.1" - } + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true }, "vue": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.10.tgz", - "integrity": "sha512-ImThpeNU9HbdZL3utgMCq0oiMzAkt1mcgy3/E6zWC/G6AaQoeuFdsl9nDhTDU3X1R6FK7nsIUuRACVcjI+A2GQ==" + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.12.tgz", + "integrity": "sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg==" }, "vue-eslint-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.0.0.tgz", - "integrity": "sha512-yR0dLxsTT7JfD2YQo9BhnQ6bUTLsZouuzt9SKRP7XNaZJV459gvlsJo4vT2nhZ/2dH9j3c53bIx9dnqU2prM9g==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.6.0.tgz", + "integrity": "sha512-QXxqH8ZevBrtiZMZK0LpwaMfevQi9UL7lY6Kcp+ogWHC88AuwUPwwCIzkOUc1LR4XsYAt/F9yHXAB/QoD17QXA==", "dev": true, "requires": { "debug": "^4.1.1", "eslint-scope": "^5.0.0", "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", + "espree": "^6.2.1", + "esquery": "^1.4.0", "lodash": "^4.17.15" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", - "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", - "dev": true - } } }, "vue-hot-reload-api": { @@ -26608,9 +26203,9 @@ "dev": true }, "vue-i18n": { - "version": "8.15.3", - "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-8.15.3.tgz", - "integrity": "sha512-PVNgo6yhOmacZVFjSapZ314oewwLyXHjJwAqjnaPN1GJAJd/dvsrShGzSiJuCX4Hc36G4epJvNXUwO8y7wEKew==" + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-8.24.1.tgz", + "integrity": "sha512-iqM+npjvI9SGOAYkw1Od/y4O74gpvn5WOHeb3K125TmDJssvR62tDMMLIasPmKNbePZ1BMZ6d5jOBsrB/cK8Lw==" }, "vue-lazyload": { "version": "1.3.3", @@ -26618,9 +26213,9 @@ "integrity": "sha512-uHnq0FTEeNmqnbBC2aRKlmtd9LofMZ6Q3mWvgfLa+i9vhxU8fDK+nGs9c1iVT85axSua/AUnMttIq3xPaU9G3A==" }, "vue-loader": { - "version": "15.8.3", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.8.3.tgz", - "integrity": "sha512-yFksTFbhp+lxlm92DrKdpVIWMpranXnTEuGSc0oW+Gk43M9LWaAmBTnfj5+FCdve715mTHvo78IdaXf5TbiTJg==", + "version": "15.9.6", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.9.6.tgz", + "integrity": "sha512-j0cqiLzwbeImIC6nVIby2o/ABAWhlppyL/m5oJ67R5MloP0hj/DtFgb0Zmq3J9CG7AJ+AXIvHVnJAPBvrLyuDg==", "dev": true, "requires": { "@vue/component-compiler-utils": "^3.1.0", @@ -26628,27 +26223,124 @@ "loader-utils": "^1.1.0", "vue-hot-reload-api": "^2.3.0", "vue-style-loader": "^4.1.0" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + } + } + }, + "vue-loader-v16": { + "version": "npm:vue-loader@16.1.2", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.1.2.tgz", + "integrity": "sha512-8QTxh+Fd+HB6fiL52iEVLKqE9N1JSlMXLR92Ijm6g8PZrwIxckgpqjPDWRP5TWxdiPaHR+alUWsnu1ShQOwt+Q==", + "dev": true, + "optional": true, + "requires": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "optional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "optional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "optional": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "optional": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "optional": true + }, + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "optional": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "optional": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "vue-router": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.1.3.tgz", - "integrity": "sha512-8iSa4mGNXBjyuSZFCCO4fiKfvzqk+mhL0lnKuGcQtO1eoj8nq3CmbEG8FwK5QqoqwDgsjsf1GDuisDX4cdb/aQ==" + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.5.1.tgz", + "integrity": "sha512-RRQNLT8Mzr8z7eL4p7BtKvRaTSGdCbTy2+Mm5HTJvLGYSSeG9gDzNasJPP/yOYKLy+/cLG/ftrqq5fvkFwBJEw==" }, "vue-style-loader": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.2.tgz", - "integrity": "sha512-0ip8ge6Gzz/Bk0iHovU9XAUQaFt/G2B61bnWa2tCcqqdgfHs1lF9xXorFbE55Gmy92okFT+8bfmySuUOu13vxQ==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz", + "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", "dev": true, "requires": { "hash-sum": "^1.0.2", "loader-utils": "^1.0.2" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + } } }, "vue-template-compiler": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.10.tgz", - "integrity": "sha512-jVZkw4/I/HT5ZMvRnhv78okGusqe0+qH2A0Em0Cp8aq78+NK9TII263CDVz2QXZsIT+yyV/gZc/j/vlwa+Epyg==", + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.12.tgz", + "integrity": "sha512-OzzZ52zS41YUbkCBfdXShQTe69j1gQDZ9HIX8miuC9C3rBCk9wIRjLiZZLrmX9V+Ftq/YEyv1JaVr5Y/hNtByg==", "dev": true, "requires": { "de-indent": "^1.0.2", @@ -26662,24 +26354,123 @@ "dev": true }, "vuex": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.1.2.tgz", - "integrity": "sha512-ha3jNLJqNhhrAemDXcmMJMKf1Zu4sybMPr9KxJIuOpVcsDQlTBYLLladav2U+g1AvdYDG5Gs0xBTb0M5pXXYFQ==" + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz", + "integrity": "sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==", + "requires": {} }, "vuex-router-sync": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/vuex-router-sync/-/vuex-router-sync-5.0.0.tgz", - "integrity": "sha512-Mry2sO4kiAG64714X1CFpTA/shUH1DmkZ26DFDtwoM/yyx6OtMrc+MxrU+7vvbNLO9LSpgwkiJ8W+rlmRtsM+w==" + "integrity": "sha512-Mry2sO4kiAG64714X1CFpTA/shUH1DmkZ26DFDtwoM/yyx6OtMrc+MxrU+7vvbNLO9LSpgwkiJ8W+rlmRtsM+w==", + "requires": {} }, "watchpack": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", - "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", "dev": true, "requires": { - "chokidar": "^2.0.2", + "chokidar": "^3.4.1", "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.1" + } + }, + "watchpack-chokidar2": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", + "dev": true, + "optional": true, + "requires": { + "chokidar": "^2.1.8" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "optional": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "optional": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "optional": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "optional": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + } } }, "wbuf": { @@ -26701,73 +26492,172 @@ } }, "webpack": { - "version": "4.28.4", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.28.4.tgz", - "integrity": "sha512-NxjD61WsK/a3JIdwWjtIpimmvE6UrRi3yG54/74Hk9rwNj5FPkA4DJCf1z4ByDWLkvZhTZE+P3C/eh6UD5lDcw==", + "version": "4.46.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-module-context": "1.7.11", - "@webassemblyjs/wasm-edit": "1.7.11", - "@webassemblyjs/wasm-parser": "1.7.11", - "acorn": "^5.6.2", - "acorn-dynamic-import": "^3.0.0", - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0", - "chrome-trace-event": "^1.0.0", - "enhanced-resolve": "^4.1.0", - "eslint-scope": "^4.0.0", + "@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.5.0", + "eslint-scope": "^4.0.3", "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.3.0", - "loader-utils": "^1.1.0", - "memory-fs": "~0.4.1", - "micromatch": "^3.1.8", - "mkdirp": "~0.5.0", - "neo-async": "^2.5.0", - "node-libs-browser": "^2.0.0", - "schema-utils": "^0.4.4", - "tapable": "^1.1.0", - "terser-webpack-plugin": "^1.1.0", - "watchpack": "^1.5.0", - "webpack-sources": "^1.3.0" + "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.7.4", + "webpack-sources": "^1.4.1" }, "dependencies": { - "ajv-keywords": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.3.0.tgz", - "integrity": "sha512-CMzN9S62ZOO4sA/mJZIO4S++ZM7KFWzH3PPWkveLhy4OZ9i1/VatgwWMD46w/XbGCBy7Ye0gCk+Za6mmyfKK7g==", + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", "dev": true }, "eslint-scope": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", - "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", "dev": true, "requires": { "esrecurse": "^4.1.0", "estraverse": "^4.1.1" } }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, "schema-utils": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", - "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "dev": true, "requires": { "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", "ajv-keywords": "^3.1.0" } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + } } } }, "webpack-bundle-analyzer": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.6.0.tgz", - "integrity": "sha512-orUfvVYEfBMDXgEKAKVvab5iQ2wXneIEorGNsyuOyVYpjYrI7CUOhhXNDd3huMwQ3vNNWWlGP+hzflMFYNzi2g==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.9.0.tgz", + "integrity": "sha512-Ob8amZfCm3rMB1ScjQVlbYYUEJyEjdEtQ92jqiFUYt5VkEeO2v5UMbv49P/gnmCZm3A6yaFQzCBvpZqN4MUsdA==", "dev": true, "requires": { - "acorn": "^6.0.7", - "acorn-walk": "^6.1.1", + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1", "bfj": "^6.1.1", "chalk": "^2.4.1", "commander": "^2.18.0", @@ -26775,18 +26665,12 @@ "express": "^4.16.3", "filesize": "^3.6.1", "gzip-size": "^5.0.0", - "lodash": "^4.17.15", + "lodash": "^4.17.19", "mkdirp": "^0.5.1", "opener": "^1.5.1", "ws": "^6.0.0" }, "dependencies": { - "acorn": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz", - "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==", - "dev": true - }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -26796,9 +26680,9 @@ } }, "webpack-chain": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-6.3.0.tgz", - "integrity": "sha512-Kri8p/JrfcQtBRghyxKN8r9E1mbxzywQPAnQbyvXN+rtSa8au1Qb7JOoyAGfEBFkOvU3XH4JeGd57CHa0QXfMQ==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-6.5.1.tgz", + "integrity": "sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==", "dev": true, "requires": { "deepmerge": "^1.5.2", @@ -26806,9 +26690,9 @@ } }, "webpack-dev-middleware": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", - "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", + "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", "dev": true, "requires": { "memory-fs": "^0.4.1", @@ -26819,9 +26703,9 @@ } }, "webpack-dev-server": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.10.1.tgz", - "integrity": "sha512-AGG4+XrrXn4rbZUueyNrQgO4KGnol+0wm3MPdqGLmmA+NofZl3blZQKxZ9BND6RDNuvAK9OMYClhjOSnxpWRoA==", + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz", + "integrity": "sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ==", "dev": true, "requires": { "ansi-html": "0.0.7", @@ -26832,37 +26716,70 @@ "debug": "^4.1.1", "del": "^4.1.1", "express": "^4.17.1", - "html-entities": "^1.2.1", + "html-entities": "^1.3.1", "http-proxy-middleware": "0.19.1", "import-local": "^2.0.0", "internal-ip": "^4.3.0", "ip": "^1.1.5", "is-absolute-url": "^3.0.3", "killable": "^1.0.1", - "loglevel": "^1.6.6", + "loglevel": "^1.6.8", "opn": "^5.5.0", "p-retry": "^3.0.1", - "portfinder": "^1.0.25", + "portfinder": "^1.0.26", "schema-utils": "^1.0.0", - "selfsigned": "^1.10.7", + "selfsigned": "^1.10.8", "semver": "^6.3.0", "serve-index": "^1.9.1", - "sockjs": "0.3.19", - "sockjs-client": "1.4.0", - "spdy": "^4.0.1", + "sockjs": "^0.3.21", + "sockjs-client": "^1.5.0", + "spdy": "^4.0.2", "strip-ansi": "^3.0.1", "supports-color": "^6.1.0", "url": "^0.11.0", "webpack-dev-middleware": "^3.7.2", "webpack-log": "^2.0.0", "ws": "^6.2.1", - "yargs": "12.0.5" + "yargs": "^13.3.2" }, "dependencies": { "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, "chokidar": { @@ -26886,59 +26803,169 @@ } }, "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, "requires": { - "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" }, "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^4.1.0" } } } }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "dev": true, + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + } + }, "is-absolute-url": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", "dev": true }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, "requires": { - "number-is-nan": "^1.0.0" + "binary-extensions": "^1.0.0" } }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } }, "supports-color": { "version": "6.1.0", @@ -26949,59 +26976,56 @@ "has-flag": "^3.0.0" } }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true - }, "wrap-ansi": { - "version": "2.1.0", - "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" }, "dependencies": { - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "ansi-regex": "^4.1.0" } } } }, "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "dev": true, "requires": { - "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" + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" } }, "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, "requires": { "camelcase": "^5.0.0", @@ -27030,9 +27054,9 @@ } }, "webpack-sources": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", - "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", "dev": true, "requires": { "source-list-map": "^2.0.0", @@ -27048,20 +27072,20 @@ } }, "websocket-driver": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", - "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", "dev": true, "requires": { - "http-parser-js": ">=0.4.0 <0.4.11", + "http-parser-js": ">=0.5.1", "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" } }, "websocket-extensions": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", - "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true }, "which": { @@ -27073,6 +27097,19 @@ "isexe": "^2.0.0" } }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", @@ -27085,16 +27122,10 @@ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - }, "worker-farm": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", - "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", "dev": true, "requires": { "errno": "~0.1.7" @@ -27102,7 +27133,7 @@ }, "wrap-ansi": { "version": "6.2.0", - "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, "requires": { @@ -27118,12 +27149,11 @@ "dev": true }, "ansi-styles": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.0.tgz", - "integrity": "sha512-7kFQgnEaMdRtwf6uSfUnVr9gSGC7faurn+J/Mv90/W+iTtN0405/nLdopfMWwchyxhbGYl6TC4Sccn9TUkGAgg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "@types/color-name": "^1.1.1", "color-convert": "^2.0.1" } }, @@ -27142,12 +27172,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -27155,9 +27179,9 @@ "dev": true }, "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "requires": { "emoji-regex": "^8.0.0", @@ -27201,40 +27225,36 @@ } }, "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", + "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", "dev": true }, "yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, "yargs": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.0.2.tgz", - "integrity": "sha512-GH/X/hYt+x5hOat4LMnCqMd8r5Cv78heOMIJn1hr7QPPBqfeC6p89Y78+WB9yGDvfpCvgasfmWLzNzEioOUD9Q==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^16.1.0" + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" }, "dependencies": { "ansi-regex": { @@ -27243,76 +27263,51 @@ "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" + "wrap-ansi": "^7.0.0" } }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "color-name": "~1.1.4" } }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "requires": { "emoji-regex": "^8.0.0", @@ -27328,18 +27323,31 @@ "requires": { "ansi-regex": "^5.0.0" } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", + "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", + "dev": true } } }, "yargs-parser": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-16.1.0.tgz", - "integrity": "sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } + "version": "20.2.7", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", + "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", + "dev": true }, "yorkie": { "version": "2.0.0", diff --git a/frontend/package.json b/frontend/package.json index 602b53fe..47a3cb5d 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -12,6 +12,7 @@ "dependencies": { "ace-builds": "^1.4.7", "clipboard": "^2.0.4", + "core-js": "^3.9.1", "js-base64": "^2.5.1", "lodash.clonedeep": "^4.5.0", "lodash.throttle": "^4.1.1", From 0d179eca4d719dc3b8a3fa1dac81cd445c45014b Mon Sep 17 00:00:00 2001 From: Oleg Lobanov Date: Sun, 21 Mar 2021 13:19:53 +0100 Subject: [PATCH 0497/1487] chore(release): 2.14.0 --- CHANGELOG.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5bf6a410..17cd79b3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,21 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [2.14.0](https://github.com/filebrowser/filebrowser/compare/v2.13.0...v2.14.0) (2021-03-21) + + +### Features + +* add health check handler ([a721dc1](https://github.com/filebrowser/filebrowser/commit/a721dc1f314732e60d331a1a7da97d06e0e8b613)) + + +### Bug Fixes + +* hide dotfile error on share ([5f4a031](https://github.com/filebrowser/filebrowser/commit/5f4a0317ab5685fe4a558df74e604c12e04a1c10)) +* prefix handling on http router ([93a35ad](https://github.com/filebrowser/filebrowser/commit/93a35ad2516accdcb9735db509550979d01de2c3)) +* qr code url on share ([22f4be8](https://github.com/filebrowser/filebrowser/commit/22f4be8f54162b7cf494177705ffb8b09117bd01)) +* text file detection on editor ([eeadc53](https://github.com/filebrowser/filebrowser/commit/eeadc532fe6057969b3c1a4726f236851b154cfa)) + ## [2.13.0](https://github.com/filebrowser/filebrowser/compare/v2.12.1...v2.13.0) (2021-03-14) From da54bd6c214d7ee39b71d710ddfe6dd25fc4e5d6 Mon Sep 17 00:00:00 2001 From: Oleg Lobanov Date: Sun, 21 Mar 2021 14:24:23 +0100 Subject: [PATCH 0498/1487] fix: display public routes with header proxy auth --- frontend/src/main.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/frontend/src/main.js b/frontend/src/main.js index 035c32eb..5368fc29 100644 --- a/frontend/src/main.js +++ b/frontend/src/main.js @@ -10,10 +10,14 @@ import App from "@/App"; sync(store, router); async function start() { - if (loginPage) { - await validateLogin(); - } else { - await login("", "", ""); + try { + if (loginPage) { + await validateLogin(); + } else { + await login("", "", ""); + } + } catch (e) { + console.log(e); } if (recaptcha) { From 4b068b3058c7b10b7a2d96379a41de706e0fb54d Mon Sep 17 00:00:00 2001 From: Oleg Lobanov Date: Sun, 21 Mar 2021 14:24:33 +0100 Subject: [PATCH 0499/1487] chore(release): 2.14.1 --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 17cd79b3..a4f05dce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +### [2.14.1](https://github.com/filebrowser/filebrowser/compare/v2.14.0...v2.14.1) (2021-03-21) + + +### Bug Fixes + +* display public routes with header proxy auth ([da54bd6](https://github.com/filebrowser/filebrowser/commit/da54bd6c214d7ee39b71d710ddfe6dd25fc4e5d6)) + ## [2.14.0](https://github.com/filebrowser/filebrowser/compare/v2.13.0...v2.14.0) (2021-03-21) From e1a6f593e1824e7fa4345a61dff5b1bb8cd22d05 Mon Sep 17 00:00:00 2001 From: Ramires Viana <59319979+ramiresviana@users.noreply.github.com> Date: Tue, 23 Mar 2021 13:13:46 +0000 Subject: [PATCH 0500/1487] fix: error causes panic on upload --- http/resource.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/http/resource.go b/http/resource.go index 2547a2ed..cd103778 100644 --- a/http/resource.go +++ b/http/resource.go @@ -125,7 +125,10 @@ func resourcePostHandler(fileCache FileCache) handleFunc { } err = d.RunHook(func() error { - info, _ := writeFile(d.user.Fs, r.URL.Path, r.Body) + info, writeErr := writeFile(d.user.Fs, r.URL.Path, r.Body) + if writeErr != nil { + return writeErr + } etag := fmt.Sprintf(`"%x%x"`, info.ModTime().UnixNano(), info.Size()) w.Header().Set("ETag", etag) @@ -155,7 +158,10 @@ var resourcePutHandler = withUser(func(w http.ResponseWriter, r *http.Request, d } err := d.RunHook(func() error { - info, _ := writeFile(d.user.Fs, r.URL.Path, r.Body) + info, writeErr := writeFile(d.user.Fs, r.URL.Path, r.Body) + if writeErr != nil { + return writeErr + } etag := fmt.Sprintf(`"%x%x"`, info.ModTime().UnixNano(), info.Size()) w.Header().Set("ETag", etag) From e9baf0c4b688fab291cdc842ec464c7a7a816499 Mon Sep 17 00:00:00 2001 From: Ramires Viana <59319979+ramiresviana@users.noreply.github.com> Date: Tue, 23 Mar 2021 18:18:02 +0000 Subject: [PATCH 0501/1487] fix: empty text file on editor --- files/file.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/file.go b/files/file.go index c1451878..3892d991 100644 --- a/files/file.go +++ b/files/file.go @@ -170,7 +170,7 @@ func (i *FileInfo) detectType(modify, saveContent, readHeader bool) error { case strings.HasPrefix(mimetype, "image"): i.Type = "image" return nil - case (strings.HasPrefix(mimetype, "text") || (len(buffer) > 0 && !isBinary(buffer))) && i.Size <= 10*1024*1024: // 10 MB + case (strings.HasPrefix(mimetype, "text") || !isBinary(buffer)) && i.Size <= 10*1024*1024: // 10 MB i.Type = "text" if !modify { From b521dec8f9b14dd92248c429e902ebc639046389 Mon Sep 17 00:00:00 2001 From: Ramires Viana <59319979+ramiresviana@users.noreply.github.com> Date: Wed, 24 Mar 2021 12:23:05 +0000 Subject: [PATCH 0502/1487] fix: hidden editor header on Safari --- frontend/src/css/styles.css | 4 ++-- frontend/src/views/Files.vue | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/src/css/styles.css b/frontend/src/css/styles.css index 80138364..e32856e3 100644 --- a/frontend/src/css/styles.css +++ b/frontend/src/css/styles.css @@ -109,6 +109,7 @@ #previewer { background-color: rgba(0, 0, 0, 0.9); + padding-top: 4em; position: fixed; top: 0; left: 0; @@ -142,7 +143,6 @@ } #previewer .preview { - margin-top: 4em; text-align: center; height: calc(100vh - 4em); } @@ -209,7 +209,7 @@ #editor-container { background-color: #fafafa; position: fixed; - margin-top: 4em; + padding-top: 4em; top: 0; left: 0; width: 100%; diff --git a/frontend/src/views/Files.vue b/frontend/src/views/Files.vue index c49a1c5c..eba7acab 100644 --- a/frontend/src/views/Files.vue +++ b/frontend/src/views/Files.vue @@ -1,6 +1,6 @@ @@ -256,9 +266,10 @@ export default { this.token = file.token || ""; this.updateRequest(file); - this.setLoading(false); } catch (e) { this.error = e; + } finally { + this.setLoading(false); } }, keyEvent(event) { diff --git a/frontend/src/views/files/Listing.vue b/frontend/src/views/files/Listing.vue index 26023b85..e3c8c253 100644 --- a/frontend/src/views/files/Listing.vue +++ b/frontend/src/views/files/Listing.vue @@ -114,8 +114,13 @@ />
-
-

+
+

+
+
+
+
+
{{ $t("files.loading") }}

@@ -284,7 +289,15 @@ export default { }; }, computed: { - ...mapState(["req", "selected", "user", "show", "multiple", "selected"]), + ...mapState([ + "req", + "selected", + "user", + "show", + "multiple", + "selected", + "loading", + ]), ...mapGetters(["selectedCount"]), nameSorted() { return this.req.sorting.by === "name"; @@ -799,17 +812,13 @@ export default { viewMode: this.user.viewMode === "mosaic" ? "list" : "mosaic", }; - try { - await users.update(data, ["viewMode"]); + users.update(data, ["viewMode"]).catch(this.$showError); - // Await ensures correct value for setItemWeight() - await this.$store.commit("updateUser", data); + // Await ensures correct value for setItemWeight() + await this.$store.commit("updateUser", data); - this.setItemWeight(); - this.fillWindow(); - } catch (e) { - this.$showError(e); - } + this.setItemWeight(); + this.fillWindow(); }, upload: function () { if ( diff --git a/frontend/src/views/files/Preview.vue b/frontend/src/views/files/Preview.vue index 26521153..73600567 100644 --- a/frontend/src/views/files/Preview.vue +++ b/frontend/src/views/files/Preview.vue @@ -46,15 +46,14 @@ -
+
- - @@ -13,6 +13,10 @@ import HeaderBar from "@/components/header/HeaderBar"; const errors = { + 0: { + icon: "cloud_off", + message: "errors.connection", + }, 403: { icon: "error", message: "errors.forbidden", @@ -33,11 +37,17 @@ export default { HeaderBar, }, props: ["errorCode", "showHeader"], - data: function () { - return { - icon: errors[this.errorCode].icon, - message: this.$t(errors[this.errorCode].message), - }; + computed: { + code() { + return this.errorCode === "0" || + this.errorCode === "404" || + this.errorCode === "403" + ? parseInt(this.errorCode) + : 500; + }, + info() { + return errors[this.code]; + }, }, }; diff --git a/frontend/src/views/Files.vue b/frontend/src/views/Files.vue index 02d73c61..3ae407c2 100644 --- a/frontend/src/views/Files.vue +++ b/frontend/src/views/Files.vue @@ -4,7 +4,7 @@ - +

@@ -67,11 +67,6 @@ export default { return "preview"; } }, - errorCode() { - return this.error.message === "404" || this.error.message === "403" - ? parseInt(this.error.message) - : 500; - }, }, created() { this.fetchData(); diff --git a/frontend/src/views/Share.vue b/frontend/src/views/Share.vue index cc370cfe..790bf64d 100644 --- a/frontend/src/views/Share.vue +++ b/frontend/src/views/Share.vue @@ -60,7 +60,7 @@

- +
- +
@@ -73,6 +78,7 @@ export default { error: null, originalUser: null, user: {}, + createUserDir: false, }; }, created() { @@ -98,7 +104,8 @@ export default { try { if (this.isNew) { - let { defaults } = await settings.get(); + let { defaults, createUserDir } = await settings.get(); + this.createUserDir = createUserDir; this.user = { ...defaults, username: "", diff --git a/go.mod b/go.mod index 6253cbb5..f0c025fe 100644 --- a/go.mod +++ b/go.mod @@ -15,6 +15,7 @@ require ( github.com/mholt/archiver/v3 v3.5.1 github.com/mitchellh/go-homedir v1.1.0 github.com/pelletier/go-toml/v2 v2.0.0 + github.com/shirou/gopsutil/v3 v3.22.5 github.com/spf13/afero v1.8.2 github.com/spf13/cobra v1.4.0 github.com/spf13/pflag v1.0.5 @@ -39,6 +40,7 @@ require ( github.com/fsnotify/fsnotify v1.5.1 // indirect github.com/go-acme/lego v2.5.0+incompatible // indirect github.com/go-errors/errors v1.1.1 // indirect + github.com/go-ole/go-ole v1.2.6 // indirect github.com/golang/geo v0.0.0-20200319012246-673a6f80352d // indirect github.com/golang/snappy v0.0.2 // indirect github.com/google/uuid v1.1.2 // indirect @@ -55,12 +57,13 @@ require ( github.com/pelletier/go-toml v1.9.4 // indirect github.com/pierrec/lz4/v4 v4.1.2 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/shirou/gopsutil/v3 v3.22.5 // indirect + github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect github.com/spf13/cast v1.4.1 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/subosito/gotenv v1.2.0 // indirect github.com/ulikunitz/xz v0.5.9 // indirect github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect + github.com/yusufpapurcu/wmi v1.2.2 // indirect golang.org/x/net v0.0.0-20220412020605-290c469a71a5 // indirect golang.org/x/sys v0.0.0-20220412211240-33da011f77ad // indirect golang.org/x/text v0.3.7 // indirect diff --git a/go.sum b/go.sum index 1ef3e038..6cc2c5d4 100644 --- a/go.sum +++ b/go.sum @@ -101,6 +101,7 @@ github.com/go-errors/errors v1.1.1/go.mod h1:psDX2osz5VnTOnFWbDeWwS7yejl+uV3FEWE github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/golang-jwt/jwt/v4 v4.4.1 h1:pC5DB52sCeK48Wlb9oPcdhnjkz1TKt1D/P7WKJ0kUcQ= github.com/golang-jwt/jwt/v4 v4.4.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= @@ -245,6 +246,7 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= @@ -289,6 +291,7 @@ github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.etcd.io/bbolt v1.3.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU= diff --git a/http/settings.go b/http/settings.go index 0148b383..78ce9b0d 100644 --- a/http/settings.go +++ b/http/settings.go @@ -9,24 +9,26 @@ import ( ) type settingsData struct { - Signup bool `json:"signup"` - CreateUserDir bool `json:"createUserDir"` - Defaults settings.UserDefaults `json:"defaults"` - Rules []rules.Rule `json:"rules"` - Branding settings.Branding `json:"branding"` - Shell []string `json:"shell"` - Commands map[string][]string `json:"commands"` + Signup bool `json:"signup"` + CreateUserDir bool `json:"createUserDir"` + UserHomeBasePath string `json:"userHomeBasePath"` + Defaults settings.UserDefaults `json:"defaults"` + Rules []rules.Rule `json:"rules"` + Branding settings.Branding `json:"branding"` + Shell []string `json:"shell"` + Commands map[string][]string `json:"commands"` } var settingsGetHandler = withAdmin(func(w http.ResponseWriter, r *http.Request, d *data) (int, error) { data := &settingsData{ - Signup: d.settings.Signup, - CreateUserDir: d.settings.CreateUserDir, - Defaults: d.settings.Defaults, - Rules: d.settings.Rules, - Branding: d.settings.Branding, - Shell: d.settings.Shell, - Commands: d.settings.Commands, + Signup: d.settings.Signup, + CreateUserDir: d.settings.CreateUserDir, + UserHomeBasePath: d.settings.UserHomeBasePath, + Defaults: d.settings.Defaults, + Rules: d.settings.Rules, + Branding: d.settings.Branding, + Shell: d.settings.Shell, + Commands: d.settings.Commands, } return renderJSON(w, r, data) @@ -41,6 +43,7 @@ var settingsPutHandler = withAdmin(func(w http.ResponseWriter, r *http.Request, d.settings.Signup = req.Signup d.settings.CreateUserDir = req.CreateUserDir + d.settings.UserHomeBasePath = req.UserHomeBasePath d.settings.Defaults = req.Defaults d.settings.Rules = req.Rules d.settings.Branding = req.Branding diff --git a/settings/dir.go b/settings/dir.go index a1971c05..25289ee4 100644 --- a/settings/dir.go +++ b/settings/dir.go @@ -2,9 +2,10 @@ package settings import ( "errors" + "fmt" "log" "os" - "path/filepath" + "path" "regexp" "strings" @@ -19,47 +20,23 @@ var ( // MakeUserDir makes the user directory according to settings. func (s *Settings) MakeUserDir(username, userScope, serverRoot string) (string, error) { - var err error userScope = strings.TrimSpace(userScope) - if userScope == "" || userScope == "./" { - userScope = "." + if userScope == "" && s.CreateUserDir { + username = cleanUsername(username) + if username == "" || username == "-" || username == "." { + log.Printf("create user: invalid user for home dir creation: [%s]", username) + return "", errors.New("invalid user for home dir creation") + } + userScope = path.Join(s.UserHomeBasePath, username) } - if !s.CreateUserDir { - return userScope, nil - } + userScope = path.Join("/", userScope) fs := afero.NewBasePathFs(afero.NewOsFs(), serverRoot) - - // Use the default auto create logic only if specific scope is not the default scope - if userScope != s.Defaults.Scope { - // Try create the dir, for example: settings.Defaults.Scope == "." and userScope == "./foo" - if userScope != "." { - err = fs.MkdirAll(userScope, os.ModePerm) - if err != nil { - log.Printf("create user: failed to mkdir user home dir: [%s]", userScope) - } - } - return userScope, err + if err := fs.MkdirAll(userScope, os.ModePerm); err != nil { + return "", fmt.Errorf("failed to create user home dir: [%s]: %w", userScope, err) } - - // Clean username first - username = cleanUsername(username) - if username == "" || username == "-" || username == "." { - log.Printf("create user: invalid user for home dir creation: [%s]", username) - return "", errors.New("invalid user for home dir creation") - } - - // Create default user dir - userHomeBase := filepath.Join(s.Defaults.Scope, "users") - userHome := filepath.Join(userHomeBase, username) - err = fs.MkdirAll(userHome, os.ModePerm) - if err != nil { - log.Printf("create user: failed to mkdir user home dir: [%s]", userHome) - } else { - log.Printf("create user: mkdir user home dir: [%s] successfully.", userHome) - } - return userHome, err + return userScope, nil } func cleanUsername(s string) string { diff --git a/settings/settings.go b/settings/settings.go index 9cd45af6..9e0c4fe2 100644 --- a/settings/settings.go +++ b/settings/settings.go @@ -7,20 +7,23 @@ import ( "github.com/filebrowser/filebrowser/v2/rules" ) +const DefaultUsersHomeBasePath = "/users" + // AuthMethod describes an authentication method. type AuthMethod string // Settings contain the main settings of the application. type Settings struct { - Key []byte `json:"key"` - Signup bool `json:"signup"` - CreateUserDir bool `json:"createUserDir"` - Defaults UserDefaults `json:"defaults"` - AuthMethod AuthMethod `json:"authMethod"` - Branding Branding `json:"branding"` - Commands map[string][]string `json:"commands"` - Shell []string `json:"shell"` - Rules []rules.Rule `json:"rules"` + Key []byte `json:"key"` + Signup bool `json:"signup"` + CreateUserDir bool `json:"createUserDir"` + UserHomeBasePath string `json:"userHomeBasePath"` + Defaults UserDefaults `json:"defaults"` + AuthMethod AuthMethod `json:"authMethod"` + Branding Branding `json:"branding"` + Commands map[string][]string `json:"commands"` + Shell []string `json:"shell"` + Rules []rules.Rule `json:"rules"` } // GetRules implements rules.Provider. diff --git a/settings/storage.go b/settings/storage.go index d88f5c28..8498d3bf 100644 --- a/settings/storage.go +++ b/settings/storage.go @@ -26,7 +26,14 @@ func NewStorage(back StorageBackend) *Storage { // Get returns the settings for the current instance. func (s *Storage) Get() (*Settings, error) { - return s.back.Get() + set, err := s.back.Get() + if err != nil { + return nil, err + } + if set.UserHomeBasePath == "" { + set.UserHomeBasePath = DefaultUsersHomeBasePath + } + return set, nil } var defaultEvents = []string{ diff --git a/users/users.go b/users/users.go index ab5421bf..120e4599 100644 --- a/users/users.go +++ b/users/users.go @@ -92,11 +92,7 @@ func (u *User) Clean(baseScope string, fields ...string) error { if u.Fs == nil { scope := u.Scope - - if !filepath.IsAbs(scope) { - scope = filepath.Join(baseScope, scope) - } - + scope = filepath.Join(baseScope, filepath.Join("/", scope)) //nolint:gocritic u.Fs = afero.NewBasePathFs(afero.NewOsFs(), scope) } From 540ddf47a7f2addf01c6c34c562f11434d350086 Mon Sep 17 00:00:00 2001 From: Oleg Lobanov Date: Fri, 3 Jun 2022 16:11:07 +0200 Subject: [PATCH 0642/1487] chore(release): 2.22.0 --- CHANGELOG.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 54faa62d..7d43c889 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,41 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [2.22.0](https://github.com/filebrowser/filebrowser/compare/v2.21.1...v2.22.0) (2022-06-03) + + +### Features + +* add branding to the window title ([#1850](https://github.com/filebrowser/filebrowser/issues/1850)) ([f8dfbf7](https://github.com/filebrowser/filebrowser/commit/f8dfbf7eeecf3ee99ce906276777676f44e81e34)) +* add disk usage information to the sidebar ([d1d8e3e](https://github.com/filebrowser/filebrowser/commit/d1d8e3e3405381b01317fe07ae729d70219415a7)) +* automatically focus username field on login page ([596c732](https://github.com/filebrowser/filebrowser/commit/596c73288f5b53bd7e79ab8046136dc75ff078b9)) +* invalid symlink icon ([b14b911](https://github.com/filebrowser/filebrowser/commit/b14b9114f837cacf9f7788e88c503142a81585be)) +* page title localization ([8a43413](https://github.com/filebrowser/filebrowser/commit/8a43413f888440dc11b11c509abff45f706033d8)) + + +### Bug Fixes + +* allow CSP inline styling ([5da9d74](https://github.com/filebrowser/filebrowser/commit/5da9d74da62c69c431361bcaf0c07dc1da237ea8)) +* disable autocapitalize of login input (closes [#1910](https://github.com/filebrowser/filebrowser/issues/1910)) ([aed3af5](https://github.com/filebrowser/filebrowser/commit/aed3af58384697dc3de30f1450b837b0b74e4fa6)) +* drag-and-drop folder upload ([e677c78](https://github.com/filebrowser/filebrowser/commit/e677c78471f09f8d2c21d63d7388e908924aa6d9)) +* expired token error ([c3bd118](https://github.com/filebrowser/filebrowser/commit/c3bd1188aa396cbf00c593d259a9da0eddeeea3b)) +* folder info on upload list ([d1d7b23](https://github.com/filebrowser/filebrowser/commit/d1d7b23da6cc0c9a2f2f3e17021ec4f13ea557dd)) +* network error object message ([fc209f6](https://github.com/filebrowser/filebrowser/commit/fc209f64deff7a2793980d11ee738f7140c444cf)) +* set correct scope when user home creation is enabled ([02730bb](https://github.com/filebrowser/filebrowser/commit/02730bb9bfa3bfbfa251bb4736fc4c08d33609ab)) + + +### Build + +* **backend:** bump dependency versions ([7c9a75e](https://github.com/filebrowser/filebrowser/commit/7c9a75e72588f92d58fb58d32cdac352bce73b20)) +* **deps:** bump async from 2.6.3 to 2.6.4 in /frontend ([#1933](https://github.com/filebrowser/filebrowser/issues/1933)) ([e5fa96b](https://github.com/filebrowser/filebrowser/commit/e5fa96b666eac2e46a02bde832488baca5f2cd6d)) +* **deps:** bump eventsource from 1.1.0 to 1.1.1 in /frontend ([dd50369](https://github.com/filebrowser/filebrowser/commit/dd503695a1a8119a631643414d3a9070890f3f3c)) +* **deps:** bump minimist from 1.2.5 to 1.2.6 in /frontend ([#1889](https://github.com/filebrowser/filebrowser/issues/1889)) ([a74c72d](https://github.com/filebrowser/filebrowser/commit/a74c72db451207e1275988f3d208fa6d6f0468a9)) +* **deps:** bump minimist from 1.2.5 to 1.2.6 in /tools ([#1891](https://github.com/filebrowser/filebrowser/issues/1891)) ([f5b1e10](https://github.com/filebrowser/filebrowser/commit/f5b1e106183fb2192063a72fd195fc8c181ba8f9)) +* **deps:** bump moment from 2.29.1 to 2.29.2 in /frontend ([#1900](https://github.com/filebrowser/filebrowser/issues/1900)) ([040584c](https://github.com/filebrowser/filebrowser/commit/040584c86563d869c7a05887ef1f781bce653033)) +* **deps:** bump url-parse from 1.5.7 to 1.5.10 in /frontend ([#1841](https://github.com/filebrowser/filebrowser/issues/1841)) ([b2ad3f7](https://github.com/filebrowser/filebrowser/commit/b2ad3f73686a2abaa4fc62963fba6f83c9da9b5e)) +* **frontend:** bump node version from 14 to 16 ([ac3ead8](https://github.com/filebrowser/filebrowser/commit/ac3ead8dcef9c64c6be8b5cbbceee143b2cc77a8)) +* upgrade go version to 1.18.1 ([6bd34c7](https://github.com/filebrowser/filebrowser/commit/6bd34c76324780c1edd8625d5b22f5a84990852b)) + ### [2.21.1](https://github.com/filebrowser/filebrowser/compare/v2.21.0...v2.21.1) (2022-02-22) From b16982df0f7da9eedb678455298b42ac55c86666 Mon Sep 17 00:00:00 2001 From: Oleg Lobanov Date: Fri, 3 Jun 2022 16:13:56 +0200 Subject: [PATCH 0643/1487] build(backend): bump go version to 1.8.3 --- .github/workflows/main.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 9b63df43..e5c3165f 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -24,7 +24,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-go@v2 with: - go-version: 1.18.1 + go-version: 1.18.3 - run: make lint-backend lint-commits: runs-on: ubuntu-latest @@ -57,7 +57,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-go@v2 with: - go-version: 1.18.1 + go-version: 1.18.3 - run: make test-backend test: runs-on: ubuntu-latest @@ -76,7 +76,7 @@ jobs: fetch-depth: 0 - uses: actions/setup-go@v2 with: - go-version: 1.18.1 + go-version: 1.18.3 - uses: actions/setup-node@v2 with: node-version: '16' From 1e7d3b25c283c556d98c65f1c2f46db4e4178995 Mon Sep 17 00:00:00 2001 From: Jeffrey Schiller Date: Mon, 6 Jun 2022 10:57:19 -0400 Subject: [PATCH 0644/1487] fix: use correct basepath prefix for preview urls (#1971) --- frontend/src/api/utils.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/frontend/src/api/utils.js b/frontend/src/api/utils.js index ddddcfa7..b995bcb8 100644 --- a/frontend/src/api/utils.js +++ b/frontend/src/api/utils.js @@ -62,7 +62,11 @@ export function removePrefix(url) { } export function createURL(endpoint, params = {}, auth = true) { - const url = new URL(encodePath(endpoint), origin + baseURL); + let prefix = baseURL; + if (prefix[prefix.length] !== "/") { + prefix = prefix + "/"; + } + const url = new URL(prefix + encodePath(endpoint), origin); const searchParams = { ...(auth && { auth: store.state.jwt }), From c211b967194ce4d7df2dcf7d73bc876589c17238 Mon Sep 17 00:00:00 2001 From: Oleg Lobanov Date: Mon, 6 Jun 2022 16:59:25 +0200 Subject: [PATCH 0645/1487] chore(release): 2.22.1 --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7d43c889..54924897 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,18 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +### [2.22.1](https://github.com/filebrowser/filebrowser/compare/v2.22.0...v2.22.1) (2022-06-06) + + +### Bug Fixes + +* use correct basepath prefix for preview urls ([#1971](https://github.com/filebrowser/filebrowser/issues/1971)) ([1e7d3b2](https://github.com/filebrowser/filebrowser/commit/1e7d3b25c283c556d98c65f1c2f46db4e4178995)) + + +### Build + +* **backend:** bump go version to 1.8.3 ([b16982d](https://github.com/filebrowser/filebrowser/commit/b16982df0f7da9eedb678455298b42ac55c86666)) + ## [2.22.0](https://github.com/filebrowser/filebrowser/compare/v2.21.1...v2.22.0) (2022-06-03) From dcf0bc65bfcfc7df3804d7392598a92019468cf7 Mon Sep 17 00:00:00 2001 From: Po Chen Date: Fri, 10 Jun 2022 20:05:05 +1000 Subject: [PATCH 0646/1487] fix: preview url building fix (#1976) --- frontend/src/api/utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/api/utils.js b/frontend/src/api/utils.js index b995bcb8..87d6a243 100644 --- a/frontend/src/api/utils.js +++ b/frontend/src/api/utils.js @@ -63,7 +63,7 @@ export function removePrefix(url) { export function createURL(endpoint, params = {}, auth = true) { let prefix = baseURL; - if (prefix[prefix.length] !== "/") { + if (!prefix.endsWith("/")) { prefix = prefix + "/"; } const url = new URL(prefix + encodePath(endpoint), origin); From 577c0efa9cff13628d5e3bac710ef568a00949e0 Mon Sep 17 00:00:00 2001 From: langren1353 <14857127+langren1353@users.noreply.github.com> Date: Mon, 13 Jun 2022 18:50:39 +0800 Subject: [PATCH 0647/1487] fix: don't calculate usage for files (#1973) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: use incorrect suffix and return no 500(#1972、#1967) * chore: set progress bar to small Co-authored-by: Ramires Viana <59319979+ramiresviana@users.noreply.github.com> * chore: refactoring Co-authored-by: Oleg Lobanov Co-authored-by: Ramires Viana <59319979+ramiresviana@users.noreply.github.com> --- frontend/src/components/Sidebar.vue | 8 ++++---- http/resource.go | 7 +++++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/frontend/src/components/Sidebar.vue b/frontend/src/components/Sidebar.vue index 3b151845..24345838 100644 --- a/frontend/src/components/Sidebar.vue +++ b/frontend/src/components/Sidebar.vue @@ -85,7 +85,7 @@ v-if="$router.currentRoute.path.includes('/files/')" style="width: 90%; margin: 2em 2.5em 3em 2.5em" > - +
{{ usage.used }} of {{ usage.total }} used
@@ -102,9 +102,9 @@ > {{ version }} - {{ $t("sidebar.help") }} + + {{ $t("sidebar.help") }} +

diff --git a/http/resource.go b/http/resource.go index f46287ca..3a12538a 100644 --- a/http/resource.go +++ b/http/resource.go @@ -351,6 +351,13 @@ var diskUsage = withUser(func(w http.ResponseWriter, r *http.Request, d *data) ( return errToStatus(err), err } fPath := file.RealPath() + if !file.IsDir { + return renderJSON(w, r, &DiskUsageResponse{ + Total: 0, + Used: 0, + }) + } + usage, err := disk.UsageWithContext(r.Context(), fPath) if err != nil { return errToStatus(err), err From 8118afd0ac0d25f4503c98879369764c35e7408e Mon Sep 17 00:00:00 2001 From: Oleg Lobanov Date: Mon, 13 Jun 2022 16:13:10 +0200 Subject: [PATCH 0648/1487] build(backend): upgrade golangci-lint to 1.46.2 (#1991) --- http/auth.go | 12 +- http/users.go | 5 +- tools/go.mod | 83 +++++++------ tools/go.sum | 313 +++++++++++++++++++++++++++++++++++--------------- 4 files changed, 272 insertions(+), 141 deletions(-) diff --git a/http/auth.go b/http/auth.go index 447af91a..7f094f02 100644 --- a/http/auth.go +++ b/http/auth.go @@ -33,7 +33,7 @@ type userInfo struct { type authToken struct { User userInfo `json:"user"` - jwt.StandardClaims + jwt.RegisteredClaims } type extractor []string @@ -74,8 +74,8 @@ func withUser(fn handleFunc) handleFunc { return http.StatusUnauthorized, nil } - expired := !tk.VerifyExpiresAt(time.Now().Add(time.Hour).Unix(), true) - updated := d.store.Users.LastUpdate(tk.User.ID) > tk.IssuedAt + expired := !tk.VerifyExpiresAt(time.Now().Add(time.Hour), true) + updated := tk.IssuedAt != nil && tk.IssuedAt.Unix() < d.store.Users.LastUpdate(tk.User.ID) if expired || updated { w.Header().Add("X-Renew-Token", "true") @@ -187,9 +187,9 @@ func printToken(w http.ResponseWriter, _ *http.Request, d *data, user *users.Use HideDotfiles: user.HideDotfiles, DateFormat: user.DateFormat, }, - StandardClaims: jwt.StandardClaims{ - IssuedAt: time.Now().Unix(), - ExpiresAt: time.Now().Add(TokenExpirationTime).Unix(), + RegisteredClaims: jwt.RegisteredClaims{ + IssuedAt: jwt.NewNumericDate(time.Now()), + ExpiresAt: jwt.NewNumericDate(time.Now().Add(TokenExpirationTime)), Issuer: "File Browser", }, } diff --git a/http/users.go b/http/users.go index be7a2d41..d7caffa1 100644 --- a/http/users.go +++ b/http/users.go @@ -6,9 +6,10 @@ import ( "net/http" "sort" "strconv" - "strings" "github.com/gorilla/mux" + "golang.org/x/text/cases" + "golang.org/x/text/language" "github.com/filebrowser/filebrowser/v2/errors" "github.com/filebrowser/filebrowser/v2/users" @@ -176,7 +177,7 @@ var userPutHandler = withSelfOrAdmin(func(w http.ResponseWriter, r *http.Request } for k, v := range req.Which { - v = strings.Title(v) + v = cases.Title(language.English).String(v) req.Which[k] = v if v == "Password" { diff --git a/tools/go.mod b/tools/go.mod index 13f499ef..b6db2a43 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -3,16 +3,17 @@ module github.com/filebrowser/filebrowser/v2/tools go 1.18 require ( - github.com/golangci/golangci-lint v1.45.2 - golang.org/x/tools v0.1.10 + github.com/golangci/golangci-lint v1.46.2 + golang.org/x/tools v0.1.11-0.20220316014157-77aa08bb151a ) require ( 4d63.com/gochecknoglobals v0.1.0 // indirect - github.com/Antonboom/errname v0.1.5 // indirect - github.com/Antonboom/nilnil v0.1.0 // indirect - github.com/BurntSushi/toml v1.0.0 // indirect + github.com/Antonboom/errname v0.1.6 // indirect + github.com/Antonboom/nilnil v0.1.1 // indirect + github.com/BurntSushi/toml v1.1.0 // indirect github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect + github.com/GaijinEntertainment/go-exhaustruct/v2 v2.1.0 // indirect github.com/Masterminds/semver v1.5.0 // indirect github.com/OpenPeeDeeP/depguard v1.1.0 // indirect github.com/alexkohler/prealloc v1.0.0 // indirect @@ -20,14 +21,14 @@ require ( github.com/ashanbrown/makezero v1.1.1 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bkielbasa/cyclop v1.2.0 // indirect - github.com/blizzy78/varnamelen v0.6.1 // indirect + github.com/blizzy78/varnamelen v0.8.0 // indirect github.com/bombsimon/wsl/v3 v3.3.0 // indirect - github.com/breml/bidichk v0.2.2 // indirect - github.com/breml/errchkjson v0.2.3 // indirect + github.com/breml/bidichk v0.2.3 // indirect + github.com/breml/errchkjson v0.3.0 // indirect github.com/butuzov/ireturn v0.1.1 // indirect github.com/cespare/xxhash/v2 v2.1.2 // indirect github.com/charithe/durationcheck v0.0.9 // indirect - github.com/chavacava/garif v0.0.0-20210405164556-e8a0a408d6af // indirect + github.com/chavacava/garif v0.0.0-20220316182200-5cad0b5181d4 // indirect github.com/daixiang0/gci v0.3.3 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/denis-tingaikin/go-header v0.4.3 // indirect @@ -35,9 +36,10 @@ require ( github.com/ettle/strcase v0.1.1 // indirect github.com/fatih/color v1.13.0 // indirect github.com/fatih/structtag v1.2.0 // indirect - github.com/fsnotify/fsnotify v1.5.1 // indirect - github.com/fzipp/gocyclo v0.4.0 // indirect - github.com/go-critic/go-critic v0.6.2 // indirect + github.com/firefart/nonamedreturns v1.0.1 // indirect + github.com/fsnotify/fsnotify v1.5.4 // indirect + github.com/fzipp/gocyclo v0.5.1 // indirect + github.com/go-critic/go-critic v0.6.3 // indirect github.com/go-toolsmith/astcast v1.0.0 // indirect github.com/go-toolsmith/astcopy v1.0.0 // indirect github.com/go-toolsmith/astequal v1.0.1 // indirect @@ -51,7 +53,7 @@ require ( github.com/golang/protobuf v1.5.2 // indirect github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2 // indirect github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a // indirect - github.com/golangci/go-misc v0.0.0-20180628070357-927a3d87b613 // indirect + github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe // indirect github.com/golangci/gofmt v0.0.0-20190930125516-244bba706f1a // indirect github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 // indirect github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca // indirect @@ -76,13 +78,14 @@ require ( github.com/julz/importas v0.1.0 // indirect github.com/kisielk/errcheck v1.6.0 // indirect github.com/kisielk/gotool v1.0.0 // indirect - github.com/kulti/thelper v0.5.1 // indirect + github.com/kulti/thelper v0.6.2 // indirect github.com/kunwardeep/paralleltest v1.0.3 // indirect github.com/kyoh86/exportloopref v0.1.8 // indirect - github.com/ldez/gomoddirectives v0.2.2 // indirect + github.com/ldez/gomoddirectives v0.2.3 // indirect github.com/ldez/tagliatelle v0.3.1 // indirect github.com/leonklingele/grouper v1.1.0 // indirect - github.com/magiconair/properties v1.8.5 // indirect + github.com/lufeee/execinquery v1.2.1 // indirect + github.com/magiconair/properties v1.8.6 // indirect github.com/maratori/testpackage v1.0.1 // indirect github.com/matoous/godox v0.0.0-20210227103229-6504466cf951 // indirect github.com/mattn/go-colorable v0.1.12 // indirect @@ -90,44 +93,47 @@ require ( github.com/mattn/go-runewidth v0.0.9 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect github.com/mbilski/exhaustivestruct v1.2.0 // indirect - github.com/mgechev/revive v1.1.4 // indirect + github.com/mgechev/revive v1.2.1 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect - github.com/mitchellh/mapstructure v1.4.3 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/moricho/tparallel v0.2.1 // indirect github.com/nakabonne/nestif v0.3.1 // indirect github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354 // indirect github.com/nishanths/exhaustive v0.7.11 // indirect - github.com/nishanths/predeclared v0.2.1 // indirect + github.com/nishanths/predeclared v0.2.2 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect - github.com/pelletier/go-toml v1.9.4 // indirect + github.com/pelletier/go-toml v1.9.5 // indirect + github.com/pelletier/go-toml/v2 v2.0.0 // indirect github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/polyfloyd/go-errorlint v0.0.0-20211125173453-6d6d39c5bb8b // indirect - github.com/prometheus/client_golang v1.7.1 // indirect + github.com/polyfloyd/go-errorlint v1.0.0 // indirect + github.com/prometheus/client_golang v1.12.1 // indirect github.com/prometheus/client_model v0.2.0 // indirect - github.com/prometheus/common v0.10.0 // indirect - github.com/prometheus/procfs v0.6.0 // indirect - github.com/quasilyte/go-ruleguard v0.3.15 // indirect - github.com/quasilyte/gogrep v0.0.0-20220103110004-ffaa07af02e3 // indirect + github.com/prometheus/common v0.32.1 // indirect + github.com/prometheus/procfs v0.7.3 // indirect + github.com/quasilyte/go-ruleguard v0.3.16-0.20220213074421-6aa060fab41a // indirect + github.com/quasilyte/gogrep v0.0.0-20220120141003-628d8b3623b5 // indirect github.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95 // indirect + github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 // indirect github.com/ryancurrah/gomodguard v1.2.3 // indirect github.com/ryanrolds/sqlclosecheck v0.3.0 // indirect github.com/sanposhiho/wastedassign/v2 v2.0.6 // indirect - github.com/securego/gosec/v2 v2.10.0 // indirect + github.com/securego/gosec/v2 v2.11.0 // indirect github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c // indirect github.com/sirupsen/logrus v1.8.1 // indirect github.com/sivchari/containedctx v1.0.2 // indirect - github.com/sivchari/tenv v1.4.7 // indirect + github.com/sivchari/tenv v1.5.0 // indirect github.com/sonatard/noctx v0.0.1 // indirect github.com/sourcegraph/go-diff v0.6.1 // indirect - github.com/spf13/afero v1.6.0 // indirect + github.com/spf13/afero v1.8.2 // indirect github.com/spf13/cast v1.4.1 // indirect github.com/spf13/cobra v1.4.0 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/spf13/viper v1.10.1 // indirect + github.com/spf13/viper v1.11.0 // indirect github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect + github.com/stbenjam/no-sprintf-host-port v0.1.1 // indirect github.com/stretchr/objx v0.1.1 // indirect github.com/stretchr/testify v1.7.1 // indirect github.com/subosito/gotenv v1.2.0 // indirect @@ -135,25 +141,26 @@ require ( github.com/tdakkota/asciicheck v0.1.1 // indirect github.com/tetafro/godot v1.4.11 // indirect github.com/timakin/bodyclose v0.0.0-20210704033933-f49887972144 // indirect - github.com/tomarrell/wrapcheck/v2 v2.5.0 // indirect + github.com/tomarrell/wrapcheck/v2 v2.6.1 // indirect github.com/tommy-muehle/go-mnd/v2 v2.5.0 // indirect github.com/ultraware/funlen v0.0.3 // indirect github.com/ultraware/whitespace v0.0.5 // indirect github.com/uudashr/gocognit v1.0.5 // indirect github.com/yagipy/maintidx v1.0.0 // indirect - github.com/yeya24/promlinter v0.1.1-0.20210918184747-d757024714a1 // indirect + github.com/yeya24/promlinter v0.2.0 // indirect gitlab.com/bosi/decorder v0.2.1 // indirect + golang.org/x/exp/typeparams v0.0.0-20220218215828-6cf2b201936e // indirect golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 // indirect golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect - golang.org/x/sys v0.0.0-20220209214540-3681064d5158 // indirect + golang.org/x/sys v0.0.0-20220422013727-9388b58f7150 // indirect golang.org/x/text v0.3.7 // indirect - golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect - google.golang.org/protobuf v1.27.1 // indirect - gopkg.in/ini.v1 v1.66.2 // indirect + golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f // indirect + google.golang.org/protobuf v1.28.0 // indirect + gopkg.in/ini.v1 v1.66.4 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect - honnef.co/go/tools v0.2.2 // indirect - mvdan.cc/gofumpt v0.3.0 // indirect + honnef.co/go/tools v0.3.1 // indirect + mvdan.cc/gofumpt v0.3.1 // indirect mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed // indirect mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b // indirect mvdan.cc/unparam v0.0.0-20211214103731-d0ef000c54e5 // indirect diff --git a/tools/go.sum b/tools/go.sum index 33033349..a01400ea 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -6,6 +6,7 @@ cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= @@ -19,6 +20,7 @@ cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOY cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= @@ -27,15 +29,22 @@ cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSU cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= +cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= +cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= +cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= +cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= +cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= +cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/firestore v1.6.0/go.mod h1:afJwI0vaXwAG54kI7A//lP/lSPDkQORQuMkv56TxEPU= +cloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= @@ -47,18 +56,22 @@ cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0Zeo cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= contrib.go.opencensus.io/exporter/stackdriver v0.13.4/go.mod h1:aXENhDJ1Y4lIg4EUaVTwzvYETVNZk10Pu26tevFKLUc= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/Antonboom/errname v0.1.5 h1:IM+A/gz0pDhKmlt5KSNTVAvfLMb+65RxavBXpRtCUEg= -github.com/Antonboom/errname v0.1.5/go.mod h1:DugbBstvPFQbv/5uLcRRzfrNqKE9tVdVCqWCLp6Cifo= -github.com/Antonboom/nilnil v0.1.0 h1:DLDavmg0a6G/F4Lt9t7Enrbgb3Oph6LnDE6YVsmTt74= -github.com/Antonboom/nilnil v0.1.0/go.mod h1:PhHLvRPSghY5Y7mX4TW+BHZQYo1A8flE5H20D3IPZBo= +github.com/Antonboom/errname v0.1.6 h1:LzIJZlyLOCSu51o3/t2n9Ck7PcoP9wdbrdaW6J8fX24= +github.com/Antonboom/errname v0.1.6/go.mod h1:7lz79JAnuoMNDAWE9MeeIr1/c/VpSUWatBv2FH9NYpI= +github.com/Antonboom/nilnil v0.1.1 h1:PHhrh5ANKFWRBh7TdYmyyq2gyT2lotnvFvvFbylF81Q= +github.com/Antonboom/nilnil v0.1.1/go.mod h1:L1jBqoWM7AOeTD+tSquifKSesRHs4ZdaxvZR+xdJEaI= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/toml v1.0.0 h1:dtDWrepsVPfW9H/4y7dDgFc2MBUSeJhlaDtK13CxFlU= -github.com/BurntSushi/toml v1.0.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/BurntSushi/toml v1.1.0 h1:ksErzDEI1khOiGPgpwuI7x2ebx/uXQNw7xJpn9Eq1+I= +github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 h1:sHglBQTwgx+rWPdisA5ynNEsoARbiCBOyGcJM4/OzsM= github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= +github.com/GaijinEntertainment/go-exhaustruct/v2 v2.1.0 h1:LAPPhJ4KR5Z8aKVZF5S48csJkxL5RMKmE/98fMs1u5M= +github.com/GaijinEntertainment/go-exhaustruct/v2 v2.1.0/go.mod h1:LGOGuvEgCfCQsy3JF2tRmpGDpzA53iZfyGEWSPwQ6/4= github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= @@ -72,6 +85,7 @@ github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuy github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pOcUuw= github.com/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE= github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= @@ -80,6 +94,7 @@ github.com/aokoli/goutils v1.0.1/go.mod h1:SijmP0QR8LtwsmDs8Yii5Z/S4trXFGFC2oO5g github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/ashanbrown/forbidigo v1.3.0 h1:VkYIwb/xxdireGAdJNZoo24O4lmnEWkactplBlWTShc= @@ -96,14 +111,14 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bkielbasa/cyclop v1.2.0 h1:7Jmnh0yL2DjKfw28p86YTd/B4lRGcNuu12sKE35sM7A= github.com/bkielbasa/cyclop v1.2.0/go.mod h1:qOI0yy6A7dYC4Zgsa72Ppm9kONl0RoIlPbzot9mhmeI= -github.com/blizzy78/varnamelen v0.6.1 h1:kttPCLzXFa+0nt++Cw9fb7GrSSM4KkyIAoX/vXsbuqA= -github.com/blizzy78/varnamelen v0.6.1/go.mod h1:zy2Eic4qWqjrxa60jG34cfL0VXcSwzUrIx68eJPb4Q8= +github.com/blizzy78/varnamelen v0.8.0 h1:oqSblyuQvFsW1hbBHh1zfwrKe3kcSj0rnXkKzsQ089M= +github.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkApdHeyESmyR7k= github.com/bombsimon/wsl/v3 v3.3.0 h1:Mka/+kRLoQJq7g2rggtgQsjuI/K5Efd87WX96EWFxjM= github.com/bombsimon/wsl/v3 v3.3.0/go.mod h1:st10JtZYLE4D5sC7b8xV4zTKZwAQjCH/Hy2Pm1FNZIc= -github.com/breml/bidichk v0.2.2 h1:w7QXnpH0eCBJm55zGCTJveZEkQBt6Fs5zThIdA6qQ9Y= -github.com/breml/bidichk v0.2.2/go.mod h1:zbfeitpevDUGI7V91Uzzuwrn4Vls8MoBMrwtt78jmso= -github.com/breml/errchkjson v0.2.3 h1:97eGTmR/w0paL2SwfRPI1jaAZHaH/fXnxWTw2eEIqE0= -github.com/breml/errchkjson v0.2.3/go.mod h1:jZEATw/jF69cL1iy7//Yih8yp/mXp2CBoBr9GJwCAsY= +github.com/breml/bidichk v0.2.3 h1:qe6ggxpTfA8E75hdjWPZ581sY3a2lnl0IRxLQFelECI= +github.com/breml/bidichk v0.2.3/go.mod h1:8u2C6DnAy0g2cEq+k/A2+tr9O1s+vHGxWn0LTc70T2A= +github.com/breml/errchkjson v0.3.0 h1:YdDqhfqMT+I1vIxPSas44P+9Z9HzJwCeAzjB8PxP1xw= +github.com/breml/errchkjson v0.3.0/go.mod h1:9Cogkyv9gcT8HREpzi3TiqBxCqDzo8awa92zSDFcofU= github.com/butuzov/ireturn v0.1.1 h1:QvrO2QF2+/Cx1WA/vETCIYBKtRjc30vesdoPUNo1EbY= github.com/butuzov/ireturn v0.1.1/go.mod h1:Wh6Zl3IMtTpaIKbmwzqi6olnM9ptYQxxVacMsOEFPoc= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -113,16 +128,22 @@ github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cb github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/charithe/durationcheck v0.0.9 h1:mPP4ucLrf/rKZiIG/a9IPXHGlh8p4CzgpyTy6EEutYk= github.com/charithe/durationcheck v0.0.9/go.mod h1:SSbRIBVfMjCi/kEB6K65XEA83D6prSM8ap1UCpNKtgg= -github.com/chavacava/garif v0.0.0-20210405164556-e8a0a408d6af h1:spmv8nSH9h5oCQf40jt/ufBCt9j0/58u4G+rkeMqXGI= -github.com/chavacava/garif v0.0.0-20210405164556-e8a0a408d6af/go.mod h1:Qjyv4H3//PWVzTeCezG2b9IRn6myJxJSr4TD/xo6ojU= +github.com/chavacava/garif v0.0.0-20220316182200-5cad0b5181d4 h1:tFXjAxje9thrTF4h57Ckik+scJjTWdwAtZqZPtOT48M= +github.com/chavacava/garif v0.0.0-20220316182200-5cad0b5181d4/go.mod h1:W8EnPSQ8Nv4fUjc/v1/8tHFqhuOJXnRub0dTfuAQktU= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= +github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= @@ -157,6 +178,7 @@ github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5y github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/protoc-gen-validate v0.0.14/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/esimonov/ifshort v1.0.4 h1:6SID4yGWfRae/M7hkVDVVyppy8q/v9OuxNdmjLQStBA= @@ -170,25 +192,29 @@ github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= +github.com/firefart/nonamedreturns v1.0.1 h1:fSvcq6ZpK/uBAgJEGMvzErlzyM4NELLqqdTofVjVNag= +github.com/firefart/nonamedreturns v1.0.1/go.mod h1:D3dpIBojGGNh5UfElmwPu73SwDCm+VKhHYqwlNOk2uQ= github.com/frankban/quicktest v1.14.2 h1:SPb1KFFmM+ybpEjPUhCCkZOM5xlovT5UbrMvWnXyBns= -github.com/frankban/quicktest v1.14.2/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI= github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= +github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= +github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= github.com/fullstorydev/grpcurl v1.6.0/go.mod h1:ZQ+ayqbKMJNhzLmbpCiurTVlaK2M/3nqZCxaQ2Ze/sM= -github.com/fzipp/gocyclo v0.4.0 h1:IykTnjwh2YLyYkGa0y92iTTEQcnyAz0r9zOo15EbJ7k= -github.com/fzipp/gocyclo v0.4.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA= +github.com/fzipp/gocyclo v0.5.1 h1:L66amyuYogbxl0j2U+vGqJXusPF2IkduvXLnYD5TFgw= +github.com/fzipp/gocyclo v0.5.1/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-critic/go-critic v0.6.2 h1:L5SDut1N4ZfsWZY0sH4DCrsHLHnhuuWak2wa165t9gs= -github.com/go-critic/go-critic v0.6.2/go.mod h1:td1s27kfmLpe5G/DPjlnFI7o1UCzePptwU7Az0V5iCM= +github.com/go-critic/go-critic v0.6.3 h1:abibh5XYBTASawfTQ0rA7dVtQT+6KzpGqb/J+DxRDaw= +github.com/go-critic/go-critic v0.6.3/go.mod h1:c6b3ZP1MQ7o6lPR7Rv3lEf7pYQUmAcx8ABHgdZCQt/k= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-redis/redis v6.15.8+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= @@ -228,6 +254,7 @@ github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4er github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= @@ -261,12 +288,12 @@ github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2 h1:23T5iq8rbUYlhpt5 github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2/go.mod h1:k9Qvh+8juN+UKMCS/3jFtGICgW8O96FVaZsaxdzDkR4= github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a h1:w8hkcTqaFpzKqonE9uMCefW1WDie15eSP/4MssdenaM= github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk= -github.com/golangci/go-misc v0.0.0-20180628070357-927a3d87b613 h1:9kfjN3AdxcbsZBf8NjltjWihK2QfBBBZuv91cMFfDHw= -github.com/golangci/go-misc v0.0.0-20180628070357-927a3d87b613/go.mod h1:SyvUF2NxV+sN8upjjeVYr5W7tyxaT1JVtvhKhOn2ii8= +github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe h1:6RGUuS7EGotKx6J5HIP8ZtyMdiDscjMLfRBSPuzVVeo= +github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe/go.mod h1:gjqyPShc/m8pEMpk0a3SeagVb0kaqvhscv+i9jI5ZhQ= github.com/golangci/gofmt v0.0.0-20190930125516-244bba706f1a h1:iR3fYXUjHCR97qWS8ch1y9zPNsgXThGwjKPrYfqMPks= github.com/golangci/gofmt v0.0.0-20190930125516-244bba706f1a/go.mod h1:9qCChq59u/eW8im404Q2WWTrnBUQKjpNYKMbU4M7EFU= -github.com/golangci/golangci-lint v1.45.2 h1:9I3PzkvscJkFAQpTQi5Ga0V4qWdJERajX1UZ7QqkW+I= -github.com/golangci/golangci-lint v1.45.2/go.mod h1:f20dpzMmUTRp+oYnX0OGjV1Au3Jm2JeI9yLqHq1/xsI= +github.com/golangci/golangci-lint v1.46.2 h1:o90t/Xa6dhJbvy8Bz2RpzUXqrkigp19DLStMolTZbyo= +github.com/golangci/golangci-lint v1.46.2/go.mod h1:3DkdHnxn9eoTTrpT2gB0TEv8KSziuoqe9FitgQLHvAY= github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 h1:MfyDlzVjl1hoaPzPD4Gpb/QgoRfSBR0jdhwGyAWwMSA= github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0/go.mod h1:66R6K6P6VWk9I95jvqGxkqJxVWGFy9XlDwLwVz1RCFg= github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca h1:kNY3/svz5T29MYHubXix4aDDuE3RWHkPvopM/EDv/MA= @@ -310,6 +337,7 @@ github.com/google/pprof v0.0.0-20200507031123-427632fa3b1c/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= @@ -326,6 +354,10 @@ github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= +github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= +github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= +github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= +github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gookit/color v1.5.0/go.mod h1:43aQb+Zerm/BWh2GnrgOQm7ffz7tvQXEKV6BFMl7wAo= github.com/gordonklaus/ineffassign v0.0.0-20200309095847-7953dde2c7bf/go.mod h1:cuNKsD1zp2v6XfE/orVX2QE1LC+i254ceGcVeDT3pTU= github.com/gordonklaus/ineffassign v0.0.0-20210914165742-4cc7213b9bc8 h1:PVRE9d4AQKmbelZ7emNig1+NT27DUmKZn5qXxfio54U= @@ -337,7 +369,6 @@ github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/ad github.com/gostaticanalysis/analysisutil v0.0.0-20190318220348-4088753ea4d3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= github.com/gostaticanalysis/analysisutil v0.0.3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= github.com/gostaticanalysis/analysisutil v0.1.0/go.mod h1:dMhHRU9KTiDcuLGdy87/2gTR8WruwYZrKdRq9m1O6uw= -github.com/gostaticanalysis/analysisutil v0.4.1/go.mod h1:18U/DLpRgIUd459wGxVHE0fRgmo1UgHDcbw7F5idXu0= github.com/gostaticanalysis/analysisutil v0.7.1 h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk= github.com/gostaticanalysis/analysisutil v0.7.1/go.mod h1:v21E3hY37WKMGSnbsw2S/ojApNWb6C1//mXO48CXbVc= github.com/gostaticanalysis/comment v1.3.0/go.mod h1:xMicKDx7XRXYdVwY9f9wQpDJVnqWxw9wCauCMKp+IBI= @@ -357,18 +388,23 @@ github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgf github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.12.1/go.mod h1:8XEsbTttt/W+VvjtQhLACqCisSPWTxCZ7sBRjU6iH9c= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= +github.com/hashicorp/consul/api v1.12.0/go.mod h1:6pVBMo0ebnYdt2S3H87XhekM/HHrUoTD2XXb/VrZVy0= github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-hclog v1.2.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= +github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= @@ -383,9 +419,10 @@ github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uG github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= -github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= -github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= +github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= +github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= +github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= +github.com/hashicorp/serf v0.9.7/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= @@ -410,14 +447,18 @@ github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfC github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/jonboulle/clockwork v0.2.0/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/juju/ratelimit v1.0.1/go.mod h1:qapgC/Gy+xNh9UxzV13HGGl/6UXNN+ct+vwSgWNm/qk= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/julz/importas v0.1.0 h1:F78HnrsjY3cR7j0etXy5+TU1Zuy7Xt08X/1aJnH5xXY= github.com/julz/importas v0.1.0/go.mod h1:oSFU2R4XK/P7kNBrnL/FEQlDGN1/6WoxXEjSSXO0DV0= github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= @@ -430,25 +471,25 @@ github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= -github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kulti/thelper v0.5.1 h1:Uf4CUekH0OvzQTFPrWkstJvXgm6pnNEtQu3HiqEkpB0= -github.com/kulti/thelper v0.5.1/go.mod h1:vMu2Cizjy/grP+jmsvOFDx1kYP6+PD1lqg4Yu5exl2U= +github.com/kulti/thelper v0.6.2 h1:K4xulKkwOCnT1CDms6Ex3uG1dvSMUUQe9zxgYQgbRXs= +github.com/kulti/thelper v0.6.2/go.mod h1:DsqKShOvP40epevkFrvIwkCMNYxMeTNjdWL4dqWHZ6I= github.com/kunwardeep/paralleltest v1.0.3 h1:UdKIkImEAXjR1chUWLn+PNXqWUGs//7tzMeWuP7NhmI= github.com/kunwardeep/paralleltest v1.0.3/go.mod h1:vLydzomDFpk7yu5UX02RmP0H8QfRPOV/oFhWN85Mjb4= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/kyoh86/exportloopref v0.1.8 h1:5Ry/at+eFdkX9Vsdw3qU4YkvGtzuVfzT4X7S77LoN/M= github.com/kyoh86/exportloopref v0.1.8/go.mod h1:1tUcJeiioIs7VWe5gcOObrux3lb66+sBqGZrRkMwPgg= -github.com/ldez/gomoddirectives v0.2.2 h1:p9/sXuNFArS2RLc+UpYZSI4KQwGMEDWC/LbtF5OPFVg= -github.com/ldez/gomoddirectives v0.2.2/go.mod h1:cpgBogWITnCfRq2qGoDkKMEVSaarhdBr6g8G04uz6d0= +github.com/ldez/gomoddirectives v0.2.3 h1:y7MBaisZVDYmKvt9/l1mjNCiSA1BVn34U0ObUcJwlhA= +github.com/ldez/gomoddirectives v0.2.3/go.mod h1:cpgBogWITnCfRq2qGoDkKMEVSaarhdBr6g8G04uz6d0= github.com/ldez/tagliatelle v0.3.1 h1:3BqVVlReVUZwafJUwQ+oxbx2BEX2vUG4Yu/NOfMiKiM= github.com/ldez/tagliatelle v0.3.1/go.mod h1:8s6WJQwEYHbKZDsp/LjArytKOG8qaMrKQQ3mFukHs88= github.com/leonklingele/grouper v1.1.0 h1:tC2y/ygPbMFSBOs3DcyaEMKnnwH7eYKzohOtRrf0SAg= @@ -458,10 +499,11 @@ github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lib/pq v1.9.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lib/pq v1.10.4/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/logrusorgru/aurora v0.0.0-20181002194514-a7b3b318ed4e/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= +github.com/lufeee/execinquery v1.2.1 h1:hf0Ems4SHcUGBxpGN7Jz78z1ppVkP/837ZlETPCEtOM= +github.com/lufeee/execinquery v1.2.1/go.mod h1:EC7DrEKView09ocscGHC+apXMIaorh4xqSxS/dy8SbM= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= -github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= +github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/maratori/testpackage v1.0.1 h1:QtJ5ZjqapShm0w5DosRjg0PRlSdAdlx+W6cCKoALdbQ= github.com/maratori/testpackage v1.0.1/go.mod h1:ddKdw+XG0Phzhx8BFDTKgpWP4i7MpApTE5fXSKAqwDU= github.com/matoous/godox v0.0.0-20210227103229-6504466cf951 h1:pWxk9e//NbPwfxat7RXkts09K+dEBJWakUWwICVqYbA= @@ -494,11 +536,11 @@ github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5 github.com/mbilski/exhaustivestruct v1.2.0 h1:wCBmUnSYufAHO6J4AVWY6ff+oxWxsVFrwgOdMUQePUo= github.com/mbilski/exhaustivestruct v1.2.0/go.mod h1:OeTBVxQWoEmB2J2JCHmXWPJ0aksxSUOUy+nvtVEfzXc= github.com/mgechev/dots v0.0.0-20210922191527-e955255bf517/go.mod h1:KQ7+USdGKfpPjXk4Ga+5XxQM4Lm4e3gAogrreFAYpOg= -github.com/mgechev/revive v1.1.4 h1:sZOjY6GU35Kr9jKa/wsKSHgrFz8eASIB5i3tqWZMp0A= -github.com/mgechev/revive v1.1.4/go.mod h1:ZZq2bmyssGh8MSPz3VVziqRNIMYTJXzP8MUKG90vZ9A= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/mgechev/revive v1.2.1 h1:GjFml7ZsoR0IrQ2E2YIvWFNS5GPDV7xNwvA5GM1HZC4= +github.com/mgechev/revive v1.2.1/go.mod h1:+Ro3wqY4vakcYNtkBWdZC7dBg1xSB6sp054wWwmeFm0= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.35/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= +github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= github.com/miekg/pkcs11 v1.0.2/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= @@ -508,21 +550,23 @@ github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrk github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.4.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.4.3 h1:OVowDSCllw/YjdLkam3/sm7wEtOy59d8ndGgCcyj8cs= github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/moricho/tparallel v0.2.1 h1:95FytivzT6rYzdJLdtfn6m1bfFJylOJK41+lgv/EHf4= github.com/moricho/tparallel v0.2.1/go.mod h1:fXEIZxG2vdfl0ZF8b42f5a78EhjjD5mX8qUplsoSU4k= github.com/mozilla/scribe v0.0.0-20180711195314-fb71baf557c1/go.mod h1:FIczTrinKo8VaLxe6PWTPEXRXDIHz2QAwiaBaP5/4a8= github.com/mozilla/tls-observatory v0.0.0-20210609171429-7bc42856d2e5/go.mod h1:FUqVoUPHSEdDR0MnFM3Dh8AU0pZHLXUD127SAJGER/s= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-proto-validators v0.0.0-20180403085117-0950a7990007/go.mod h1:m2XC9Qq0AlmmVksL6FktJCdTYyLk7V3fKyp0sl1yWQo= github.com/mwitkow/go-proto-validators v0.2.0/go.mod h1:ZfA1hW+UH/2ZHOWvQ3HnQaU0DtnpXu850MZiy+YUgcc= github.com/nakabonne/nestif v0.3.1 h1:wm28nZjhQY5HyYPx+weN3Q65k6ilSBxDb8v5S81B81U= @@ -534,8 +578,8 @@ github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLA github.com/nishanths/exhaustive v0.7.11 h1:xV/WU3Vdwh5BUH4N06JNUznb6d5zhRPOnlgCrpNYNKA= github.com/nishanths/exhaustive v0.7.11/go.mod h1:gX+MP7DWMKJmNa1HfMozK+u04hQd3na9i0hyqf3/dOI= github.com/nishanths/predeclared v0.0.0-20190419143655-18a43bb90ffc/go.mod h1:62PewwiQTlm/7Rj+cxVYqZvDIUc+JjZq6GHAC1fsObQ= -github.com/nishanths/predeclared v0.2.1 h1:1TXtjmy4f3YCFjTxRd8zcFHOmoUir+gp0ESzjFzG2sw= -github.com/nishanths/predeclared v0.2.1/go.mod h1:HvkGJcA3naj4lOwnFXFDkFxVtSqQMB9sbB1usJ+xjQE= +github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk= +github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= @@ -564,9 +608,14 @@ github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6 github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml v1.9.4 h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM= github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= +github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/pelletier/go-toml/v2 v2.0.0-beta.8/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= +github.com/pelletier/go-toml/v2 v2.0.0 h1:P7Bq0SaI8nsexyay5UAyDo+ICWy5MQPgEZ5+l8JQTKo= +github.com/pelletier/go-toml/v2 v2.0.0/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d h1:CdDQnGF8Nq9ocOS/xlSptM1N3BbrA6/kmaep5ggwaIA= github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d/go.mod h1:3OzsM7FXDQlpCiw2j81fOmAwQLnZnLGXVKUzeKQXIAw= @@ -575,49 +624,57 @@ github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= +github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/polyfloyd/go-errorlint v0.0.0-20211125173453-6d6d39c5bb8b h1:/BDyEJWLnDUYKGWdlNx/82qSaVu2bUok/EvPUtIGuvw= -github.com/polyfloyd/go-errorlint v0.0.0-20211125173453-6d6d39c5bb8b/go.mod h1:wi9BfjxjF/bwiZ701TzmfKu6UKC357IOAtNr0Td0Lvw= +github.com/polyfloyd/go-errorlint v1.0.0 h1:pDrQG0lrh68e602Wfp68BlUTRFoHn8PZYAjLgt2LFsM= +github.com/polyfloyd/go-errorlint v1.0.0/go.mod h1:KZy4xxPJyy88/gldCe5OdW6OQRtNO3EZE7hXzmnebgA= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.7.1 h1:NTGy1Ja9pByO+xAeH/qiWnLrKtr3hJPNjaVUwnjpdpA= +github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_golang v1.12.1 h1:ZiaPsmm9uiBeaSMRznKsCDNtPCS0T3JVDGF+06gjBzk= +github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.10.0 h1:RyRA7RzGXQZiW+tGMr7sxa85G1z0yOpM1qq5c8lNawc= +github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= +github.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4= +github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU= +github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/pseudomuto/protoc-gen-doc v1.3.2/go.mod h1:y5+P6n3iGrbKG+9O04V5ld71in3v/bX88wUwgt+U8EA= github.com/pseudomuto/protokit v0.2.0/go.mod h1:2PdH30hxVHsup8KpBTOXTBeMVhJZVio3Q8ViKSAXT0Q= github.com/quasilyte/go-ruleguard v0.3.1-0.20210203134552-1b5a410e1cc8/go.mod h1:KsAh3x0e7Fkpgs+Q9pNLS5XpFSvYCEVl5gP9Pp1xp30= -github.com/quasilyte/go-ruleguard v0.3.15 h1:iWYzp1z72IlXTioET0+XI6SjQdPfMGfuAiZiKznOt7g= -github.com/quasilyte/go-ruleguard v0.3.15/go.mod h1:NhuWhnlVEM1gT1A4VJHYfy9MuYSxxwHgxWoPsn9llB4= +github.com/quasilyte/go-ruleguard v0.3.16-0.20220213074421-6aa060fab41a h1:sWFavxtIctGrVs5SYZ5Ml1CvrDAs8Kf5kx2PI3C41dA= +github.com/quasilyte/go-ruleguard v0.3.16-0.20220213074421-6aa060fab41a/go.mod h1:VMX+OnnSw4LicdiEGtRSD/1X8kW7GuEscjYNr4cOIT4= github.com/quasilyte/go-ruleguard/dsl v0.3.0/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= -github.com/quasilyte/go-ruleguard/dsl v0.3.12-0.20220101150716-969a394a9451/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= -github.com/quasilyte/go-ruleguard/dsl v0.3.12/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= +github.com/quasilyte/go-ruleguard/dsl v0.3.16/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= github.com/quasilyte/go-ruleguard/rules v0.0.0-20201231183845-9e62ed36efe1/go.mod h1:7JTjp89EGyU1d6XfBiXihJNG37wB2VRkd125Q1u7Plc= github.com/quasilyte/go-ruleguard/rules v0.0.0-20211022131956-028d6511ab71/go.mod h1:4cgAphtvu7Ftv7vOT2ZOYhC6CvBxZixcasr8qIOTA50= -github.com/quasilyte/gogrep v0.0.0-20220103110004-ffaa07af02e3 h1:P4QPNn+TK49zJjXKERt/vyPbv/mCHB/zQ4flDYOMN+M= -github.com/quasilyte/gogrep v0.0.0-20220103110004-ffaa07af02e3/go.mod h1:wSEyW6O61xRV6zb6My3HxrQ5/8ke7NE2OayqCHa3xRM= +github.com/quasilyte/gogrep v0.0.0-20220120141003-628d8b3623b5 h1:PDWGei+Rf2bBiuZIbZmM20J2ftEy9IeUCHA8HbQqed8= +github.com/quasilyte/gogrep v0.0.0-20220120141003-628d8b3623b5/go.mod h1:wSEyW6O61xRV6zb6My3HxrQ5/8ke7NE2OayqCHa3xRM= github.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95 h1:L8QM9bvf68pVdQ3bCFZMDmnt9yqcMBro1pC7F+IPYMY= github.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95/go.mod h1:rlzQ04UMyJXu/aOvhd8qT+hvDrFpiwqp8MRXDY9szc0= +github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 h1:M8mH9eK4OUR4lu7Gd+PU1fV2/qnDNfzT635KRSObncs= +github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567/go.mod h1:DWNGW8A4Y+GyBgPuaQJuWiy0XYftx4Xm/y5Jqk9I6VQ= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.8.1 h1:geMPLpDpQOgVyCg5z5GoRwLHepNdb71NXb67XFkP+Eg= github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= @@ -629,12 +686,12 @@ github.com/ryancurrah/gomodguard v1.2.3/go.mod h1:rYbA/4Tg5c54mV1sv4sQTP5WOPBcoL github.com/ryanrolds/sqlclosecheck v0.3.0 h1:AZx+Bixh8zdUBxUA1NxbxVAS78vTPq4rCb8OUZI9xFw= github.com/ryanrolds/sqlclosecheck v0.3.0/go.mod h1:1gREqxyTGR3lVtpngyFo3hZAgk0KCtEdgEkHwDbigdA= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sagikazarmark/crypt v0.1.0/go.mod h1:B/mN0msZuINBtQ1zZLEQcegFJJf9vnYIR88KRMEuODE= +github.com/sagikazarmark/crypt v0.5.0/go.mod h1:l+nzl7KWh51rpzp2h7t4MZWyiEWdhNpOAnclKvg+mdA= github.com/sanposhiho/wastedassign/v2 v2.0.6 h1:+6/hQIHKNJAUixEj6EmOngGIisyeI+T3335lYTyxRoA= github.com/sanposhiho/wastedassign/v2 v2.0.6/go.mod h1:KyZ0MWTwxxBmfwn33zh3k1dmsbF2ud9pAAGfoLfjhtI= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/securego/gosec/v2 v2.10.0 h1:l6BET4EzWtyUXCpY2v7N92v0DDCas0L7ngg3bpqbr8g= -github.com/securego/gosec/v2 v2.10.0/go.mod h1:PVq8Ewh/nCN8l/kKC6zrGXSr7m2NmEK6ITIAWMtIaA0= +github.com/securego/gosec/v2 v2.11.0 h1:+PDkpzR41OI2jrw1q6AdXZCbsNGNGT7pQjal0H0cArI= +github.com/securego/gosec/v2 v2.11.0/go.mod h1:SX8bptShuG8reGC0XS09+a4H2BoWSJi+fscA+Pulbpo= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c h1:W65qqJCIOVP4jpqPQ0YvHYKwcMEMVWIzWC5iNQQfBTU= github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c/go.mod h1:/PevMnwAxekIXwN8qQyfc5gl2NlkB3CQlkizAbOkeBs= @@ -643,13 +700,14 @@ github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOms github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sivchari/containedctx v1.0.2 h1:0hLQKpgC53OVF1VT7CeoFHk9YKstur1XOgfYIc1yrHI= github.com/sivchari/containedctx v1.0.2/go.mod h1:PwZOeqm4/DLoJOqMSIJs3aKqXRX4YO+uXww087KZ7Bw= -github.com/sivchari/tenv v1.4.7 h1:FdTpgRlTue5eb5nXIYgS/lyVXSjugU8UUVDwhP1NLU8= -github.com/sivchari/tenv v1.4.7/go.mod h1:5nF+bITvkebQVanjU6IuMbvIot/7ReNsUV7I5NbprB0= +github.com/sivchari/tenv v1.5.0 h1:wxW0mFpKI6DIb3s6m1jCDYvkWXCskrimXMuGd0K/kSQ= +github.com/sivchari/tenv v1.5.0/go.mod h1:64yStXKSOxDfX47NlhVwND4dHwfZDdbp2Lyl018Icvg= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/sonatard/noctx v0.0.1 h1:VC1Qhl6Oxx9vvWo3UDgrGXYCeKCe3Wbw7qAWL6FrmTY= github.com/sonatard/noctx v0.0.1/go.mod h1:9D2D/EoULe8Yy2joDHJj7bv3sZoq9AaSb8B4lqBjiZI= @@ -657,8 +715,8 @@ github.com/sourcegraph/go-diff v0.6.1 h1:hmA1LzxW0n1c3Q4YbrFgg4P99GSnebYa3x8gr0H github.com/sourcegraph/go-diff v0.6.1/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= -github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= +github.com/spf13/afero v1.8.2 h1:xehSyVa0YnHWsJ49JFljMpg1HX19V6NDZ1fkm1Xznbo= +github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA= github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= @@ -674,11 +732,12 @@ github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnIn github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.9.0/go.mod h1:+i6ajR7OX2XaiBkrcZJFK21htRk7eDeLg7+O6bhUPP4= -github.com/spf13/viper v1.10.1 h1:nuJZuYpG7gTj/XqiUwg8bA0cp1+M2mC3J4g5luUYBKk= -github.com/spf13/viper v1.10.1/go.mod h1:IGlFPqhNAPKRxohIzWpI5QEy4kuI7tcl5WvR+8qy1rU= +github.com/spf13/viper v1.11.0 h1:7OX/1FS6n7jHD1zGrZTM7WtY13ZELRyosK4k93oPr44= +github.com/spf13/viper v1.11.0/go.mod h1:djo0X/bA5+tYVoCn+C7cAYJGcVn/qYLFTG8gdUsX7Zk= github.com/ssgreg/nlreturn/v2 v2.2.1 h1:X4XDI7jstt3ySqGU86YGAURbxw3oTDPK9sPEi6YEwQ0= github.com/ssgreg/nlreturn/v2 v2.2.1/go.mod h1:E/iiPB78hV7Szg2YfRgyIrk1AD6JVMTRkkxBiELzh2I= +github.com/stbenjam/no-sprintf-host-port v0.1.1 h1:tYugd/yrm1O0dV+ThCbaKZh195Dfm07ysF0U6JQXczc= +github.com/stbenjam/no-sprintf-host-port v0.1.1/go.mod h1:TLhvtIvONRzdmkFiio4O8LHsN9N74I+PhRquPsxpL0I= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1 h1:2vfRuCMp5sSVIDSqO8oNnWJq7mPa6KVP3iPIwFBuy8A= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -709,11 +768,12 @@ github.com/timakin/bodyclose v0.0.0-20210704033933-f49887972144/go.mod h1:Qimiff github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20200427203606-3cfed13b9966/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tomarrell/wrapcheck/v2 v2.5.0 h1:g27SGGHNoQdvHz4KZA9o4v09RcWzylR+b1yueE5ECiw= -github.com/tomarrell/wrapcheck/v2 v2.5.0/go.mod h1:68bQ/eJg55BROaRTbMjC7vuhL2OgfoG8bLp9ZyoBfyY= +github.com/tomarrell/wrapcheck/v2 v2.6.1 h1:Cf4a/iwuMp9s7kKrh74GTgijRVim0wEpKjgAsT7Wctw= +github.com/tomarrell/wrapcheck/v2 v2.6.1/go.mod h1:Eo+Opt6pyMW1b6cNllOcDSSoHO0aTJ+iF6BfCUbHltA= github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce/go.mod h1:o8v6yHRoik09Xen7gje4m9ERNah1d1PPsVq1VEx9vE4= github.com/tommy-muehle/go-mnd/v2 v2.5.0 h1:iAj0a8e6+dXSL7Liq0aXPox36FiN1dBbjA6lt9fl65s= github.com/tommy-muehle/go-mnd/v2 v2.5.0/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw= +github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ultraware/funlen v0.0.3 h1:5ylVWm8wsNwH5aWo9438pwvsK0QiqVuUrt9bn7S/iLA= github.com/ultraware/funlen v0.0.3/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA= @@ -729,8 +789,8 @@ github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778/go.mod h1:2MuV+tbUrU1z github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yagipy/maintidx v1.0.0 h1:h5NvIsCz+nRDapQ0exNv4aJ0yXSI0420omVANTv3GJM= github.com/yagipy/maintidx v1.0.0/go.mod h1:0qNf/I/CCZXSMhsRsrEPDZ+DkekpKLXAJfsTACwgXLk= -github.com/yeya24/promlinter v0.1.1-0.20210918184747-d757024714a1 h1:YAaOqqMTstELMMGblt6yJ/fcOt4owSYuw3IttMnKfAM= -github.com/yeya24/promlinter v0.1.1-0.20210918184747-d757024714a1/go.mod h1:rs5vtZzeBHqqMwXqFScncpCF6u06lezhZepno9AB1Oc= +github.com/yeya24/promlinter v0.2.0 h1:xFKDQ82orCU5jQujdaD8stOHiv8UN68BSdn2a8u8Y3o= +github.com/yeya24/promlinter v0.2.0/go.mod h1:u54lkmBOZrpEbQQ6gox2zWKKLKu2SGe+2KOiextY+IA= github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc= @@ -746,9 +806,9 @@ gitlab.com/bosi/decorder v0.2.1/go.mod h1:6C/nhLSbF6qZbYD8bRmISBwc6vcWdNsiIBkRvj go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= go.etcd.io/etcd v0.0.0-20200513171258-e048e166ab9c/go.mod h1:xCI7ZzBfRuGgBXyXO6yfWfDmlWd35khcWpUa4L0xI/k= -go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= -go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= +go.etcd.io/etcd/api/v3 v3.5.2/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A= +go.etcd.io/etcd/client/pkg/v3 v3.5.2/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/v2 v2.305.2/go.mod h1:2D7ZejHVMIfog1221iLSYlQRzrtECw3kz4I4VAQm3qI= go.mozilla.org/mozlog v0.0.0-20170222151521-4bb13139d403/go.mod h1:jHoPAGnDrCy6kaI2tAze5Prf0Nr0w/oNkROt2lw3n3o= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= @@ -772,18 +832,19 @@ go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= golang.org/x/crypto v0.0.0-20180501155221-613d6eafa307/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20220313003712-b769efc7c000/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -795,6 +856,8 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= +golang.org/x/exp/typeparams v0.0.0-20220218215828-6cf2b201936e h1:qyrTQ++p1afMkO4DPEeLGq/3oTsdlvdH4vqZUBWzUKM= +golang.org/x/exp/typeparams v0.0.0-20220218215828-6cf2b201936e/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -826,7 +889,6 @@ golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2 golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -863,16 +925,23 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 h1:CIJ76btIcR3eFI5EgSo6k1qKw9KJexJuRLI9G7Hp5wE= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5 h1:bRb386wvrE+oBNdF1d/Xh9mQrfQ4ecYhW5qJ5GvTGT4= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -888,6 +957,11 @@ golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -905,7 +979,6 @@ golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -947,6 +1020,7 @@ golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -957,14 +1031,18 @@ golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -972,15 +1050,26 @@ golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211105183446-c75c47738b0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211213223007-03aa0b5f6827/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220209214540-3681064d5158 h1:rm+CHSpPEEW2IsXUib1ThaHIjuBVZjxNgSKmBLFfD4c= +golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220422013727-9388b58f7150 h1:xHms4gcpe1YE7A3yIllJXP16CMAGuqwO2lX1mTyyRRc= +golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1073,13 +1162,13 @@ golang.org/x/tools v0.0.0-20201001104356-43ebab892c4c/go.mod h1:z6u4i615ZeAfBE4X golang.org/x/tools v0.0.0-20201002184944-ecd9fd270d5d/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= golang.org/x/tools v0.0.0-20201023174141-c8cfbd0f21e6/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201114224030-61ea331ec02b/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201230224404-63754364767c/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1-0.20210205202024-ef80cdb6ec6d/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= golang.org/x/tools v0.1.1-0.20210302220138-2ac05c832e1a/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= @@ -1092,13 +1181,15 @@ golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= golang.org/x/tools v0.1.8/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/tools v0.1.9-0.20211228192929-ee1ca4ffc4da/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= -golang.org/x/tools v0.1.10 h1:QjFRCZxdOhBJ/UNgnBZLbNV13DlbnK0quyivTnXJM20= golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= +golang.org/x/tools v0.1.11-0.20220316014157-77aa08bb151a h1:ofrrl6c6NG5/IOSx/R1cyiQxxjqlur0h/TvbUhkH0II= +golang.org/x/tools v0.1.11-0.20220316014157-77aa08bb151a/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f h1:GGU+dLjvlC3qDwqYgL6UgRmHXhOOgns0bZu2Ty5mm6U= +golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= @@ -1126,7 +1217,16 @@ google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtuk google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= +google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= +google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU= +google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= +google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= +google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= +google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= +google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= +google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1176,7 +1276,9 @@ google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -1193,6 +1295,24 @@ google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKr google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211008145708-270636b82663/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211028162531-8db9c33dc351/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= @@ -1222,6 +1342,9 @@ google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQ google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -1235,8 +1358,9 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -1248,9 +1372,8 @@ gopkg.in/cheggaaa/pb.v1 v1.0.28/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qS gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= -gopkg.in/ini.v1 v1.63.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.66.2 h1:XfR1dOYubytKy4Shzc2LHrrGhU0lDCfDGG1yLPmpgsI= -gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.66.4 h1:SsAcf+mM7mRZo2nJNGt8mZCjG8ZRaNGMURJw7BsIST4= +gopkg.in/ini.v1 v1.66.4/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= @@ -1275,10 +1398,10 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.2.2 h1:MNh1AVMyVX23VUHE2O27jm6lNj3vjO5DexS4A1xvnzk= -honnef.co/go/tools v0.2.2/go.mod h1:lPVVZ2BS5TfnjLyizF7o7hv7j9/L+8cZY2hLyjP9cGY= -mvdan.cc/gofumpt v0.3.0 h1:kTojdZo9AcEYbQYhGuLf/zszYthRdhDNDUi2JKTxas4= -mvdan.cc/gofumpt v0.3.0/go.mod h1:0+VyGZWleeIj5oostkOex+nDBA0eyavuDnDusAJ8ylo= +honnef.co/go/tools v0.3.1 h1:1kJlrWJLkaGXgcaeosRXViwviqjI7nkBvU2+sZW0AYc= +honnef.co/go/tools v0.3.1/go.mod h1:vlRD9XErLMGT+mDuofSr0mMMquscM/1nQqtRSsh6m70= +mvdan.cc/gofumpt v0.3.1 h1:avhhrOmv0IuvQVK7fvwV91oFSGAk5/6Po8GXTzICeu8= +mvdan.cc/gofumpt v0.3.1/go.mod h1:w3ymliuxvzVx8DAutBnVyDqYb1Niy/yCJt/lk821YCE= mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed h1:WX1yoOaKQfddO/mLzdV4wptyWgoH/6hwLs7QHTixo0I= mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc= mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b h1:DxJ5nJdkhDlLok9K6qO+5290kphDJbHOQO1DFFFTeBo= From dec3d629d42de567aa708154ebc4e03b5223608c Mon Sep 17 00:00:00 2001 From: Oleg Lobanov Date: Fri, 1 Jul 2022 16:31:49 +0200 Subject: [PATCH 0649/1487] fix: display disk capacity in a correct format (#2013) --- frontend/src/components/Sidebar.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/Sidebar.vue b/frontend/src/components/Sidebar.vue index 24345838..3db65648 100644 --- a/frontend/src/components/Sidebar.vue +++ b/frontend/src/components/Sidebar.vue @@ -150,8 +150,8 @@ export default { try { let usage = await api.usage(path); usageStats = { - used: prettyBytes(usage.used), - total: prettyBytes(usage.total), + used: prettyBytes(usage.used, { binary: true }), + total: prettyBytes(usage.total, { binary: true }), usedPercentage: Math.round((usage.used / usage.total) * 100), }; } catch (error) { From 9d54046140a8cf63fb559a25d0b147b38edfb44e Mon Sep 17 00:00:00 2001 From: Oleg Lobanov Date: Fri, 1 Jul 2022 17:21:46 +0200 Subject: [PATCH 0650/1487] chore(release): 2.22.2 --- CHANGELOG.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 54924897..b9238247 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,20 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +### [2.22.2](https://github.com/filebrowser/filebrowser/compare/v2.22.1...v2.22.2) (2022-07-01) + + +### Bug Fixes + +* display disk capacity in a correct format ([#2013](https://github.com/filebrowser/filebrowser/issues/2013)) ([dec3d62](https://github.com/filebrowser/filebrowser/commit/dec3d629d42de567aa708154ebc4e03b5223608c)) +* don't calculate usage for files ([#1973](https://github.com/filebrowser/filebrowser/issues/1973)) ([577c0ef](https://github.com/filebrowser/filebrowser/commit/577c0efa9cff13628d5e3bac710ef568a00949e0)), closes [#1972](https://github.com/filebrowser/filebrowser/issues/1972) [#1967](https://github.com/filebrowser/filebrowser/issues/1967) +* preview url building fix ([#1976](https://github.com/filebrowser/filebrowser/issues/1976)) ([dcf0bc6](https://github.com/filebrowser/filebrowser/commit/dcf0bc65bfcfc7df3804d7392598a92019468cf7)) + + +### Build + +* **backend:** upgrade golangci-lint to 1.46.2 ([#1991](https://github.com/filebrowser/filebrowser/issues/1991)) ([8118afd](https://github.com/filebrowser/filebrowser/commit/8118afd0ac0d25f4503c98879369764c35e7408e)) + ### [2.22.1](https://github.com/filebrowser/filebrowser/compare/v2.22.0...v2.22.1) (2022-06-06) From 06d9c03e92a529996dbf666e22cb84ebd0214b37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?= <41315874+fumiama@users.noreply.github.com> Date: Tue, 5 Jul 2022 22:27:33 +0800 Subject: [PATCH 0651/1487] chore(deps): move golang.org/x/text to direct (#2021) --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index f0c025fe..b778f16c 100644 --- a/go.mod +++ b/go.mod @@ -25,6 +25,7 @@ require ( go.etcd.io/bbolt v1.3.6 golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f golang.org/x/image v0.0.0-20220413100746-70e8d0d3baa9 + golang.org/x/text v0.3.7 gopkg.in/natefinch/lumberjack.v2 v2.0.0 gopkg.in/yaml.v2 v2.4.0 ) @@ -66,7 +67,6 @@ require ( github.com/yusufpapurcu/wmi v1.2.2 // indirect golang.org/x/net v0.0.0-20220412020605-290c469a71a5 // indirect golang.org/x/sys v0.0.0-20220412211240-33da011f77ad // indirect - golang.org/x/text v0.3.7 // indirect gopkg.in/ini.v1 v1.66.4 // indirect gopkg.in/square/go-jose.v2 v2.2.2 // indirect gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect From d94acdd89a0069fe87107024fd332a0d59a112fc Mon Sep 17 00:00:00 2001 From: Oleg Lobanov Date: Tue, 5 Jul 2022 16:55:31 +0200 Subject: [PATCH 0652/1487] fix: use correct field name in user put api (#2026) --- http/users.go | 2 +- storage/bolt/users.go | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/http/users.go b/http/users.go index d7caffa1..4f7dca79 100644 --- a/http/users.go +++ b/http/users.go @@ -177,7 +177,7 @@ var userPutHandler = withSelfOrAdmin(func(w http.ResponseWriter, r *http.Request } for k, v := range req.Which { - v = cases.Title(language.English).String(v) + v = cases.Title(language.English, cases.NoLower).String(v) req.Which[k] = v if v == "Password" { diff --git a/storage/bolt/users.go b/storage/bolt/users.go index 9120e852..b0984bbe 100644 --- a/storage/bolt/users.go +++ b/storage/bolt/users.go @@ -1,6 +1,7 @@ package bolt import ( + "fmt" "reflect" "github.com/asdine/storm/v3" @@ -58,7 +59,11 @@ func (st usersBackend) Update(user *users.User, fields ...string) error { } for _, field := range fields { - val := reflect.ValueOf(user).Elem().FieldByName(field).Interface() + userField := reflect.ValueOf(user).Elem().FieldByName(field) + if !userField.IsValid() { + return fmt.Errorf("invalid field: %s", field) + } + val := userField.Interface() if err := st.db.UpdateField(user, field, val); err != nil { return err } From 49dbacdccdc38e4b8e8666f01ece93593e3011ce Mon Sep 17 00:00:00 2001 From: Oleg Lobanov Date: Tue, 5 Jul 2022 16:58:52 +0200 Subject: [PATCH 0653/1487] chore(release): 2.22.3 --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b9238247..409abdc8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +### [2.22.3](https://github.com/filebrowser/filebrowser/compare/v2.22.2...v2.22.3) (2022-07-05) + + +### Bug Fixes + +* use correct field name in user put api ([#2026](https://github.com/filebrowser/filebrowser/issues/2026)) ([d94acdd](https://github.com/filebrowser/filebrowser/commit/d94acdd89a0069fe87107024fd332a0d59a112fc)) + ### [2.22.2](https://github.com/filebrowser/filebrowser/compare/v2.22.1...v2.22.2) (2022-07-01) From eaba7e5255f960141e0fc1557f87073df9f6d66a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Jul 2022 11:49:36 +0200 Subject: [PATCH 0654/1487] build(deps): bump shell-quote from 1.7.2 to 1.7.3 in /frontend (#2025) Bumps [shell-quote](https://github.com/substack/node-shell-quote) from 1.7.2 to 1.7.3. - [Release notes](https://github.com/substack/node-shell-quote/releases) - [Changelog](https://github.com/substack/node-shell-quote/blob/master/CHANGELOG.md) - [Commits](https://github.com/substack/node-shell-quote/compare/v1.7.2...1.7.3) --- updated-dependencies: - dependency-name: shell-quote dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- frontend/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index ecf26329..91d1f514 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -12124,9 +12124,9 @@ } }, "node_modules/shell-quote": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", - "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", "dev": true }, "node_modules/signal-exit": { @@ -25256,9 +25256,9 @@ "dev": true }, "shell-quote": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", - "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", "dev": true }, "signal-exit": { From cb437700255e41ff559b9f5a99ab4290b2f8df87 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Jul 2022 12:09:06 +0200 Subject: [PATCH 0655/1487] build(deps): bump moment from 2.29.2 to 2.29.4 in /frontend (#2036) Bumps [moment](https://github.com/moment/moment) from 2.29.2 to 2.29.4. - [Release notes](https://github.com/moment/moment/releases) - [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md) - [Commits](https://github.com/moment/moment/compare/2.29.2...2.29.4) --- updated-dependencies: - dependency-name: moment dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- frontend/package-lock.json | 14 +++++++------- frontend/package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 91d1f514..c1bd080c 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -16,7 +16,7 @@ "lodash.clonedeep": "^4.5.0", "lodash.throttle": "^4.1.1", "material-icons": "^1.10.5", - "moment": "^2.29.2", + "moment": "^2.29.4", "normalize.css": "^8.0.1", "noty": "^3.2.0-beta", "pretty-bytes": "^6.0.0", @@ -9331,9 +9331,9 @@ } }, "node_modules/moment": { - "version": "2.29.2", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.2.tgz", - "integrity": "sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg==", + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", "engines": { "node": "*" } @@ -22924,9 +22924,9 @@ } }, "moment": { - "version": "2.29.2", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.2.tgz", - "integrity": "sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg==" + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" }, "move-concurrently": { "version": "1.0.1", diff --git a/frontend/package.json b/frontend/package.json index f2a441d2..33ab2ff5 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -18,7 +18,7 @@ "lodash.clonedeep": "^4.5.0", "lodash.throttle": "^4.1.1", "material-icons": "^1.10.5", - "moment": "^2.29.2", + "moment": "^2.29.4", "normalize.css": "^8.0.1", "noty": "^3.2.0-beta", "pretty-bytes": "^6.0.0", From 80030dee32d161043766d57ba4e0ad0b0d99290b Mon Sep 17 00:00:00 2001 From: Oleg Lobanov Date: Tue, 19 Jul 2022 00:39:02 +0200 Subject: [PATCH 0656/1487] fix: disable cookie auth for non GET requests --- http/auth.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/http/auth.go b/http/auth.go index 7f094f02..7391cd6a 100644 --- a/http/auth.go +++ b/http/auth.go @@ -53,9 +53,11 @@ func (e extractor) ExtractToken(r *http.Request) (string, error) { return auth, nil } - cookie, _ := r.Cookie("auth") - if cookie != nil && strings.Count(cookie.Value, ".") == 2 { - return cookie.Value, nil + if r.Method == http.MethodGet { + cookie, _ := r.Cookie("auth") + if cookie != nil && strings.Count(cookie.Value, ".") == 2 { + return cookie.Value, nil + } } return "", request.ErrNoTokenInRequest From 71771846780665e3091d6334aa6a0d80496185f7 Mon Sep 17 00:00:00 2001 From: Oleg Lobanov Date: Tue, 19 Jul 2022 00:58:50 +0200 Subject: [PATCH 0657/1487] chore: remove dependency on caddy server --- go.mod | 10 +- go.sum | 56 -------- runner/commands.go | 136 ++++++++++++++++++ runner/commands_test.go | 304 ++++++++++++++++++++++++++++++++++++++++ runner/parser.go | 4 +- 5 files changed, 442 insertions(+), 68 deletions(-) create mode 100644 runner/commands.go create mode 100644 runner/commands_test.go diff --git a/go.mod b/go.mod index b778f16c..14675698 100644 --- a/go.mod +++ b/go.mod @@ -4,9 +4,9 @@ go 1.18 require ( github.com/asdine/storm/v3 v3.2.1 - github.com/caddyserver/caddy v1.0.3 github.com/disintegration/imaging v1.6.2 github.com/dsoprea/go-exif/v3 v3.0.0-20201216222538-db167117f483 + github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568 github.com/golang-jwt/jwt/v4 v4.4.1 github.com/gorilla/mux v1.8.0 github.com/gorilla/websocket v1.5.0 @@ -32,27 +32,20 @@ require ( require ( github.com/andybalholm/brotli v1.0.1 // indirect - github.com/cenkalti/backoff v2.1.1+incompatible // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5 // indirect github.com/dsoprea/go-logging v0.0.0-20200517223158-a10564966e9d // indirect github.com/dsoprea/go-utility/v2 v2.0.0-20200717064901-2fccff4aa15e // indirect - github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568 // indirect github.com/fsnotify/fsnotify v1.5.1 // indirect - github.com/go-acme/lego v2.5.0+incompatible // indirect github.com/go-errors/errors v1.1.1 // indirect github.com/go-ole/go-ole v1.2.6 // indirect github.com/golang/geo v0.0.0-20200319012246-673a6f80352d // indirect github.com/golang/snappy v0.0.2 // indirect - github.com/google/uuid v1.1.2 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/inconshreveable/mousetrap v1.0.0 // indirect github.com/klauspost/compress v1.11.4 // indirect - github.com/klauspost/cpuid v1.2.0 // indirect github.com/klauspost/pgzip v1.2.5 // indirect github.com/magiconair/properties v1.8.6 // indirect - github.com/mholt/certmagic v0.6.2-0.20190624175158-6a42ef9fe8c2 // indirect - github.com/miekg/dns v1.1.25 // indirect github.com/mitchellh/mapstructure v1.4.3 // indirect github.com/nwaples/rardecode v1.1.0 // indirect github.com/pelletier/go-toml v1.9.4 // indirect @@ -68,6 +61,5 @@ require ( golang.org/x/net v0.0.0-20220412020605-290c469a71a5 // indirect golang.org/x/sys v0.0.0-20220412211240-33da011f77ad // indirect gopkg.in/ini.v1 v1.66.4 // indirect - gopkg.in/square/go-jose.v2 v2.2.2 // indirect gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect ) diff --git a/go.sum b/go.sum index 6cc2c5d4..350daa45 100644 --- a/go.sum +++ b/go.sum @@ -47,13 +47,7 @@ github.com/andybalholm/brotli v1.0.1 h1:KqhlKozYbRtJvsPrrEeXcO+N2l6NYT5A2QAFmSUL github.com/andybalholm/brotli v1.0.1/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= github.com/asdine/storm/v3 v3.2.1 h1:I5AqhkPK6nBZ/qJXySdI7ot5BlXSZ7qvDY1zAn5ZJac= github.com/asdine/storm/v3 v3.2.1/go.mod h1:LEpXwGt4pIqrE/XcTvCnZHT5MgZCV6Ub9q7yQzOFWr0= -github.com/bifurcation/mint v0.0.0-20180715133206-93c51c6ce115/go.mod h1:zVt7zX3K/aDCk9Tj+VM7YymsX66ERvzCJzw8rFCX2JU= -github.com/caddyserver/caddy v1.0.3 h1:i9gRhBgvc5ifchwWtSe7pDpsdS9+Q0Rw9oYQmYUTw1w= -github.com/caddyserver/caddy v1.0.3/go.mod h1:G+ouvOY32gENkJC+jhgl62TyhvqEsFaDiZ4uw0RzP1E= -github.com/cenkalti/backoff v2.1.1+incompatible h1:tKJnvO2kl0zmb/jA5UKAt4VoEVw1qxKWjE/Bpp46npY= -github.com/cenkalti/backoff v2.1.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cheekybits/genny v0.0.0-20170328200008-9127e812e1e9/go.mod h1:+tQajlRqAUrPI7DOSpB0XAqZYtQakVtB7wXkRAgjxjQ= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= @@ -80,7 +74,6 @@ github.com/dsoprea/go-logging v0.0.0-20200517223158-a10564966e9d/go.mod h1:7I+3P github.com/dsoprea/go-utility v0.0.0-20200711062821-fab8125e9bdf/go.mod h1:95+K3z2L0mqsVYd6yveIv1lmtT3tcQQ3dVakPySffW8= github.com/dsoprea/go-utility/v2 v2.0.0-20200717064901-2fccff4aa15e h1:IxIbA7VbCNrwumIYjDoMOdf4KOSkMC6NJE4s8oRbE7E= github.com/dsoprea/go-utility/v2 v2.0.0-20200717064901-2fccff4aa15e/go.mod h1:uAzdkPTub5Y9yQwXe8W4m2XuP0tK4a9Q/dantD0+uaU= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= @@ -89,11 +82,8 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568 h1:BHsljHzVlRcyQhjrss6TZTdY2VfCqZPbv5k3iBFa2ZQ= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI= github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= -github.com/go-acme/lego v2.5.0+incompatible h1:5fNN9yRQfv8ymH3DSsxla+4aYeQt2IgfZqHKVnK8f0s= -github.com/go-acme/lego v2.5.0+incompatible/go.mod h1:yzMNe9CasVUhkquNvti5nAtPmG94USbYxYrZfTkIn0M= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-errors/errors v1.0.2/go.mod h1:psDX2osz5VnTOnFWbDeWwS7yejl+uV3FEWEp4lssFEs= github.com/go-errors/errors v1.1.1 h1:ljK/pL5ltg3qoN+OtN6yCv9HWSfMwxSx90GJCZQxYNg= @@ -165,37 +155,29 @@ github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/golang-lru v0.0.0-20180201235237-0fb14efe8c47/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jimstudt/http-authentication v0.0.0-20140401203705-3eca13d6893a/go.mod h1:wK6yTYYcgjHE1Z1QtXACPDjcFJyBskHEdagmnq3vsP8= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.11.4 h1:kz40R/YWls3iqT9zX9AHN3WoVsrAWVyui5sxuLqiXqU= github.com/klauspost/compress v1.11.4/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/cpuid v1.2.0 h1:NMpwD2G9JSFOE1/TJjGSo5zG7Yb2bTe7eq1jH+irmeE= github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/pgzip v1.2.5 h1:qnWYvvKqedOF2ulHpMG72XQol4ILEJ8k2wwRl/Km8oE= github.com/klauspost/pgzip v1.2.5/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= @@ -205,37 +187,21 @@ github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORN github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= -github.com/lucas-clemente/aes12 v0.0.0-20171027163421-cd47fb39b79f/go.mod h1:JpH9J1c9oX6otFSgdUHwUBUizmKlrMjxWnIAjff4m04= -github.com/lucas-clemente/quic-clients v0.1.0/go.mod h1:y5xVIEoObKqULIKivu+gD/LU90pL73bTdtQjPBvtCBk= -github.com/lucas-clemente/quic-go v0.10.2/go.mod h1:hvaRS9IHjFLMq76puFJeWNfmn+H70QZ/CXoxqw9bzao= -github.com/lucas-clemente/quic-go-certificates v0.0.0-20160823095156-d2f86524cced/go.mod h1:NCcRLrOTZbzhZvixZLlERbJtDtYsmMw8Jc4vS8Z0g58= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= -github.com/marten-seemann/qtls v0.2.3/go.mod h1:xzjG7avBwGGbdZ8dTGxlBnLArsVKLvwmjgmPuiQEcYk= github.com/maruel/natural v1.0.0 h1:C1GqgYygkdnwD1H1psoEVsPazXyUqRooEvX/XyWFFDg= github.com/maruel/natural v1.0.0/go.mod h1:eFVhYCcUOfZFxXoDZam8Ktya72wa79fNC3lc/leA0DQ= github.com/marusama/semaphore/v2 v2.5.0 h1:o/1QJD9DBYOWRnDhPwDVAXQn6mQYD0gZaS1Tpx6DJGM= github.com/marusama/semaphore/v2 v2.5.0/go.mod h1:z9nMiNUekt/LTpTUQdpp+4sJeYqUGpwMHfW0Z8V8fnQ= github.com/mholt/archiver/v3 v3.5.1 h1:rDjOBX9JSF5BvoJGvjqK479aL70qh9DIpZCl+k7Clwo= github.com/mholt/archiver/v3 v3.5.1/go.mod h1:e3dqJ7H78uzsRSEACH1joayhuSyhnonssnDhppzS1L4= -github.com/mholt/certmagic v0.6.2-0.20190624175158-6a42ef9fe8c2 h1:xKE9kZ5C8gelJC3+BNM6LJs1x21rivK7yxfTZMAuY2s= -github.com/mholt/certmagic v0.6.2-0.20190624175158-6a42ef9fe8c2/go.mod h1:g4cOPxcjV0oFq3qwpjSA30LReKD8AoIfwAY9VvG35NY= -github.com/miekg/dns v1.1.3/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.25 h1:dFwPR6SfLtrSwgDcIq2bcU/gVutB4sNApq2HBdqcakg= -github.com/miekg/dns v1.1.25/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/mapstructure v1.4.3 h1:OVowDSCllw/YjdLkam3/sm7wEtOy59d8ndGgCcyj8cs= github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0= -github.com/naoina/toml v0.1.1/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= github.com/nwaples/rardecode v1.1.0 h1:vSxaY8vQhOcVr4mm5e8XllHWTiM4JF507A0Katqw7MQ= github.com/nwaples/rardecode v1.1.0/go.mod h1:5DzqNKiOdpKKBH87u8VlvAnPZMXcGRhxWkRpHbbfGS0= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/pelletier/go-toml v1.9.4 h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM= github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml/v2 v2.0.0 h1:P7Bq0SaI8nsexyay5UAyDo+ICWy5MQPgEZ5+l8JQTKo= @@ -250,7 +216,6 @@ github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/russross/blackfriday v0.0.0-20170610170232-067529f716f4/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/shirou/gopsutil/v3 v3.22.5 h1:atX36I/IXgFiB81687vSiBI5zrMsxcIBkP9cQMJQoJA= github.com/shirou/gopsutil/v3 v3.22.5/go.mod h1:so9G9VzeHt/hsd0YwqprnjHnfARAUktauykSbr+y2gA= @@ -268,7 +233,6 @@ github.com/spf13/viper v1.11.0 h1:7OX/1FS6n7jHD1zGrZTM7WtY13ZELRyosK4k93oPr44= github.com/spf13/viper v1.11.0/go.mod h1:djo0X/bA5+tYVoCn+C7cAYJGcVn/qYLFTG8gdUsX7Zk= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= @@ -302,12 +266,9 @@ go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -golang.org/x/crypto v0.0.0-20190123085648-057139ce5d2b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190228161510-8dd112bcdc25/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= @@ -352,12 +313,9 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190328230028-74de082e2cca/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -365,7 +323,6 @@ golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191105084925-a882066a44e0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -407,13 +364,9 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a h1:DcqTD9SDLc+1P/r1EmRBwnVsrOwW+kk2vWf9n+1sGhs= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190124100055-b90733256f2e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190228124157-a34e9553db1e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -422,8 +375,6 @@ golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -481,7 +432,6 @@ golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -615,16 +565,10 @@ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/ini.v1 v1.66.4 h1:SsAcf+mM7mRZo2nJNGt8mZCjG8ZRaNGMURJw7BsIST4= gopkg.in/ini.v1 v1.66.4/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/mcuadros/go-syslog.v2 v2.2.1/go.mod h1:l5LPIyOOyIdQquNg+oU6Z3524YwrcqEm0aKH+5zpt2U= gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= -gopkg.in/square/go-jose.v2 v2.2.2 h1:orlkJ3myw8CN1nVQHBFfloD+L3egixIa4FvUP6RosSA= -gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/runner/commands.go b/runner/commands.go new file mode 100644 index 00000000..45b555c8 --- /dev/null +++ b/runner/commands.go @@ -0,0 +1,136 @@ +// Copyright 2015 Light Code Labs, LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package runner + +import ( + "errors" + "runtime" + "unicode" + + "github.com/flynn/go-shlex" +) + +const ( + osWindows = "windows" + osLinux = "linux" +) + +var runtimeGoos = runtime.GOOS + +// SplitCommandAndArgs takes a command string and parses it shell-style into the +// command and its separate arguments. +func SplitCommandAndArgs(command string) (cmd string, args []string, err error) { + var parts []string + + if runtimeGoos == osWindows { + parts = parseWindowsCommand(command) // parse it Windows-style + } else { + parts, err = parseUnixCommand(command) // parse it Unix-style + if err != nil { + err = errors.New("error parsing command: " + err.Error()) + return + } + } + + if len(parts) == 0 { + err = errors.New("no command contained in '" + command + "'") + return + } + + cmd = parts[0] + if len(parts) > 1 { + args = parts[1:] + } + + return +} + +// parseUnixCommand parses a unix style command line and returns the +// command and its arguments or an error +func parseUnixCommand(cmd string) ([]string, error) { + return shlex.Split(cmd) +} + +// parseWindowsCommand parses windows command lines and +// returns the command and the arguments as an array. It +// should be able to parse commonly used command lines. +// Only basic syntax is supported: +// - spaces in double quotes are not token delimiters +// - double quotes are escaped by either backspace or another double quote +// - except for the above case backspaces are path separators (not special) +// +// Many sources point out that escaping quotes using backslash can be unsafe. +// Use two double quotes when possible. (Source: http://stackoverflow.com/a/31413730/2616179 ) +// +// This function has to be used on Windows instead +// of the shlex package because this function treats backslash +// characters properly. +func parseWindowsCommand(cmd string) []string { + const backslash = '\\' + const quote = '"' + + var parts []string + var part string + var inQuotes bool + var lastRune rune + + for i, ch := range cmd { + if i != 0 { + lastRune = rune(cmd[i-1]) + } + + if ch == backslash { + // put it in the part - for now we don't know if it's an + // escaping char or path separator + part += string(ch) + continue + } + + if ch == quote { + if lastRune == backslash { + // remove the backslash from the part and add the escaped quote instead + part = part[:len(part)-1] + part += string(ch) + continue + } + + if lastRune == quote { + // revert the last change of the inQuotes state + // it was an escaping quote + inQuotes = !inQuotes + part += string(ch) + continue + } + + // normal escaping quotes + inQuotes = !inQuotes + continue + } + + if unicode.IsSpace(ch) && !inQuotes && len(part) > 0 { + parts = append(parts, part) + part = "" + continue + } + + part += string(ch) + } + + if len(part) > 0 { + parts = append(parts, part) + } + + return parts +} diff --git a/runner/commands_test.go b/runner/commands_test.go new file mode 100644 index 00000000..4dc96f44 --- /dev/null +++ b/runner/commands_test.go @@ -0,0 +1,304 @@ +// Copyright 2015 Light Code Labs, LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package runner + +import ( + "fmt" + "runtime" + "strings" + "testing" +) + +func TestParseUnixCommand(t *testing.T) { + tests := []struct { + input string + expected []string + }{ + // 0 - empty command + { + input: ``, + expected: []string{}, + }, + // 1 - command without arguments + { + input: `command`, + expected: []string{`command`}, + }, + // 2 - command with single argument + { + input: `command arg1`, + expected: []string{`command`, `arg1`}, + }, + // 3 - command with multiple arguments + { + input: `command arg1 arg2`, + expected: []string{`command`, `arg1`, `arg2`}, + }, + // 4 - command with single argument with space character - in quotes + { + input: `command "arg1 arg1"`, + expected: []string{`command`, `arg1 arg1`}, + }, + // 5 - command with multiple spaces and tab character + { + input: "command arg1 arg2\targ3", + expected: []string{`command`, `arg1`, `arg2`, `arg3`}, + }, + // 6 - command with single argument with space character - escaped with backspace + { + input: `command arg1\ arg2`, + expected: []string{`command`, `arg1 arg2`}, + }, + // 7 - single quotes should escape special chars + { + input: `command 'arg1\ arg2'`, + expected: []string{`command`, `arg1\ arg2`}, + }, + } + + for i, test := range tests { + errorPrefix := fmt.Sprintf("Test [%d]: ", i) + errorSuffix := fmt.Sprintf(" Command to parse: [%s]", test.input) + actual, _ := parseUnixCommand(test.input) + if len(actual) != len(test.expected) { + t.Errorf(errorPrefix+"Expected %d parts, got %d: %#v."+errorSuffix, len(test.expected), len(actual), actual) + continue + } + for j := 0; j < len(actual); j++ { + if expectedPart, actualPart := test.expected[j], actual[j]; expectedPart != actualPart { + t.Errorf(errorPrefix+"Expected: %v Actual: %v (index %d)."+errorSuffix, expectedPart, actualPart, j) + } + } + } +} + +func TestParseWindowsCommand(t *testing.T) { + tests := []struct { + input string + expected []string + }{ + { // 0 - empty command - do not fail + input: ``, + expected: []string{}, + }, + { // 1 - cmd without args + input: `cmd`, + expected: []string{`cmd`}, + }, + { // 2 - multiple args + input: `cmd arg1 arg2`, + expected: []string{`cmd`, `arg1`, `arg2`}, + }, + { // 3 - multiple args with space + input: `cmd "combined arg" arg2`, + expected: []string{`cmd`, `combined arg`, `arg2`}, + }, + { // 4 - path without spaces + input: `mkdir C:\Windows\foo\bar`, + expected: []string{`mkdir`, `C:\Windows\foo\bar`}, + }, + { // 5 - command with space in quotes + input: `"command here"`, + expected: []string{`command here`}, + }, + { // 6 - argument with escaped quotes (two quotes) + input: `cmd ""arg""`, + expected: []string{`cmd`, `"arg"`}, + }, + { // 7 - argument with escaped quotes (backslash) + input: `cmd \"arg\"`, + expected: []string{`cmd`, `"arg"`}, + }, + { // 8 - two quotes (escaped) inside an inQuote element + input: `cmd "a ""quoted value"`, + expected: []string{`cmd`, `a "quoted value`}, + }, + // TODO - see how many quotes are displayed if we use "", """, """"""" + { // 9 - two quotes outside an inQuote element + input: `cmd a ""quoted value`, + expected: []string{`cmd`, `a`, `"quoted`, `value`}, + }, + { // 10 - path with space in quotes + input: `mkdir "C:\directory name\foobar"`, + expected: []string{`mkdir`, `C:\directory name\foobar`}, + }, + { // 11 - space without quotes + input: `mkdir C:\ space`, + expected: []string{`mkdir`, `C:\`, `space`}, + }, + { // 12 - space in quotes + input: `mkdir "C:\ space"`, + expected: []string{`mkdir`, `C:\ space`}, + }, + { // 13 - UNC + input: `mkdir \\?\C:\Users`, + expected: []string{`mkdir`, `\\?\C:\Users`}, + }, + { // 14 - UNC with space + input: `mkdir "\\?\C:\Program Files"`, + expected: []string{`mkdir`, `\\?\C:\Program Files`}, + }, + + { // 15 - unclosed quotes - treat as if the path ends with quote + input: `mkdir "c:\Program files`, + expected: []string{`mkdir`, `c:\Program files`}, + }, + { // 16 - quotes used inside the argument + input: `mkdir "c:\P"rogra"m f"iles`, + expected: []string{`mkdir`, `c:\Program files`}, + }, + } + + for i, test := range tests { + errorPrefix := fmt.Sprintf("Test [%d]: ", i) + errorSuffix := fmt.Sprintf(" Command to parse: [%s]", test.input) + + actual := parseWindowsCommand(test.input) + if len(actual) != len(test.expected) { + t.Errorf(errorPrefix+"Expected %d parts, got %d: %#v."+errorSuffix, len(test.expected), len(actual), actual) + continue + } + for j := 0; j < len(actual); j++ { + if expectedPart, actualPart := test.expected[j], actual[j]; expectedPart != actualPart { + t.Errorf(errorPrefix+"Expected: %v Actual: %v (index %d)."+errorSuffix, expectedPart, actualPart, j) + } + } + } +} + +func TestSplitCommandAndArgs(t *testing.T) { + // force linux parsing. It's more robust and covers error cases + runtimeGoos = osLinux + defer func() { + runtimeGoos = runtime.GOOS + }() + + var parseErrorContent = "error parsing command:" + var noCommandErrContent = "no command contained in" + + tests := []struct { + input string + expectedCommand string + expectedArgs []string + expectedErrContent string + }{ + // 0 - empty command + { + input: ``, + expectedCommand: ``, + expectedArgs: nil, + expectedErrContent: noCommandErrContent, + }, + // 1 - command without arguments + { + input: `command`, + expectedCommand: `command`, + expectedArgs: nil, + expectedErrContent: ``, + }, + // 2 - command with single argument + { + input: `command arg1`, + expectedCommand: `command`, + expectedArgs: []string{`arg1`}, + expectedErrContent: ``, + }, + // 3 - command with multiple arguments + { + input: `command arg1 arg2`, + expectedCommand: `command`, + expectedArgs: []string{`arg1`, `arg2`}, + expectedErrContent: ``, + }, + // 4 - command with unclosed quotes + { + input: `command "arg1 arg2`, + expectedCommand: "", + expectedArgs: nil, + expectedErrContent: parseErrorContent, + }, + // 5 - command with unclosed quotes + { + input: `command 'arg1 arg2"`, + expectedCommand: "", + expectedArgs: nil, + expectedErrContent: parseErrorContent, + }, + } + + for i, test := range tests { + errorPrefix := fmt.Sprintf("Test [%d]: ", i) + errorSuffix := fmt.Sprintf(" Command to parse: [%s]", test.input) + actualCommand, actualArgs, actualErr := SplitCommandAndArgs(test.input) + + // test if error matches expectation + if test.expectedErrContent != "" { + if actualErr == nil { + t.Errorf(errorPrefix+"Expected error with content [%s], found no error."+errorSuffix, test.expectedErrContent) + } else if !strings.Contains(actualErr.Error(), test.expectedErrContent) { + t.Errorf(errorPrefix+"Expected error with content [%s], found [%v]."+errorSuffix, test.expectedErrContent, actualErr) + } + } else if actualErr != nil { + t.Errorf(errorPrefix+"Expected no error, found [%v]."+errorSuffix, actualErr) + } + + // test if command matches + if test.expectedCommand != actualCommand { + t.Errorf(errorPrefix+"Expected command: [%s], actual: [%s]."+errorSuffix, test.expectedCommand, actualCommand) + } + + // test if arguments match + if len(test.expectedArgs) != len(actualArgs) { + t.Errorf(errorPrefix+"Wrong number of arguments! Expected [%v], actual [%v]."+errorSuffix, test.expectedArgs, actualArgs) + } else { + // test args only if the count matches. + for j, actualArg := range actualArgs { + expectedArg := test.expectedArgs[j] + if actualArg != expectedArg { + t.Errorf(errorPrefix+"Argument at position [%d] differ! Expected [%s], actual [%s]"+errorSuffix, j, expectedArg, actualArg) + } + } + } + } +} + +func ExampleSplitCommandAndArgs() { + var commandLine string + var command string + var args []string + + // just for the test - change GOOS and reset it at the end of the test + runtimeGoos = osWindows + defer func() { + runtimeGoos = runtime.GOOS + }() + + commandLine = `mkdir /P "C:\Program Files"` + command, args, _ = SplitCommandAndArgs(commandLine) + + fmt.Printf("Windows: %s: %s [%s]\n", commandLine, command, strings.Join(args, ",")) + + // set GOOS to linux + runtimeGoos = osLinux + + commandLine = `mkdir -p /path/with\ space` + command, args, _ = SplitCommandAndArgs(commandLine) + + fmt.Printf("Linux: %s: %s [%s]\n", commandLine, command, strings.Join(args, ",")) + + // Output: + // Windows: mkdir /P "C:\Program Files": mkdir [/P,C:\Program Files] + // Linux: mkdir -p /path/with\ space: mkdir [-p,/path/with space] +} diff --git a/runner/parser.go b/runner/parser.go index 249c6d09..65891f5f 100644 --- a/runner/parser.go +++ b/runner/parser.go @@ -3,8 +3,6 @@ package runner import ( "os/exec" - "github.com/caddyserver/caddy" - "github.com/filebrowser/filebrowser/v2/settings" ) @@ -15,7 +13,7 @@ func ParseCommand(s *settings.Settings, raw string) ([]string, error) { var command []string if len(s.Shell) == 0 { - cmd, args, err := caddy.SplitCommandAndArgs(raw) + cmd, args, err := SplitCommandAndArgs(raw) if err != nil { return nil, err } From ceec4dcfe6e9a0a383429429512286b8fdf31132 Mon Sep 17 00:00:00 2001 From: Oleg Lobanov Date: Tue, 19 Jul 2022 00:59:29 +0200 Subject: [PATCH 0658/1487] chore(release): 2.22.4 --- CHANGELOG.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 409abdc8..f96d9e01 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,19 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +### [2.22.4](https://github.com/filebrowser/filebrowser/compare/v2.22.3...v2.22.4) (2022-07-18) + + +### Bug Fixes + +* disable cookie auth for non GET requests ([80030de](https://github.com/filebrowser/filebrowser/commit/80030dee32d161043766d57ba4e0ad0b0d99290b)) + + +### Build + +* **deps:** bump moment from 2.29.2 to 2.29.4 in /frontend ([#2036](https://github.com/filebrowser/filebrowser/issues/2036)) ([cb43770](https://github.com/filebrowser/filebrowser/commit/cb437700255e41ff559b9f5a99ab4290b2f8df87)) +* **deps:** bump shell-quote from 1.7.2 to 1.7.3 in /frontend ([#2025](https://github.com/filebrowser/filebrowser/issues/2025)) ([eaba7e5](https://github.com/filebrowser/filebrowser/commit/eaba7e5255f960141e0fc1557f87073df9f6d66a)) + ### [2.22.3](https://github.com/filebrowser/filebrowser/compare/v2.22.2...v2.22.3) (2022-07-05) From f80b016ef0e169f578bd23dd7916cf80c6b7a31d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81ngel=20Fern=C3=A1ndez=20S=C3=A1nchez?= Date: Wed, 20 Jul 2022 12:17:52 +0200 Subject: [PATCH 0659/1487] chore: update es translation (#2046) --- frontend/src/i18n/es.json | 58 ++++++++++++++++++++++++--------------- 1 file changed, 36 insertions(+), 22 deletions(-) diff --git a/frontend/src/i18n/es.json b/frontend/src/i18n/es.json index 044df291..c3c19265 100644 --- a/frontend/src/i18n/es.json +++ b/frontend/src/i18n/es.json @@ -8,7 +8,9 @@ "create": "Crear", "delete": "Borrar", "download": "Descargar", - "hideDotfiles": "", + "file": "Archivo", + "folder": "Carpeta", + "hideDotfiles": "Ocultar archivos empezados por punto", "info": "Info", "more": "Más", "move": "Mover", @@ -29,20 +31,23 @@ "selectMultiple": "Selección múltiple", "share": "Compartir", "shell": "Presiona Enter para buscar...", + "submit": "Enviar", "switchView": "Cambiar vista", "toggleSidebar": "Mostrar/Ocultar menú", "update": "Actualizar", - "upload": "Subir" + "upload": "Subir", + "openFile": "Abrir archivo" }, "download": { "downloadFile": "Descargar fichero", "downloadFolder": "Descargar directorio", - "downloadSelected": "" + "downloadSelected": "Descargar seleccionados" }, "errors": { "forbidden": "No tienes los permisos necesarios para acceder.", "internal": "La verdad es que algo ha ido mal.", - "notFound": "No se puede acceder a este lugar." + "notFound": "No se puede acceder a este lugar.", + "connection": "No se puede acceder al servidor." }, "files": { "body": "Cuerpo", @@ -60,7 +65,8 @@ "size": "Tamaño", "sortByLastModified": "Ordenar por última modificación", "sortByName": "Ordenar por nombre", - "sortBySize": "Ordenar por tamaño" + "sortBySize": "Ordenar por tamaño", + "noPreview": "La vista previa no está disponible para este archivo." }, "help": { "click": "seleccionar archivo o carpeta", @@ -82,18 +88,18 @@ "en": "English", "es": "Español", "fr": "Français", - "is": "", + "is": "Icelandic", "it": "Italiano", "ja": "日本語", "ko": "한국어", - "nlBE": "", + "nlBE": "Niederländisch (Belgien)", "pl": "Polski", "pt": "Português", "ptBR": "Português (Brasil)", - "ro": "", + "ro": "Românesc", "ru": "Русский", "sk": "Slovenčina", - "svSE": "", + "svSE": "Swedish (Sweden)", "tr" : "Türkçe", "ua": "Українська", "zhCN": "中文 (简体)", @@ -118,6 +124,7 @@ "currentlyNavigating": "Actualmente estás en:", "deleteMessageMultiple": "¿Estás seguro que quieres eliminar {count} archivo(s)?", "deleteMessageSingle": "¿Estás seguro que quieres eliminar este archivo/carpeta?", + "deleteMessageShare": "¿Está seguro de que quiere eliminar este recurso compartido({path})?", "deleteTitle": "Borrar archivos", "displayName": "Nombre:", "download": "Descargar archivos", @@ -143,11 +150,13 @@ "scheduleMessage": "Elige una hora y fecha para programar la publicación de este post.", "show": "Mostrar", "size": "Tamaño", - "upload": "", - "uploadMessage": "" + "upload": "Subir", + "uploadFiles": "Subiendo {files} archivos...", + "uploadMessage": "Seleccione una opción para subir.", + "optionalPassword": "Contraseña opcional" }, "search": { - "images": "Images", + "images": "Imágenes", "music": "Música", "pdf": "PDF", "pressToSearch": "Presiona enter para buscar...", @@ -170,17 +179,20 @@ "brandingHelp": "Tú puedes personalizar como se ve tu instancia de FileBrowser cambiándole el nombre, reemplazando ellogo, agregar estilos personalizados e incluso deshabilitando loslinks externos que apuntan hacia GitHub. \nPara mayor información acerca de personalización de marca, por favor revisa el {0}.", "changePassword": "Cambiar contraseña", "commandRunner": "Executor de comandos", - "commandRunnerHelp": "Here you can set commands that are executed in the named events. You must write one per line. The environment variables {0} and {1} will be available, being {0} relative to {1}. For more information about this feature and the available environment variables, please read the {2}.", + "commandRunnerHelp": "Aquí puede establecer los comandos que se ejecutan en los eventos nombrados. Debe escribir uno por línea. Las variables de entorno {0} y {1} estarán disponibles, siendo {0} relativa a {1}. Para más información sobre esta característica y las variables de entorno disponibles, por favor lea el {2}.", "commandsUpdated": "¡Comandos actualizados!", "createUserDir": "Crea automaticamente una carpeta de inicio cuando se agrega un usuario", + "userHomeBasePath": "Ruta base para los directorios personales de los usuarios", + "userScopeGenerationPlaceholder": "El ámbito se generará automáticamente", + "createUserHomeDirectory": "Crear el directorio principal del usuario", "customStylesheet": "Modificar hoja de estilos", "defaultUserDescription": "Estas son las configuraciones por defecto para nuevos usuarios.", "disableExternalLinks": "Deshabilitar enlaces externos (excepto documentación)", "documentation": "documentación", "examples": "Ejemplos", "executeOnShell": "Ejecutar en la shell", - "executeOnShellDescription": "By default, File Browser executes the commands by calling their binaries directly. If you want to run them on a shell instead (such as Bash or PowerShell), you can define it here with the required arguments and flags. If set, the command you execute will be appended as an argument. This apply to both user commands and event hooks.", - "globalRules": "This is a global set of allow and disallow rules. They apply to every user. You can define specific rules on each user's settings to override this ones.", + "executeOnShellDescription": "Por defecto, FileBrowser ejecuta los comandos llamando directamente a sus binarios. Si quieres ejecutarlos en un shell en su lugar (como Bash o PowerShell), puedes definirlo aquí con los argumentos y banderas (flags) necesarios. Si se define, el comando que se ejecuta se añadirá como argumento. Esto se aplica tanto a los comandos de usuario como a los ganchos de eventos.", + "globalRules": "Se trata de un conjunto global de reglas de permiso y rechazo. Se aplican a todos los usuarios. Puedes definir reglas específicas en la configuración de cada usuario para anular estas.", "globalSettings": "Ajustes globales", "hideDotfiles": "", "insertPath": "Introduce la ruta", @@ -193,7 +205,7 @@ "newUser": "Nuevo usuario", "password": "Contraseña", "passwordUpdated": "¡Contraseña actualizada!", - "path": "", + "path": "Ruta", "perm": { "create": "Crear ficheros y directorios", "delete": "Eliminar ficheros y directorios", @@ -211,14 +223,16 @@ "rules": "Reglas", "rulesHelp": "Aquí puedes definir un conjunto de reglas de permisos para este usuario específico. Los archivos bloqueados no se mostrarán en las listas y no serán accesibles por el usuario. Puedes utilizar regex y rutas relativas a la raíz del usuario.\n", "scope": "Raíz", + "setDateFormat": "Establecer el formato exacto de la fecha", "settingsUpdated": "¡Ajustes actualizados!", - "shareDuration": "", - "shareManagement": "", - "singleClick": "", + "shareDuration": "Compartir Duración", + "shareManagement": "Gestión Compartida", + "shareDeleted": "¡Recurso compartido eliminado!", + "singleClick": "Utilice un solo clic para abrir archivos y directorios", "themes": { - "dark": "", - "light": "", - "title": "" + "dark": "Oscuro", + "light": "Claro", + "title": "Tema" }, "user": "Usuario", "userCommands": "Comandos", From dda9a389f387e94643a9a2ae56027260b210152a Mon Sep 17 00:00:00 2001 From: Ramires Viana <59319979+ramiresviana@users.noreply.github.com> Date: Mon, 13 Sep 2021 13:47:06 +0000 Subject: [PATCH 0660/1487] feat: hook authentication method --- auth/auth.go | 3 +- auth/hook.go | 302 ++++++++++++++++++++++++++++ auth/json.go | 4 +- auth/none.go | 4 +- auth/proxy.go | 4 +- cmd/config.go | 15 ++ cmd/config_import.go | 2 + frontend/src/components/Sidebar.vue | 7 +- http/auth.go | 2 +- settings/settings.go | 1 + storage/bolt/auth.go | 2 + storage/bolt/importer/conf.go | 8 +- 12 files changed, 340 insertions(+), 14 deletions(-) create mode 100644 auth/hook.go diff --git a/auth/auth.go b/auth/auth.go index c15cb9ab..53d5d839 100644 --- a/auth/auth.go +++ b/auth/auth.go @@ -3,13 +3,14 @@ package auth import ( "net/http" + "github.com/filebrowser/filebrowser/v2/settings" "github.com/filebrowser/filebrowser/v2/users" ) // Auther is the authentication interface. type Auther interface { // Auth is called to authenticate a request. - Auth(r *http.Request, s users.Store, root string) (*users.User, error) + Auth(r *http.Request, usr users.Store, stg *settings.Settings, srv *settings.Server) (*users.User, error) // LoginPage indicates if this auther needs a login page. LoginPage() bool } diff --git a/auth/hook.go b/auth/hook.go new file mode 100644 index 00000000..3e57560e --- /dev/null +++ b/auth/hook.go @@ -0,0 +1,302 @@ +package auth + +import ( + "encoding/json" + "fmt" + "log" + "net/http" + "os" + "os/exec" + "strings" + + "github.com/filebrowser/filebrowser/v2/errors" + "github.com/filebrowser/filebrowser/v2/files" + "github.com/filebrowser/filebrowser/v2/settings" + "github.com/filebrowser/filebrowser/v2/users" +) + +// MethodHookAuth is used to identify hook auth. +const MethodHookAuth settings.AuthMethod = "hook" + +type hookCred struct { + Password string `json:"password"` + Username string `json:"username"` +} + +// HookAuth is a hook implementation of an Auther. +type HookAuth struct { + Users users.Store `json:"-"` + Settings *settings.Settings `json:"-"` + Server *settings.Server `json:"-"` + Cred hookCred `json:"-"` + Fields hookFields `json:"-"` + Command string `json:"command"` +} + +// Auth authenticates the user via a json in content body. +func (a *HookAuth) Auth(r *http.Request, usr users.Store, stg *settings.Settings, srv *settings.Server) (*users.User, error) { + var cred hookCred + + if r.Body == nil { + return nil, os.ErrPermission + } + + err := json.NewDecoder(r.Body).Decode(&cred) + if err != nil { + return nil, os.ErrPermission + } + + a.Users = usr + a.Settings = stg + a.Server = srv + a.Cred = cred + + action, err := a.RunCommand() + if err != nil { + return nil, err + } + + switch action { + case "auth": + u, err := a.SaveUser() + if err != nil { + return nil, err + } + return u, nil + case "block": + return nil, os.ErrPermission + case "pass": + u, err := a.Users.Get(a.Server.Root, a.Cred.Username) + if err != nil || !users.CheckPwd(a.Cred.Password, u.Password) { + return nil, os.ErrPermission + } + return u, nil + default: + return nil, fmt.Errorf("invalid hook action: %s", action) + } +} + +// LoginPage tells that hook auth requires a login page. +func (a *HookAuth) LoginPage() bool { + return true +} + +// RunCommand starts the hook command and returns the action +func (a *HookAuth) RunCommand() (string, error) { + command := strings.Split(a.Command, " ") + envMapping := func(key string) string { + switch key { + case "USERNAME": + return a.Cred.Username + case "PASSWORD": + return a.Cred.Password + default: + return os.Getenv(key) + } + } + for i, arg := range command { + if i == 0 { + continue + } + command[i] = os.Expand(arg, envMapping) + } + + cmd := exec.Command(command[0], command[1:]...) //nolint:gosec + cmd.Env = append(os.Environ(), fmt.Sprintf("USERNAME=%s", a.Cred.Username)) + cmd.Env = append(cmd.Env, fmt.Sprintf("PASSWORD=%s", a.Cred.Password)) + out, err := cmd.Output() + if err != nil { + return "", err + } + + a.GetValues(string(out)) + + return a.Fields.Values["hook.action"], nil +} + +// GetValues creates a map with values from the key-value format string +func (a *HookAuth) GetValues(s string) { + m := map[string]string{} + + // make line breaks consistent on Windows platform + s = strings.ReplaceAll(s, "\r\n", "\n") + + // iterate input lines + for _, val := range strings.Split(s, "\n") { + v := strings.SplitN(val, "=", 2) //nolint: gomnd + + // skips non key and value format + if len(v) != 2 { //nolint: gomnd + continue + } + + fieldKey := strings.TrimSpace(v[0]) + fieldValue := strings.TrimSpace(v[1]) + + if a.Fields.IsValid(fieldKey) { + m[fieldKey] = fieldValue + } + } + + a.Fields.Values = m +} + +// SaveUser updates the existing user or creates a new one when not found +func (a *HookAuth) SaveUser() (*users.User, error) { + u, err := a.Users.Get(a.Server.Root, a.Cred.Username) + if err != nil && err != errors.ErrNotExist { + return nil, err + } + + if u == nil { + pass, err := users.HashPwd(a.Cred.Password) + if err != nil { + return nil, err + } + + // create user with the provided credentials + d := &users.User{ + Username: a.Cred.Username, + Password: pass, + Scope: a.Settings.Defaults.Scope, + Locale: a.Settings.Defaults.Locale, + ViewMode: a.Settings.Defaults.ViewMode, + SingleClick: a.Settings.Defaults.SingleClick, + Sorting: a.Settings.Defaults.Sorting, + Perm: a.Settings.Defaults.Perm, + Commands: a.Settings.Defaults.Commands, + HideDotfiles: a.Settings.Defaults.HideDotfiles, + } + u = a.GetUser(d) + + userHome, err := a.Settings.MakeUserDir(u.Username, u.Scope, a.Server.Root) + if err != nil { + return nil, fmt.Errorf("user: failed to mkdir user home dir: [%s]", userHome) + } + u.Scope = userHome + log.Printf("user: %s, home dir: [%s].", u.Username, userHome) + + err = a.Users.Save(u) + if err != nil { + return nil, err + } + } else if p := !users.CheckPwd(a.Cred.Password, u.Password); len(a.Fields.Values) > 1 || p { + u = a.GetUser(u) + + // update the password when it doesn't match the current + if p { + pass, err := users.HashPwd(a.Cred.Password) + if err != nil { + return nil, err + } + u.Password = pass + } + + // update user with provided fields + err := a.Users.Update(u) + if err != nil { + return nil, err + } + } + + return u, nil +} + +// GetUser returns a User filled with hook values or provided defaults +func (a *HookAuth) GetUser(d *users.User) *users.User { + // adds all permissions when user is admin + isAdmin := a.Fields.GetBoolean("user.perm.admin", d.Perm.Admin) + perms := users.Permissions{ + Admin: isAdmin, + Execute: isAdmin || a.Fields.GetBoolean("user.perm.execute", d.Perm.Execute), + Create: isAdmin || a.Fields.GetBoolean("user.perm.create", d.Perm.Create), + Rename: isAdmin || a.Fields.GetBoolean("user.perm.rename", d.Perm.Rename), + Modify: isAdmin || a.Fields.GetBoolean("user.perm.modify", d.Perm.Modify), + Delete: isAdmin || a.Fields.GetBoolean("user.perm.delete", d.Perm.Delete), + Share: isAdmin || a.Fields.GetBoolean("user.perm.share", d.Perm.Share), + Download: isAdmin || a.Fields.GetBoolean("user.perm.download", d.Perm.Download), + } + user := users.User{ + ID: d.ID, + Username: d.Username, + Password: d.Password, + Scope: a.Fields.GetString("user.scope", d.Scope), + Locale: a.Fields.GetString("user.locale", d.Locale), + ViewMode: users.ViewMode(a.Fields.GetString("user.viewMode", string(d.ViewMode))), + SingleClick: a.Fields.GetBoolean("user.singleClick", d.SingleClick), + Sorting: files.Sorting{ + Asc: a.Fields.GetBoolean("user.sorting.asc", d.Sorting.Asc), + By: a.Fields.GetString("user.sorting.by", d.Sorting.By), + }, + Commands: a.Fields.GetArray("user.commands", d.Commands), + HideDotfiles: a.Fields.GetBoolean("user.hideDotfiles", d.HideDotfiles), + Perm: perms, + LockPassword: true, + } + + return &user +} + +// hookFields is used to access fields from the hook +type hookFields struct { + Values map[string]string +} + +// validHookFields contains names of the fields that can be used +var validHookFields = []string{ + "hook.action", + "user.scope", + "user.locale", + "user.viewMode", + "user.singleClick", + "user.sorting.by", + "user.sorting.asc", + "user.commands", + "user.hideDotfiles", + "user.perm.admin", + "user.perm.execute", + "user.perm.create", + "user.perm.rename", + "user.perm.modify", + "user.perm.delete", + "user.perm.share", + "user.perm.download", +} + +// IsValid checks if the provided field is on the valid fields list +func (hf *hookFields) IsValid(field string) bool { + for _, val := range validHookFields { + if field == val { + return true + } + } + + return false +} + +// GetString returns the string value or provided default +func (hf *hookFields) GetString(k, dv string) string { + val, ok := hf.Values[k] + if ok { + return val + } + return dv +} + +// GetBoolean returns the bool value or provided default +func (hf *hookFields) GetBoolean(k string, dv bool) bool { + val, ok := hf.Values[k] + if ok { + return val == "true" + } + return dv +} + +// GetArray returns the array value or provided default +func (hf *hookFields) GetArray(k string, dv []string) []string { + val, ok := hf.Values[k] + if ok && strings.TrimSpace(val) != "" { + return strings.Split(val, " ") + } + return dv +} diff --git a/auth/json.go b/auth/json.go index 81edfb41..48f4c599 100644 --- a/auth/json.go +++ b/auth/json.go @@ -26,7 +26,7 @@ type JSONAuth struct { } // Auth authenticates the user via a json in content body. -func (a JSONAuth) Auth(r *http.Request, sto users.Store, root string) (*users.User, error) { +func (a JSONAuth) Auth(r *http.Request, usr users.Store, stg *settings.Settings, srv *settings.Server) (*users.User, error) { var cred jsonCred if r.Body == nil { @@ -51,7 +51,7 @@ func (a JSONAuth) Auth(r *http.Request, sto users.Store, root string) (*users.Us } } - u, err := sto.Get(root, cred.Username) + u, err := usr.Get(srv.Root, cred.Username) if err != nil || !users.CheckPwd(cred.Password, u.Password) { return nil, os.ErrPermission } diff --git a/auth/none.go b/auth/none.go index 43b60f06..f137ebc1 100644 --- a/auth/none.go +++ b/auth/none.go @@ -14,8 +14,8 @@ const MethodNoAuth settings.AuthMethod = "noauth" type NoAuth struct{} // Auth uses authenticates user 1. -func (a NoAuth) Auth(r *http.Request, sto users.Store, root string) (*users.User, error) { - return sto.Get(root, uint(1)) +func (a NoAuth) Auth(r *http.Request, usr users.Store, stg *settings.Settings, srv *settings.Server) (*users.User, error) { + return usr.Get(srv.Root, uint(1)) } // LoginPage tells that no auth doesn't require a login page. diff --git a/auth/proxy.go b/auth/proxy.go index f9387509..d4b19315 100644 --- a/auth/proxy.go +++ b/auth/proxy.go @@ -18,9 +18,9 @@ type ProxyAuth struct { } // Auth authenticates the user via an HTTP header. -func (a ProxyAuth) Auth(r *http.Request, sto users.Store, root string) (*users.User, error) { +func (a ProxyAuth) Auth(r *http.Request, usr users.Store, stg *settings.Settings, srv *settings.Server) (*users.User, error) { username := r.Header.Get(a.Header) - user, err := sto.Get(root, username) + user, err := usr.Get(srv.Root, username) if err == errors.ErrNotExist { return nil, os.ErrPermission } diff --git a/cmd/config.go b/cmd/config.go index 47a62397..c94b1ba9 100644 --- a/cmd/config.go +++ b/cmd/config.go @@ -35,6 +35,7 @@ func addConfigFlags(flags *pflag.FlagSet) { flags.String("auth.method", string(auth.MethodJSONAuth), "authentication type") flags.String("auth.header", "", "HTTP header for auth.method=proxy") + flags.String("auth.command", "", "command for auth.method=hook") flags.String("recaptcha.host", "https://www.google.com", "use another host for ReCAPTCHA. recaptcha.net might be useful in China") flags.String("recaptcha.key", "", "ReCaptcha site key") @@ -114,6 +115,20 @@ func getAuthentication(flags *pflag.FlagSet, defaults ...interface{}) (settings. auther = jsonAuth } + if method == auth.MethodHookAuth { + command := mustGetString(flags, "auth.command") + + if command == "" { + command = defaultAuther["command"].(string) + } + + if command == "" { + checkErr(nerrors.New("you must set the flag 'auth.command' for method 'hook'")) + } + + auther = &auth.HookAuth{Command: command} + } + if auther == nil { panic(errors.ErrInvalidAuthMethod) } diff --git a/cmd/config_import.go b/cmd/config_import.go index 7871a9f8..b87eb4e3 100644 --- a/cmd/config_import.go +++ b/cmd/config_import.go @@ -70,6 +70,8 @@ The path must be for a json or yaml file.`, auther = getAuther(auth.NoAuth{}, rawAuther).(*auth.NoAuth) case auth.MethodProxyAuth: auther = getAuther(auth.ProxyAuth{}, rawAuther).(*auth.ProxyAuth) + case auth.MethodHookAuth: + auther = getAuther(&auth.HookAuth{}, rawAuther).(*auth.HookAuth) default: checkErr(errors.New("invalid auth method")) } diff --git a/frontend/src/components/Sidebar.vue b/frontend/src/components/Sidebar.vue index 3db65648..a3f4c3ae 100644 --- a/frontend/src/components/Sidebar.vue +++ b/frontend/src/components/Sidebar.vue @@ -45,7 +45,7 @@
- + +
-
- - +
+ +
+ + +
@@ -46,7 +63,7 @@ export default { dest: null, }; }, - computed: mapState(["req", "selected"]), + computed: mapState(["req", "selected", "user"]), methods: { move: async function (event) { event.preventDefault(); diff --git a/frontend/src/components/prompts/NewDir.vue b/frontend/src/components/prompts/NewDir.vue index bdcae64a..653ae953 100644 --- a/frontend/src/components/prompts/NewDir.vue +++ b/frontend/src/components/prompts/NewDir.vue @@ -43,6 +43,16 @@ import url from "@/utils/url"; export default { name: "new-dir", + props: { + redirect: { + type: Boolean, + default: true, + }, + base: { + type: [String, null], + default: null, + }, + }, data: function () { return { name: "", @@ -57,7 +67,11 @@ export default { if (this.new === "") return; // Build the path of the new directory. - let uri = this.isFiles ? this.$route.path + "/" : "/"; + let uri; + + if (this.base) uri = this.base; + else if (this.isFiles) uri = this.$route.path + "/"; + else uri = "/"; if (!this.isListing) { uri = url.removeLastDir(uri) + "/"; @@ -65,10 +79,14 @@ export default { uri += encodeURIComponent(this.name) + "/"; uri = uri.replace("//", "/"); - try { await api.post(uri); - this.$router.push({ path: uri }); + if (this.redirect) { + this.$router.push({ path: uri }); + } else if (!this.base) { + const res = await api.fetch(url.removeLastDir(uri) + "/"); + this.$store.commit("updateRequest", res); + } } catch (e) { this.$showError(e); } diff --git a/frontend/src/components/prompts/Prompts.vue b/frontend/src/components/prompts/Prompts.vue index 4a96f471..3305be9a 100644 --- a/frontend/src/components/prompts/Prompts.vue +++ b/frontend/src/components/prompts/Prompts.vue @@ -1,6 +1,12 @@ @@ -20,7 +26,8 @@ import ReplaceRename from "./ReplaceRename.vue"; import Share from "./Share.vue"; import Upload from "./Upload.vue"; import ShareDelete from "./ShareDelete.vue"; -import { mapState } from "vuex"; +import Sidebar from "../Sidebar.vue"; +import { mapGetters, mapState } from "vuex"; import buttons from "@/utils/buttons"; export default { @@ -40,6 +47,7 @@ export default { ReplaceRename, Upload, ShareDelete, + Sidebar }, data: function () { return { @@ -52,7 +60,7 @@ export default { }, created() { window.addEventListener("keydown", (event) => { - if (this.show == null) return; + if (this.currentPrompt == null) return; let prompt = this.$refs.currentComponent; @@ -64,7 +72,7 @@ export default { // Enter if (event.keyCode == 13) { - switch (this.show) { + switch (this.currentPrompt.prompt) { case "delete": prompt.submit(); break; @@ -82,31 +90,13 @@ export default { }); }, computed: { - ...mapState(["show", "plugins"]), - currentComponent: function () { - const matched = - [ - "info", - "help", - "delete", - "rename", - "move", - "copy", - "newFile", - "newDir", - "download", - "replace", - "replace-rename", - "share", - "upload", - "share-delete", - ].indexOf(this.show) >= 0; - - return (matched && this.show) || null; - }, + ...mapState(["plugins"]), + ...mapGetters(["currentPrompt", "currentPromptName"]), showOverlay: function () { return ( - this.show !== null && this.show !== "search" && this.show !== "more" + this.currentPrompt !== null && + this.currentPrompt.prompt !== "search" && + this.currentPrompt.prompt !== "more" ); }, }, diff --git a/frontend/src/components/prompts/Replace.vue b/frontend/src/components/prompts/Replace.vue index a525bbbc..bece1772 100644 --- a/frontend/src/components/prompts/Replace.vue +++ b/frontend/src/components/prompts/Replace.vue @@ -19,7 +19,7 @@ @@ -48,7 +54,10 @@ diff --git a/frontend/src/components/prompts/DiscardEditorChanges.vue b/frontend/src/components/prompts/DiscardEditorChanges.vue index a870708d..362d25a1 100644 --- a/frontend/src/components/prompts/DiscardEditorChanges.vue +++ b/frontend/src/components/prompts/DiscardEditorChanges.vue @@ -7,18 +7,21 @@
@@ -27,15 +30,18 @@ diff --git a/frontend/src/components/prompts/FileList.vue b/frontend/src/components/prompts/FileList.vue index 653752a0..b276ce62 100644 --- a/frontend/src/components/prompts/FileList.vue +++ b/frontend/src/components/prompts/FileList.vue @@ -25,7 +25,10 @@ diff --git a/frontend/src/components/prompts/Info.vue b/frontend/src/components/prompts/Info.vue index a67f21a3..687b49fb 100644 --- a/frontend/src/components/prompts/Info.vue +++ b/frontend/src/components/prompts/Info.vue @@ -40,33 +40,45 @@

MD5: {{ - $t("prompts.show") - }}{{ $t("prompts.show") }}

SHA1: {{ - $t("prompts.show") - }}{{ $t("prompts.show") }}

SHA256: {{ - $t("prompts.show") - }}{{ $t("prompts.show") }}

SHA512: {{ - $t("prompts.show") - }}{{ $t("prompts.show") }}

@@ -74,8 +86,9 @@
@@ -22,14 +23,17 @@ @click="(event) => currentPrompt.confirm(event, 'rename')" :aria-label="$t('buttons.rename')" :title="$t('buttons.rename')" + tabindex="2" > {{ $t("buttons.rename") }} @@ -38,10 +42,16 @@ diff --git a/frontend/src/components/prompts/Share.vue b/frontend/src/components/prompts/Share.vue index e5d6c97d..6b15ffcd 100644 --- a/frontend/src/components/prompts/Share.vue +++ b/frontend/src/components/prompts/Share.vue @@ -1,5 +1,5 @@ diff --git a/frontend/src/components/prompts/UploadFiles.vue b/frontend/src/components/prompts/UploadFiles.vue index 866853e8..d3a96bc5 100644 --- a/frontend/src/components/prompts/UploadFiles.vue +++ b/frontend/src/components/prompts/UploadFiles.vue @@ -53,7 +53,9 @@ diff --git a/frontend/src/components/settings/UserForm.vue b/frontend/src/components/settings/UserForm.vue index c9337504..0f3b06e0 100644 --- a/frontend/src/components/settings/UserForm.vue +++ b/frontend/src/components/settings/UserForm.vue @@ -1,7 +1,7 @@ - diff --git a/frontend/src/css/_buttons.css b/frontend/src/css/_buttons.css index 087c6286..cbfc92ae 100644 --- a/frontend/src/css/_buttons.css +++ b/frontend/src/css/_buttons.css @@ -1,14 +1,14 @@ .button { outline: 0; border: 0; - padding: .5em 1em; - border-radius: .1em; + padding: 0.5em 1em; + border-radius: 0.1em; cursor: pointer; background: var(--blue); color: white; - border: 1px solid rgba(0, 0, 0, 0.05); - box-shadow: 0 0 5px rgba(0, 0, 0, 0.05); - transition: .1s ease all; + border: 1px solid var(--divider); + box-shadow: 0 0 5px var(--divider); + transition: 0.1s ease all; } .button:hover { @@ -38,7 +38,7 @@ } .button--flat:hover { - background: var(--moon-grey); + background: var(--surfaceSecondary); } .button--flat.button--red { @@ -50,6 +50,6 @@ } .button[disabled] { - opacity: .5; + opacity: 0.5; cursor: not-allowed; } diff --git a/frontend/src/css/_inputs.css b/frontend/src/css/_inputs.css index 670bb426..a0063f83 100644 --- a/frontend/src/css/_inputs.css +++ b/frontend/src/css/_inputs.css @@ -1,20 +1,20 @@ .input { - border-radius: .1em; - padding: .5em 1em; - background: white; - border: 1px solid rgba(0, 0, 0, 0.1); - transition: .2s ease all; - color: #333; + background: var(--surfacePrimary); + color: var(--textSecondary); + border: 1px solid var(--borderPrimary); + border-radius: 0.1em; + padding: 0.5em 1em; + transition: 0.2s ease all; margin: 0; } .input:hover, .input:focus { - border-color: rgba(0, 0, 0, 0.2); + border-color: var(--borderSecondary); } .input--block { - margin-bottom: .5em; + margin-bottom: 0.5em; display: block; width: 100%; } @@ -27,9 +27,9 @@ } .input--red { - background: #fcd0cd; + background: var(--input-red) !important; } .input--green { - background: #c9f2da; + background: var(--input-green) !important; } diff --git a/frontend/src/css/_share.css b/frontend/src/css/_share.css index eb8aacb7..04034a32 100644 --- a/frontend/src/css/_share.css +++ b/frontend/src/css/_share.css @@ -12,8 +12,11 @@ } .share__box { - box-shadow: rgba(0, 0, 0, 0.06) 0px 1px 3px, rgba(0, 0, 0, 0.12) 0px 1px 2px; - background: #fff; + box-shadow: + rgba(0, 0, 0, 0.06) 0px 1px 3px, + rgba(0, 0, 0, 0.12) 0px 1px 2px; + background: var(--surfacePrimary); + color: var(--textPrimary); border-radius: 0.2em; margin: 5px; overflow: hidden; @@ -39,7 +42,7 @@ .share__box__element { padding: 1em; - border-top: 1px solid rgba(0, 0, 0, 0.1); + border-top: 1px solid var(--borderPrimary); word-break: break-all; } @@ -62,7 +65,7 @@ border-left: 0; border-right: 0; border-bottom: 0; - border-top: 1px solid rgba(0, 0, 0, 0.1); + border-top: 1px solid var(--borderPrimary); } .share__box__items #listing.list .item .name { @@ -76,7 +79,7 @@ .share__wrong__password { background: var(--red); color: #fff; - padding: .5em; + padding: 0.5em; text-align: center; - animation: .2s opac forwards; -} \ No newline at end of file + animation: 0.2s opac forwards; +} diff --git a/frontend/src/css/_shell.css b/frontend/src/css/_shell.css index 37956526..3fca2d7d 100644 --- a/frontend/src/css/_shell.css +++ b/frontend/src/css/_shell.css @@ -3,17 +3,8 @@ bottom: 0; left: 0; max-height: calc(100% - 4em); - background: white; - color: #212121; - z-index: 9997; - width: 100%; - box-shadow: 0 0 5px rgba(0, 0, 0, 0.1); - transition: .2s ease transform; -} - -.shell__divider { - position: relative; - height: 8px; + background: var(--surfacePrimary); + color: var(--textPrimary); z-index: 9999; background: rgba(127, 127, 127, 0.1); transition: 0.2s ease background; @@ -32,6 +23,8 @@ overflow: auto; font-size: 1rem; cursor: text; + box-shadow: 0 0 5px var(--borderPrimary); + transition: 0.2s ease transform; } .shell__overlay { @@ -52,7 +45,7 @@ body.rtl .shell-content { display: flex; padding: 0.5em; align-items: flex-start; - border-top: 1px solid rgba(0, 0, 0, 0.05); + border-top: 1px solid var(--divider); } .shell--hidden { diff --git a/frontend/src/css/_variables.css b/frontend/src/css/_variables.css index 94e59664..468b08dd 100644 --- a/frontend/src/css/_variables.css +++ b/frontend/src/css/_variables.css @@ -1,8 +1,8 @@ :root { --blue: #2196f3; - --dark-blue: #1E88E5; - --red: #F44336; - --dark-red: #D32F2F; + --dark-blue: #1e88e5; + --red: #f44336; + --dark-red: #d32f2f; --moon-grey: #f2f2f2; --icon-red: #da4453; @@ -11,4 +11,44 @@ --icon-green: #2ecc71; --icon-blue: #1d99f3; --icon-violet: #9b59b6; + + --input-red: rgb(252, 208, 205); + --input-green: rgb(201, 242, 218); + + --item-selected: white; + + --action: rgb(84, 110, 122); + + --background: rgb(250, 250, 250); + --surfacePrimary: rgb(255, 255, 255); + --surfaceSecondary: rgb(230, 230, 230); + --divider: rgba(0, 0, 0, 0.05); + --iconPrimary: var(--icon-blue); + --iconSecondary: rgb(255, 255, 255); + --iconTertiary: rgb(204, 204, 204); + --textPrimary: rgb(111, 111, 111); + --textSecondary: rgb(51, 51, 51); + --hover: rgba(0, 0, 0, 0.1); + --borderPrimary: rgba(0, 0, 0, 0.1); + --borderSecondary: rgba(0, 0, 0, 0.2); +} + +:root.dark { + --input-red: rgb(115, 48, 45); + --input-green: rgb(20, 122, 65); + + --action: rgb(255, 255, 255); + + --background: rgb(20, 29, 36); + --surfacePrimary: rgb(32, 41, 47); + --surfaceSecondary: rgb(58, 65, 71); + --textPrimary: rgba(255, 255, 255, 0.6); + --textSecondary: rgba(255, 255, 255, 0.87); + --divider: rgba(255, 255, 255, 0.12); + --iconPrimary: rgb(255, 255, 255); + --iconSecondary: rgb(255, 255, 255); + --iconTertiary: rgb(255, 255, 255); + --hover: rgba(255, 255, 255, 0.1); + --borderPrimary: rgba(255, 255, 255, 0.05); + --borderSecondary: rgba(255, 255, 255, 0.15); } diff --git a/frontend/src/css/base.css b/frontend/src/css/base.css index 58ce9aec..7d90468e 100644 --- a/frontend/src/css/base.css +++ b/frontend/src/css/base.css @@ -1,12 +1,8 @@ body { font-family: "Roboto", sans-serif; padding-top: 4em; - background-color: #fafafa; - color: #333333; -} - -body.rtl { - direction: rtl; + background: var(--background); + color: var(--textSecondary); } * { @@ -62,8 +58,8 @@ nav { left: 0; } -body.rtl nav { - left: unset; +html[dir="rtl"] nav { + left: initial; right: 0; } @@ -78,13 +74,12 @@ nav .action { text-overflow: ellipsis; } -body.rtl .action { - direction: rtl; +html[dir="rtl"] nav .action { text-align: right; } nav > div { - border-top: 1px solid rgba(0, 0, 0, 0.05); + border-top: 1px solid var(--divider); } nav .action > * { @@ -99,14 +94,15 @@ main { .breadcrumbs { height: 3em; - border-bottom: 1px solid rgba(0, 0, 0, 0.05); + background: var(--background); + border-bottom: 1px solid var(--divider); } .breadcrumbs span, .breadcrumbs { display: flex; align-items: center; - color: #6f6f6f; + color: var(--textPrimary); } .breadcrumbs a { @@ -115,12 +111,12 @@ main { border-radius: 0.125em; } -body.rtl .breadcrumbs a { +html[dir="rtl"] .breadcrumbs a { transform: translateX(-16em); } .breadcrumbs a:hover { - background-color: rgba(0, 0, 0, 0.05); + background-color: var(--divider); } .breadcrumbs span a { @@ -151,4 +147,34 @@ body.rtl .breadcrumbs a { .break-word { word-break: break-all; -} \ No newline at end of file +} + +.vue-number-input > input { + background: var(--surfacePrimary) !important; + border-color: var(--surfaceSecondary) !important; + color: var(--textSecondary) !important; +} + +.vue-number-input--small > input { + height: 1rem !important; + font-size: 1rem !important; +} + +.vue-number-input :hover, +.vue-number-input :focus { + border-color: var(--borderSecondary) !important; +} + +.vue-number-input__button { + background: var(--surfacePrimary) !important; +} + +.vue-number-input__button--minus, +.vue-number-input__button--plus { + border-color: var(--surfaceSecondary) !important; +} + +.vue-number-input__button::before, +.vue-number-input__button::after { + background: var(--textSecondary) !important; +} diff --git a/frontend/src/css/dashboard.css b/frontend/src/css/dashboard.css index 62a6bcca..48be3ee0 100644 --- a/frontend/src/css/dashboard.css +++ b/frontend/src/css/dashboard.css @@ -4,17 +4,17 @@ .dashboard .row { display: flex; - margin: 0 -.5em; + margin: 0 -0.5em; flex-wrap: wrap; } -body.rtl .dashboard .row { +html[dir="rtl"] .dashboard .row { margin-right: 16em; } .dashboard .row .column { display: flex; - padding: 0 .5em; + padding: 0 0.5em; width: 50%; } @@ -22,33 +22,33 @@ body.rtl .dashboard .row { flex-grow: 1; } -@media(max-width: 1200px) { +@media (max-width: 1200px) { .dashboard .row .column { width: 100%; } } a { - color: inherit + color: inherit; } .dashboard p label { - margin-bottom: .2em; + margin-bottom: 0.2em; display: block; - font-size: .8em; + font-size: 0.8em; font-weight: 500; - color: rgba(0, 0, 0, 0.57); + color: var(--textPrimary); } li code, p code { - background: rgba(0, 0, 0, 0.05); - padding: .1em; - border-radius: .2em; + background: var(--divider); + padding: 0.1em; + border-radius: 0.2em; } .small { - font-size: .8em; + font-size: 0.8em; line-height: 1.5; } @@ -61,21 +61,21 @@ p code { .dashboard #nav .wrapper { display: flex; flex-grow: 1; - border-bottom: 2px solid rgba(0, 0, 0, 0.05); + border-bottom: 2px solid var(--divider); } -body.rtl #nav .wrapper { +html[dir="rtl"] .dashboard #nav .wrapper { margin-right: 16em; } .dashboard #nav ul { list-style: none; display: flex; - color: rgb(84, 110, 122); + color: var(--action); font-weight: 500; padding: 0; margin: 0 0 -2px 0; - font-size: .8em; + font-size: 0.8em; text-align: center; justify-content: left; } @@ -85,12 +85,11 @@ body.rtl #nav .wrapper { padding: 1.5em 2em; white-space: nowrap; border-bottom: 2px solid transparent; - transition: .1s ease-in-out all; - + transition: 0.1s ease-in-out all; } .dashboard #nav ul li:hover { - background: var(--moon-grey); + background: var(--surfaceSecondary); } .dashboard #nav ul li.active { @@ -120,7 +119,7 @@ table { } table tr { - border-bottom: 1px solid #ccc; + border-bottom: 1px solid var(--iconTertiary); } table tr:last-child { @@ -129,40 +128,44 @@ table tr:last-child { table th { font-weight: 500; - color: #757575; + color: var(--textSecondary); text-align: left; } table th, table td { - padding: .5em 0; + padding: 0.5em 0; } table td.small { width: 1em; } -table tr>*:first-child { +table tr > *:first-child { padding-left: 1em; } -body.rtl table tr>* { +html[dir="rtl"] table tr > * { padding-left: unset; padding-right: 1em; text-align: right; direction: ltr; } -table tr>*:last-child { +table tr > *:last-child { padding-right: 1em; } .card { position: relative; margin: 0 0 1rem 0; - background-color: #fff; + background: var(--surfacePrimary); + color: var(--textSecondary); border-radius: 2px; - box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2); + box-shadow: + 0 2px 2px 0 rgba(0, 0, 0, 0.14), + 0 1px 5px 0 rgba(0, 0, 0, 0.12), + 0 3px 1px -2px rgba(0, 0, 0, 0.2); overflow: auto; } @@ -171,18 +174,18 @@ table tr>*:last-child { top: 50%; left: 50%; transform: translate(-50%, -50%); - z-index: 99999; max-width: 25em; width: 90%; max-height: 95%; - animation: .1s show forwards; + /* animation-duration: 0.3s; + animation-fill-mode: forwards; */ } -.card>*>*:first-child { +.card > * > *:first-child { margin-top: 0; } -.card>*>*:last-child { +.card > * > *:last-child { margin-bottom: 0; } @@ -191,24 +194,24 @@ table tr>*:last-child { display: flex; } -.card .card-title>*:first-child { +.card .card-title > *:first-child { margin-right: auto; } -body.rtl .card .card-title>*:first-child { +html[dir="rtl"] .card .card-title > *:first-child { margin-right: 0; text-align: right; } -.card>div { +.card > div { padding: 1em 1em; } -.card>div:first-child { +.card > div:first-child { padding-top: 1.5em; } -.card>div:last-child { +.card > div:last-child { padding-bottom: 1.5em; } @@ -234,7 +237,7 @@ body.rtl .card .card-action { } .card h3 { - color: rgba(0, 0, 0, 0.53); + color: var(--textPrimary); font-size: 1em; font-weight: 500; margin: 2em 0 1em; @@ -253,6 +256,14 @@ body.rtl .card .card-action { max-width: 15em; } +.card#share input, +.card#share select, +.card#share input::-webkit-inner-spin-button, +.card#share input::-webkit-outer-spin-button { + background: var(--surfacePrimary); + color: var(--textSecondary); +} + .card#share ul { list-style: none; padding: 0; @@ -277,24 +288,24 @@ body.rtl .card .card-action { .card#share ul li input, .card#share ul li select { - padding: .2em; - margin-right: .5em; - border: 1px solid #dadada; + padding: 0.2em; + margin-right: 0.5em; + border: 1px solid var(--borderPrimary); } .card#share .action.copy-clipboard::after { - content: 'Copied!'; + content: "Copied!"; position: absolute; left: -25%; width: 150%; - font-size: .6em; + font-size: 0.6em; text-align: center; background: #44a6f5; color: #fff; - padding: .5em .2em; - border-radius: .4em; + padding: 0.5em 0.2em; + border-radius: 0.4em; top: -2em; - transition: .1s ease opacity; + transition: 0.1s ease opacity; opacity: 0; } @@ -324,10 +335,9 @@ body.rtl .card .card-action { z-index: 9999; visibility: hidden; opacity: 0; - animation: .1s show forwards; + animation: 0.1s show forwards; } - /* * * * * * * * * * * * * * * * * PROMPT - MOVE * * * * * * * * * * * * * * * * */ @@ -344,33 +354,33 @@ body.rtl .card .card-action { .file-list li { width: 100%; user-select: none; - border-radius: .2em; - padding: .3em; + border-radius: 0.2em; + padding: 0.3em; } -.file-list li[aria-selected=true] { +.file-list li[aria-selected="true"] { background: var(--blue) !important; - color: #fff !important; - transition: .1s ease all; + color: var(--iconSecondary) !important; + transition: 0.1s ease all; } .file-list li:hover { - background-color: #e9eaeb; + background: var(--surfaceSecondary); cursor: pointer; } .file-list li:before { content: "folder"; - color: #6f6f6f; + color: var(--textPrimary); vertical-align: middle; line-height: 1.4; - font-family: 'Material Icons'; + font-family: "Material Icons"; font-size: 1.75em; - margin-right: .25em; + margin-right: 0.25em; } -.file-list li[aria-selected=true]:before { - color: white; +.file-list li[aria-selected="true"]:before { + color: var(--iconSecondary); } .help { @@ -399,11 +409,11 @@ body.rtl .card .card-action { } .collapsible { - border-top: 1px solid rgba(0,0,0,0.1); + border-top: 1px solid var(--borderPrimary); } .collapsible:last-of-type { - border-bottom: 1px solid rgba(0,0,0,0.1); + border-bottom: 1px solid var(--borderPrimary); } .collapsible > input { @@ -421,18 +431,18 @@ body.rtl .card .card-action { .collapsible > label * { margin: 0; - color: rgba(0,0,0,0.57); + color: var(--textPrimary); } .collapsible > label i { - transition: .2s ease transform; + transition: 0.2s ease transform; user-select: none; } .collapsible .collapse { max-height: 0; overflow: hidden; - transition: .2s ease all; + transition: 0.2s ease all; } .collapsible > input:checked ~ .collapse { @@ -442,7 +452,7 @@ body.rtl .card .card-action { } .collapsible > input:checked ~ label i { - transform: rotate(180deg) + transform: rotate(180deg); } .card .collapsible { @@ -468,12 +478,12 @@ body.rtl .card .card-action { flex: 1; padding: 2em; border-radius: 0.2em; - border: 1px solid rgba(0, 0, 0, 0.1); + border: 1px solid var(--borderPrimary); text-align: center; } .card .card-action.full .action { - margin: 0 0.25em 0.50em; + margin: 0 0.25em 0.5em; } .card .card-action.full .action i { @@ -489,7 +499,7 @@ body.rtl .card .card-action { } /*** RTL - Fix disk usage information (in english) ***/ -body.rtl .credits { +html[dir="rtl"] .credits { text-align: right; direction: ltr; -} \ No newline at end of file +} diff --git a/frontend/src/css/header.css b/frontend/src/css/header.css index 3dc8bd51..7a427b0a 100644 --- a/frontend/src/css/header.css +++ b/frontend/src/css/header.css @@ -1,8 +1,8 @@ header { z-index: 1000; - background-color: #fff; - border-bottom: 1px solid rgba(0, 0, 0, 0.075); - box-shadow: 0 0 5px rgba(0, 0, 0, 0.1); + background: var(--surfacePrimary); + border-bottom: 1px solid var(--divider); + box-shadow: 0 0 5px var(--borderPrimary); position: fixed; top: 0; left: 0; @@ -37,7 +37,7 @@ header a:hover { color: inherit; } -header>div:first-child>.action, +header > div:first-child > .action, header img { margin-right: 1em; } @@ -50,7 +50,7 @@ header .action span { display: none; } -header>div div { +header > div div { vertical-align: middle; position: relative; } @@ -82,34 +82,39 @@ header .menu-button { } #search #input { - background-color: #f5f5f5; + background: var(--surfaceSecondary); + border-color: var(--surfacePrimary); display: flex; height: 100%; padding: 0em 0.75em; border-radius: 0.3em; - transition: .1s ease all; + transition: 0.1s ease all; align-items: center; z-index: 2; } +#search #input input::placeholder { + color: var(--textSecondary); +} + #search.active #input { - border-bottom: 1px solid rgba(0, 0, 0, 0.075); - box-shadow: 0 0 5px rgba(0, 0, 0, 0.1); - background-color: #fff; + border-bottom: 1px solid var(--borderPrimary); + box-shadow: 0 0 5px var(--borderPrimary); + background: var(--surfacePrimary); height: 4em; } -#search.active>div { +#search.active > div { border-radius: 0 !important; } #search.active i, #search.active input { - color: #212121; + color: var(--textPrimary); } -#search #input>.action, -#search #input>i { +#search #input > .action, +#search #input > i { margin-right: 0.3em; user-select: none; } @@ -124,38 +129,39 @@ header .menu-button { #search #result { visibility: visible; max-height: none; - background-color: #f8f8f8; + background: var(--background); text-align: left; padding: 0; - color: rgba(0, 0, 0, 0.6); + color: var(--textPrimary); height: 0; - transition: .1s ease height, .1s ease padding; + transition: + 0.1s ease height, + 0.1s ease padding; overflow-x: hidden; overflow-y: auto; z-index: 1; } -body.rtl #search #result { +html[dir="rtl"] #search #result { direction: ltr; } -#search #result>div>*:first-child { +#search #result > div > *:first-child { margin-top: 0; } -body.rtl #search #result { - direction: rtl; +html[dir="rtl"] #search #result { text-align: right; } /*** RTL - Keep search result LTR because it has paths (in english) ***/ -body.rtl #search #result ul>* { +html[dir="rtl"] #search #result ul > * { direction: ltr; text-align: left; } #search.active #result { - padding: .5em; + padding: 0.5em; height: calc(100% - 4em); } @@ -166,10 +172,10 @@ body.rtl #search #result ul>* { } #search li { - margin-bottom: .5em; + margin-bottom: 0.5em; } -#search #result>div { +#search #result > div { max-width: 45em; margin: 0 auto; } @@ -187,10 +193,10 @@ body.rtl #search #result ul>* { } #search.active #result i { - color: #ccc; + color: var(--iconTertiary); } -#search.active #result>p>i { +#search.active #result > p > i { text-align: center; margin: 0 auto; display: table; @@ -199,35 +205,35 @@ body.rtl #search #result ul>* { #search.active #result ul li a { display: flex; align-items: center; - padding: .3em 0; + padding: 0.3em 0; } #search.active #result ul li a i { - margin-right: .3em; + margin-right: 0.3em; } -#search::-webkit-input-placeholder { - color: rgba(255, 255, 255, .5); -} - -#search:-moz-placeholder { - opacity: 1; - color: rgba(255, 255, 255, .5); +/* I dont think we need these anymore */ +/* #search::-webkit-input-placeholder { + color: var(--textPrimary); } #search::-moz-placeholder { opacity: 1; - color: rgba(255, 255, 255, .5); + color: var(--textPrimary); } #search:-ms-input-placeholder { - color: rgba(255, 255, 255, .5); + color: var(--textPrimary); } +#search #input input::placeholder { + color: var(--textPrimary); +} */ + #search .boxes { - border: 1px solid rgba(0, 0, 0, 0.075); - box-shadow: 0 0 5px rgba(0, 0, 0, 0.1); - background: #fff; + border: 1px solid var(--borderPrimary); + box-shadow: 0 0 5px var(--borderPrimary); + background: var(--surfacePrimary); margin: 1em 0; } @@ -235,15 +241,15 @@ body.rtl #search #result ul>* { margin: 0; font-weight: 500; font-size: 1em; - color: #212121; - padding: .5em; + color: var(--textSecondary); + padding: 0.5em; } -body.rtl #search .boxes h3 { +html[dir="rtl"] #search .boxes h3 { text-align: right; } -#search .boxes>div { +#search .boxes > div { display: flex; flex-wrap: wrap; justify-content: space-between; @@ -251,7 +257,7 @@ body.rtl #search .boxes h3 { margin-bottom: -1em; } -#search .boxes>div>div { +#search .boxes > div > div { background: var(--blue); color: #fff; text-align: center; diff --git a/frontend/src/css/listing-icons.css b/frontend/src/css/listing-icons.css index 32c87755..49db1acb 100644 --- a/frontend/src/css/listing-icons.css +++ b/frontend/src/css/listing-icons.css @@ -2,30 +2,50 @@ /* General */ -.file-icons [aria-label^="."] { opacity: 0.33 } -.file-icons [aria-label$=".bak"] { opacity: 0.33 } +.file-icons [aria-label^="."] { + opacity: 0.33; +} +.file-icons [aria-label$=".bak"] { + opacity: 0.33; +} -.file-icons [data-type=audio] i::before { content: 'volume_up' } -.file-icons [data-type=blob] i::before { content: 'insert_drive_file' } -.file-icons [data-type=image] i::before { content: 'image' } -.file-icons [data-type=pdf] i::before { content: 'description' } -.file-icons [data-type=text] i::before { content: 'description' } -.file-icons [data-type=video] i::before { content: 'movie' } -.file-icons [data-type=invalid_link] i::before { content: 'link_off' } +.file-icons [data-type="audio"] i::before { + content: "volume_up"; +} +.file-icons [data-type="blob"] i::before { + content: "insert_drive_file"; +} +.file-icons [data-type="image"] i::before { + content: "image"; +} +.file-icons [data-type="pdf"] i::before { + content: "description"; +} +.file-icons [data-type="text"] i::before { + content: "description"; +} +.file-icons [data-type="video"] i::before { + content: "movie"; +} +.file-icons [data-type="invalid_link"] i::before { + content: "link_off"; +} /* #f90 - Image */ .file-icons [aria-label$=".ai"] i::before, .file-icons [aria-label$=".odg"] i::before, -.file-icons [aria-label$=".xcf"] i::before -{ content: 'image' } +.file-icons [aria-label$=".xcf"] i::before { + content: "image"; +} /* #f90 - Presentation */ .file-icons [aria-label$=".odp"] i::before, .file-icons [aria-label$=".ppt"] i::before, -.file-icons [aria-label$=".pptx"] i::before -{ content: 'slideshow' } +.file-icons [aria-label$=".pptx"] i::before { + content: "slideshow"; +} /* #0f0 - Spreadsheet/Database */ @@ -34,8 +54,9 @@ .file-icons [aria-label$=".odb"] i::before, .file-icons [aria-label$=".ods"] i::before, .file-icons [aria-label$=".xls"] i::before, -.file-icons [aria-label$=".xlsx"] i::before -{ content: 'border_all' } +.file-icons [aria-label$=".xlsx"] i::before { + content: "border_all"; +} /* #00f - Document */ @@ -43,8 +64,9 @@ .file-icons [aria-label$=".docx"] i::before, .file-icons [aria-label$=".log"] i::before, .file-icons [aria-label$=".odt"] i::before, -.file-icons [aria-label$=".rtf"] i::before -{ content: 'description' } +.file-icons [aria-label$=".rtf"] i::before { + content: "description"; +} /* #999 - Code */ @@ -65,8 +87,9 @@ .file-icons [aria-label$=".rs"] i::before, .file-icons [aria-label$=".vue"] i::before, .file-icons [aria-label$=".xml"] i::before, -.file-icons [aria-label$=".yml"] i::before -{ content: 'code' } +.file-icons [aria-label$=".yml"] i::before { + content: "code"; +} /* #999 - Executable */ @@ -75,16 +98,18 @@ .file-icons [aria-label$=".exe"] i::before, .file-icons [aria-label$=".jar"] i::before, .file-icons [aria-label$=".ps1"] i::before, -.file-icons [aria-label$=".sh"] i::before -{ content: 'web_asset' } +.file-icons [aria-label$=".sh"] i::before { + content: "web_asset"; +} /* #999 - Installer */ .file-icons [aria-label$=".deb"] i::before, .file-icons [aria-label$=".msi"] i::before, .file-icons [aria-label$=".pkg"] i::before, -.file-icons [aria-label$=".rpm"] i::before -{ content: 'archive' } +.file-icons [aria-label$=".rpm"] i::before { + content: "archive"; +} /* #999 - Compressed */ @@ -96,8 +121,9 @@ .file-icons [aria-label$=".tar"] i::before, .file-icons [aria-label$=".xz"] i::before, .file-icons [aria-label$=".zip"] i::before, -.file-icons [aria-label$=".zst"] i::before -{ content: 'folder_zip' } +.file-icons [aria-label$=".zst"] i::before { + content: "folder_zip"; +} /* #999 - Disk */ @@ -108,25 +134,35 @@ .file-icons [aria-label$=".vdi"] i::before, .file-icons [aria-label$=".vhd"] i::before, .file-icons [aria-label$=".vmdk"] i::before, -.file-icons [aria-label$=".wim"] i::before -{ content: 'album' } +.file-icons [aria-label$=".wim"] i::before { + content: "album"; +} /* #999 - Font */ .file-icons [aria-label$=".otf"] i::before, .file-icons [aria-label$=".ttf"] i::before, .file-icons [aria-label$=".woff"] i::before, -.file-icons [aria-label$=".woff2"] i::before -{ content: 'font_download' } +.file-icons [aria-label$=".woff2"] i::before { + content: "font_download"; +} /* Colors */ /* General */ -.file-icons [data-type=audio] i { color: var(--icon-yellow) } -.file-icons [data-type=image] i { color: var(--icon-orange) } -.file-icons [data-type=video] i { color: var(--icon-violet) } -.file-icons [data-type=invalid_link] i { color: var(--icon-red) } +.file-icons [data-type="audio"] i { + color: var(--icon-yellow); +} +.file-icons [data-type="image"] i { + color: var(--icon-orange); +} +.file-icons [data-type="video"] i { + color: var(--icon-violet); +} +.file-icons [data-type="invalid_link"] i { + color: var(--icon-red); +} /* #f00 - Adobe/Oracle */ @@ -135,8 +171,9 @@ .file-icons [aria-label$=".jar"] i, .file-icons [aria-label$=".psd"] i, .file-icons [aria-label$=".rb"] i, -.file-icons [data-type=pdf] i -{ color: var(--icon-red) } +.file-icons [data-type="pdf"] i { + color: var(--icon-red); +} /* #f90 - Image/Presentation */ @@ -146,16 +183,18 @@ .file-icons [aria-label$=".ppt"] i, .file-icons [aria-label$=".pptx"] i, .file-icons [aria-label$=".vue"] i, -.file-icons [aria-label$=".xcf"] i -{ color: var(--icon-orange) } +.file-icons [aria-label$=".xcf"] i { + color: var(--icon-orange); +} /* #ff0 - Various */ .file-icons [aria-label$=".css"] i, .file-icons [aria-label$=".js"] i, .file-icons [aria-label$=".json"] i, -.file-icons [aria-label$=".zip"] i -{ color: var(--icon-yellow) } +.file-icons [aria-label$=".zip"] i { + color: var(--icon-yellow); +} /* #0f0 - Spreadsheet/Google */ @@ -164,8 +203,9 @@ .file-icons [aria-label$=".go"] i, .file-icons [aria-label$=".ods"] i, .file-icons [aria-label$=".xls"] i, -.file-icons [aria-label$=".xlsx"] i -{ color: var(--icon-green) } +.file-icons [aria-label$=".xlsx"] i { + color: var(--icon-green); +} /* #00f - Document/Microsoft/Apple/Closed */ @@ -188,18 +228,26 @@ .file-icons [aria-label$=".ps1"] i, .file-icons [aria-label$=".rtf"] i, .file-icons [aria-label$=".vob"] i, -.file-icons [aria-label$=".wim"] i -{ color: var(--icon-blue) } +.file-icons [aria-label$=".wim"] i { + color: var(--icon-blue); +} /* #60f - Various */ .file-icons [aria-label$=".iso"] i, .file-icons [aria-label$=".php"] i, -.file-icons [aria-label$=".rar"] i -{ color: var(--icon-violet) } +.file-icons [aria-label$=".rar"] i { + color: var(--icon-violet); +} /* Overrides */ -.file-icons [data-dir=true] i { color: var(--icon-blue) } -.file-icons [data-dir=true] i::before { content: 'folder' } -.file-icons [aria-selected=true] i { color: var(--item-selected) } +.file-icons [data-dir="true"] i { + color: var(--icon-blue); +} +.file-icons [data-dir="true"] i::before { + content: "folder"; +} +.file-icons [aria-selected="true"] i { + color: var(--iconSecondary); +} diff --git a/frontend/src/css/listing.css b/frontend/src/css/listing.css index 528311fe..565815a4 100644 --- a/frontend/src/css/listing.css +++ b/frontend/src/css/listing.css @@ -1,15 +1,11 @@ -#listing { - --item-selected: white; -} - -body.rtl #listing { +html[dir="rtl"] #listing { margin-right: 16em; } #listing h2 { margin: 0 0 0 0.5em; - font-size: .9em; - color: rgba(0, 0, 0, 0.38); + font-size: 0.9em; + color: var(--textPrimary); font-weight: 500; } @@ -18,19 +14,22 @@ body.rtl #listing { overflow: hidden; } -#listing>div { +#listing > div { display: flex; flex-wrap: wrap; justify-content: flex-start; } #listing .item { - background-color: #fff; + background: var(--surfacePrimary); + border-color: var(--divider); position: relative; display: flex; flex-wrap: nowrap; - color: #6f6f6f; - transition: .1s ease background, .1s ease opacity; + color: var(--textPrimary); + transition: + 0.1s ease background, + 0.1s ease opacity; align-items: center; cursor: pointer; user-select: none; @@ -75,13 +74,13 @@ body.rtl #listing { margin: 1em auto; display: block !important; width: 95%; - color: rgba(0, 0, 0, 0.3); + color: var(--textPrimary); font-weight: 500; } .message i { font-size: 2.5em; - margin-bottom: .2em; + margin-bottom: 0.2em; display: block; } @@ -92,14 +91,18 @@ body.rtl #listing { #listing.mosaic .item { width: calc(33% - 1em); - margin: .5em; + margin: 0.5em; padding: 0.5em; border-radius: 0.2em; - box-shadow: 0 1px 3px rgba(0, 0, 0, .06), 0 1px 2px rgba(0, 0, 0, .12); + box-shadow: + 0 1px 3px rgba(0, 0, 0, 0.06), + 0 1px 2px rgba(0, 0, 0, 0.12); } #listing.mosaic .item:hover { - box-shadow: 0 1px 3px rgba(0, 0, 0, .12), 0 1px 2px rgba(0, 0, 0, .24) !important; + box-shadow: + 0 1px 3px rgba(0, 0, 0, 0.12), + 0 1px 2px rgba(0, 0, 0, 0.24) !important; } #listing.mosaic .header { @@ -127,16 +130,16 @@ body.rtl #listing { text-align: center; } -#listing.mosaic.gallery .item[data-type=image] div:last-of-type { +#listing.mosaic.gallery .item[data-type="image"] div:last-of-type { color: white; background: linear-gradient(#0000, #0009); } #listing.mosaic.gallery .item i { - width: 100%; - margin-right: 0; - font-size: 8em; - text-align: center; + width: 100%; + margin-right: 0; + font-size: 8em; + text-align: center; } #listing.mosaic.gallery .item img { @@ -159,7 +162,7 @@ body.rtl #listing { #listing.list .item { width: 100%; margin: 0; - border: 1px solid rgba(0, 0, 0, 0.1); + border: 1px solid var(--borderPrimary); padding: 1em; border-top: 0; } @@ -168,9 +171,9 @@ body.rtl #listing { display: none; } -#listing .item[aria-selected=true] { +#listing .item[aria-selected="true"] { background: var(--blue) !important; - color: var(--item-selected) !important; + color: var(--iconSecondary) !important; } #listing.list .item div:first-of-type { @@ -202,25 +205,25 @@ body.rtl #listing { #listing .item.header { display: none !important; - background-color: #ccc; + background-color: var(--iconTertiary); } #listing.list .header i { font-size: 1.5em; vertical-align: middle; - margin-left: .2em; + margin-left: 0.2em; } #listing.list .item.header { display: flex !important; - background: #fafafa; + background: var(--background); z-index: 999; - padding: .85em; + padding: 0.85em; border: 0; - border-bottom: 1px solid rgba(0, 0, 0, 0.1); + border-bottom: 1px solid var(--borderPrimary); } -#listing.list .item.header>div:first-child { +#listing.list .item.header > div:first-child { width: 0; } @@ -232,7 +235,7 @@ body.rtl #listing { color: inherit; } -#listing.list .item.header>div:first-child { +#listing.list .item.header > div:first-child { width: 0; } @@ -250,7 +253,7 @@ body.rtl #listing { #listing.list .header i { opacity: 0; - transition: .1s ease all; + transition: 0.1s ease all; } #listing.list .header p:hover i, @@ -272,7 +275,7 @@ body.rtl #listing { height: 4em; padding: 0.5em 0.5em 0.5em 1em; justify-content: space-between; - transition: .2s ease bottom; + transition: 0.2s ease bottom; } #listing #multiple-selection.active { @@ -281,5 +284,5 @@ body.rtl #listing { #listing #multiple-selection p, #listing #multiple-selection i { - color: var(--item-selected); + color: var(--iconSecondary); } diff --git a/frontend/src/css/login.css b/frontend/src/css/login.css index b97ae7cd..14bfd1a5 100644 --- a/frontend/src/css/login.css +++ b/frontend/src/css/login.css @@ -1,5 +1,5 @@ #login { - background: #fff; + background: var(--surfacePrimary); position: fixed; top: 0; left: 0; @@ -17,7 +17,7 @@ #login h1 { text-align: center; font-size: 2.5em; - margin: .4em 0 .67em; + margin: 0.4em 0 0.67em; } #login form { @@ -34,15 +34,15 @@ } #login #recaptcha { - margin: .5em 0 0; + margin: 0.5em 0 0; } #login .wrong { background: var(--red); color: #fff; - padding: .5em; + padding: 0.5em; text-align: center; - animation: .2s opac forwards; + animation: 0.2s opac forwards; } @keyframes opac { @@ -61,5 +61,5 @@ text-transform: lowercase; font-weight: 500; font-size: 0.9rem; - margin: .5rem 0; + margin: 0.5rem 0; } diff --git a/frontend/src/css/mobile.css b/frontend/src/css/mobile.css index 8047a5b6..f8b2a45b 100644 --- a/frontend/src/css/mobile.css +++ b/frontend/src/css/mobile.css @@ -1,12 +1,12 @@ @media (max-width: 1024px) { nav { - width: 10em + width: 10em; } } @media (max-width: 1024px) { main { - width: calc(100% - 13em) + width: calc(100% - 13em); } } @@ -21,27 +21,27 @@ width: 60%; } #more { - display: inherit + display: inherit; } header .overlay { width: 100%; height: 100%; - background-color: rgba(0, 0, 0, 0.1); + background-color: var(--borderPrimary); } #dropdown { position: fixed; top: 1em; right: 1em; display: block; - background-color: #fff; - box-shadow: 0 0 5px rgba(0, 0, 0, 0.1); + background: var(--surfaceSecondary); + box-shadow: 0 0 5px var(--borderPrimary); transform: scale(0); - transition: .1s ease-in-out transform; + transition: 0.1s ease-in-out transform; transform-origin: top right; z-index: 99999; } - body.rtl #dropdown { + html[dir="rtl"] #dropdown { right: unset; left: 1em; transform-origin: top left; @@ -61,7 +61,7 @@ } #dropdown .action span:not(.counter) { display: inline-block; - padding: .4em; + padding: 0.4em; } #dropdown .counter { left: 2.25em; @@ -73,8 +73,10 @@ transform: translateX(-50%); display: flex; align-items: center; - background: #fff; - box-shadow: rgba(0, 0, 0, 0.06) 0px 1px 3px, rgba(0, 0, 0, 0.12) 0px 1px 2px; + background: var(--surfaceSecondary); + box-shadow: + rgba(0, 0, 0, 0.06) 0px 1px 3px, + rgba(0, 0, 0, 0.12) 0px 1px 2px; width: 95%; max-width: 20em; z-index: 1; @@ -86,7 +88,7 @@ #file-selection > span { display: inline-block; margin-left: 1em; - color: #6f6f6f; + color: var(--textPrimary); margin-right: auto; } #file-selection .action span { @@ -95,15 +97,15 @@ nav { top: 0; z-index: 99999; - background: #fff; + background: var(--surfaceSecondary); height: 100%; width: 16em; - box-shadow: 0 0 5px rgba(0, 0, 0, 0.1); - transition: .1s ease left; + box-shadow: 0 0 5px var(--borderPrimary); + transition: 0.1s ease left; left: -17em; } - body.rtl nav { + html[dir="rtl"] nav { left: unset; right: -17em; } @@ -111,7 +113,7 @@ left: 0; } - body.rtl nav.active { + html[dir="rtl"] nav.active { left: unset; right: 0; } @@ -131,19 +133,19 @@ margin-bottom: 5em; } - body.rtl #listing { + html[dir="rtl"] #listing { margin-right: unset; } - body.rtl .breadcrumbs { + html[dir="rtl"] .breadcrumbs { transform: translateX(16em); } - body.rtl #nav .wrapper { + html[dir="rtl"] #nav .wrapper { margin-right: unset; } - - body.rtl .dashboard .row { + + html[dir="rtl"] .dashboard .row { margin-right: unset; } @@ -166,4 +168,4 @@ #listing.list .item .name { width: 100%; } -} \ No newline at end of file +} diff --git a/frontend/src/css/styles.css b/frontend/src/css/styles.css index bac14c6d..ac95cf43 100644 --- a/frontend/src/css/styles.css +++ b/frontend/src/css/styles.css @@ -1,6 +1,6 @@ @import "normalize.css/normalize.css"; -@import "noty/lib/noty.css"; -@import "noty/lib/themes/mint.css"; +@import "vue-toastification/dist/index.css"; +@import "vue-final-modal/style.css"; @import "./_variables.css"; @import "./_buttons.css"; @import "./_inputs.css"; @@ -16,10 +16,23 @@ @import "./login.css"; @import "./mobile.css"; +/* For testing only + :focus { + outline: 2px solid crimson !important; + border-radius: 3px !important; +} */ + .link { color: var(--blue); } +#loading { + background: var(--background); +} +#loading .spinner > div { + background: var(--iconPrimary); +} + main .spinner { display: block; text-align: center; @@ -32,7 +45,7 @@ main .spinner > div { height: 0.8em; margin: 0 0.1em; font-size: 1em; - background-color: rgba(0, 0, 0, 0.3); + background: var(--iconPrimary); border-radius: 100%; display: inline-block; animation: sk-bouncedelay 1.4s infinite ease-in-out both; @@ -72,7 +85,7 @@ main .spinner .bounce2 { transition: 0.2s ease all; border: 0; margin: 0; - color: #546e7a; + color: var(--action); border-radius: 50%; background: transparent; padding: 0; @@ -94,7 +107,7 @@ main .spinner .bounce2 { } .action:hover { - background-color: rgba(0, 0, 0, 0.1); + background-color: var(--hover); } .action ul { @@ -115,7 +128,7 @@ main .spinner .bounce2 { } .action ul li:hover { - background-color: rgba(0, 0, 0, 0.04); + background-color: var(--divider); } #click-overlay { @@ -138,7 +151,7 @@ main .spinner .bounce2 { bottom: 0; right: 0; background: var(--blue); - color: #fff; + color: var(--iconSecondary); border-radius: 50%; font-size: 0.75em; width: 1.8em; @@ -146,7 +159,7 @@ main .spinner .bounce2 { text-align: center; line-height: 1.55em; font-weight: bold; - border: 2px solid white; + border: 2px solid var(--borderPrimary); } /* PREVIEWER */ @@ -176,14 +189,14 @@ main .spinner .bounce2 { } #previewer header > title { - white-space: nowrap; + white-space: nowrap; text-shadow: 1px 1px 1px #000000; } @media (min-width: 738px) { #previewer header #dropdown .action i { color: #fff; - text-shadow: 1px 1px 1px #000000; + text-shadow: 1px 1px 1px #000000; } } @@ -217,7 +230,6 @@ main .spinner .bounce2 { height: 88%; } - #previewer .preview video { height: 100%; } @@ -302,7 +314,7 @@ main .spinner .bounce2 { #previewer .spinner > div { width: 18px; height: 18px; - background-color: white; + background: var(--iconPrimary); } /* EDITOR */ @@ -310,17 +322,21 @@ main .spinner .bounce2 { #editor-container { display: flex; flex-direction: column; - background-color: #fafafa; + background-color: var(--background); position: fixed; padding-top: 4em; top: 0; left: 0; height: 100%; width: 100%; - z-index: 9999; + z-index: 9998; overflow: hidden; } +#editor-container .bar { + background: var(--surfacePrimary); +} + #editor-container #editor { flex: 1; } @@ -331,7 +347,7 @@ main .spinner .bounce2 { } /*** RTL - flip and position arrow of path ***/ -body.rtl .breadcrumbs .chevron { +html[dir="rtl"] .breadcrumbs .chevron { transform: scaleX(-1) translateX(16em); } @@ -343,22 +359,6 @@ body.rtl .breadcrumbs .chevron { font-size: 1rem; } -/* * * * * * * * * * * * * * * * - * PROMPT * - * * * * * * * * * * * * * * * */ - -.noty_buttons { - text-align: right; - padding: 0 10px 10px !important; -} - -.noty_buttons button { - background: rgba(0, 0, 0, 0.05); - border: 1px solid rgba(0, 0, 0, 0.1); - box-shadow: 0 0 0 0; - font-size: 1rem; -} - /* * * * * * * * * * * * * * * * * FOOTER * * * * * * * * * * * * * * * * */ @@ -436,17 +436,17 @@ body.rtl .breadcrumbs .chevron { * RTL overrides * * * * * * * * * * * * * * * * */ -body.rtl .card-content textarea { +html[dir="rtl"] .card-content textarea { direction: ltr; text-align: left; } -body.rtl .card-content .small + input { +html[dir="rtl"] .card-content .small + input { direction: ltr; text-align: left; } -body.rtl .card.floating .card-content .file-list { +html[dir="rtl"] .card.floating .card-content .file-list { direction: ltr; text-align: left; } diff --git a/frontend/src/i18n/ar.json b/frontend/src/i18n/ar.json index 2fd3b880..5014eb52 100644 --- a/frontend/src/i18n/ar.json +++ b/frontend/src/i18n/ar.json @@ -1,7 +1,9 @@ { "buttons": { "cancel": "إلغاء", + "clear": "مسح", "close": "إغلاق", + "continue": "متابعة", "copy": "نسخ", "copyFile": "نسخ الملف", "copyToClipboard": "نسخ الى الحافظة", @@ -11,6 +13,7 @@ "download": "تحميل", "file": "ملف", "folder": "مجلد", + "fullScreen": "تكبير/تصغير الشاشة", "hideDotfiles": "إخفاء ملفات النقطة", "info": "معلومات", "more": "المزيد", @@ -38,7 +41,7 @@ "update": "تحديث", "upload": "رفع", "openFile": "فتح الملف", - "continue": "متابعة" + "discardChanges": "إلغاء التغييرات" }, "download": { "downloadFile": "تحميل الملف", @@ -56,7 +59,6 @@ }, "files": { "body": "الصفحة", - "clear": "مسح", "closePreview": "إغلاق العرض", "files": "الملفات", "folders": "المجلدات", @@ -133,6 +135,7 @@ "deleteMessageMultiple": "هل تريد بالتأكيد حذف {count} ملف؟", "deleteMessageSingle": "هل تريد بالتأكيد حذف هذا الملف/المجلد؟", "deleteMessageShare": "هل تريد بالتأكيد إلغاء مشاركة هذا الملف/المجلد ({path})؟", + "deleteUser": "هل تريد بالتأكيد حذف هذا المستخدم؟", "deleteTitle": "حذف الملفات", "displayName": "عرض اﻹسم:", "download": "تحميل الملفات", @@ -161,7 +164,9 @@ "upload": "رفع", "uploadFiles": "يتم رفع {files} ملفات.", "uploadMessage": "إختر الملفات التي تريد رفعها.", - "optionalPassword": "كلمة مرور إختيارية" + "optionalPassword": "كلمة مرور إختيارية", + "resolution": "الدقة", + "discardEditorChanges": "هل تريد بالتأكيد إلغاء التغييرات؟" }, "search": { "images": "الصور", @@ -243,6 +248,7 @@ "shareDeleted": "تم حذف المشاركة!", "singleClick": "استخدم النقرة الواحدة لفتح الملفات", "themes": { + "default": "افتراضي (نظام التشغيل)", "dark": "غامق", "light": "فاتح", "title": "موضوع" @@ -282,4 +288,3 @@ "unit": "وحدة الوقت" } } - diff --git a/frontend/src/i18n/de.json b/frontend/src/i18n/de.json index 579143dd..602dfdcc 100644 --- a/frontend/src/i18n/de.json +++ b/frontend/src/i18n/de.json @@ -1,6 +1,7 @@ { "buttons": { "cancel": "Abbrechen", + "clear": "Schließen", "close": "Schließen", "copy": "Kopieren", "copyFile": "Kopiere Datei", @@ -36,8 +37,7 @@ "toggleSidebar": "Seitenleiste anzeigen", "update": "Update", "upload": "Upload", - "openFile": "Datei öffnen", - "continue": "Fortfahren" + "openFile": "Datei öffnen" }, "download": { "downloadFile": "Download Datei", @@ -52,7 +52,6 @@ }, "files": { "body": "Body", - "clear": "Schließen", "closePreview": "Vorschau schließen", "files": "Dateien", "folders": "Ordner", @@ -88,6 +87,7 @@ "hu": "Magyar", "ar": "العربية", "de": "Deutsch", + "el": "Ελληνικά", "en": "English", "es": "Español", "fr": "Français", @@ -104,7 +104,7 @@ "sk": "Slovenčina", "svSE": "Swedish (Sweden)", "tr": "Türkçe", - "ua": "Українська", + "uk": "Українська", "zhCN": "中文 (简体)", "zhTW": "中文 (繁體)" }, diff --git a/frontend/src/i18n/el.json b/frontend/src/i18n/el.json index f0085b33..8d79d924 100644 --- a/frontend/src/i18n/el.json +++ b/frontend/src/i18n/el.json @@ -1,282 +1,281 @@ { - "buttons": { - "cancel": "Ακύρωση", - "close": "Κλείσιμο", - "copy": "Αντιγραφή", - "copyFile": "Αντιγραφή αρχείου", - "copyToClipboard": "Αντιγραφή στο πρόχειρο", - "copyDownloadLinkToClipboard": "Αντιγραφή συνδέσμου λήψης στο πρόχειρο", - "create": "Δημιουργία", - "delete": "Διαγραφή", - "download": "Λήψη", - "file": "Αρχείο", - "folder": "Φάκελος", - "hideDotfiles": "Απόκρυψη κρυφών αρχείων", - "info": "Πληροφορίες", - "more": "Περισσότερα", - "move": "Μετακίνηση", - "moveFile": "Μετακίνηση αρχείου", - "new": "Νέο", - "next": "Επόμενο", - "ok": "Εντάξει", - "permalink": "Λήψη μόνιμου συνδέσμου", - "previous": "Προηγούμενο", - "publish": "Δημοσίευση", - "rename": "Μετονομασία", - "replace": "Αντικατάσταση", - "reportIssue": "Αναφορά προβλήματος", - "save": "Αποθήκευση", - "schedule": "Προγραμματισμός", - "search": "Αναζήτηση", - "select": "Επιλογή", - "selectMultiple": "Επιλογή πολλαπλών", - "share": "Κοινοποίηση", - "submit": "Υποβολή", - "switchView": "Εναλλαγή προβολής", - "toggleSidebar": "(Απ-)ενεργοποίησης της πλευρικής μπάρας", - "update": "Ενημέρωση", - "upload": "Μεταφόρτωση", - "openFile": "Άνοιγμα αρχείου", - "continue": "Συνέχεια" + "buttons": { + "cancel": "Ακύρωση", + "clear": "Καθαρισμός", + "close": "Κλείσιμο", + "copy": "Αντιγραφή", + "copyFile": "Αντιγραφή αρχείου", + "copyToClipboard": "Αντιγραφή στο πρόχειρο", + "copyDownloadLinkToClipboard": "Αντιγραφή συνδέσμου λήψης στο πρόχειρο", + "create": "Δημιουργία", + "delete": "Διαγραφή", + "download": "Λήψη", + "file": "Αρχείο", + "folder": "Φάκελος", + "hideDotfiles": "Απόκρυψη κρυφών αρχείων", + "info": "Πληροφορίες", + "more": "Περισσότερα", + "move": "Μετακίνηση", + "moveFile": "Μετακίνηση αρχείου", + "new": "Νέο", + "next": "Επόμενο", + "ok": "Εντάξει", + "permalink": "Λήψη μόνιμου συνδέσμου", + "previous": "Προηγούμενο", + "publish": "Δημοσίευση", + "rename": "Μετονομασία", + "replace": "Αντικατάσταση", + "reportIssue": "Αναφορά προβλήματος", + "save": "Αποθήκευση", + "schedule": "Προγραμματισμός", + "search": "Αναζήτηση", + "select": "Επιλογή", + "selectMultiple": "Επιλογή πολλαπλών", + "share": "Κοινοποίηση", + "submit": "Υποβολή", + "switchView": "Εναλλαγή προβολής", + "toggleSidebar": "(Απ-)ενεργοποίησης της πλευρικής μπάρας", + "update": "Ενημέρωση", + "upload": "Μεταφόρτωση", + "openFile": "Άνοιγμα αρχείου" + }, + "download": { + "downloadFile": "Λήψη αρχείου", + "downloadFolder": "Λήψη φακέλου", + "downloadSelected": "Λήψη επιλεγμένων" + }, + "upload": { + "abortUpload": "Είστε σίγουροι ότι θέλετε να διακόψετε τη μεταφόρτωση;" + }, + "errors": { + "forbidden": "Δεν έχετε άδεια πρόσβασης σε αυτό.", + "internal": "Προέκυψε εσωτερικό σφάλμα.", + "notFound": "Αυτή η τοποθεσία δεν μπορεί να βρεθεί.", + "connection": "Ο διακομιστής δεν είναι διαθέσιμος." + }, + "files": { + "body": "Περιεχόμενο", + "closePreview": "Κλείσιμο προεπισκόπησης", + "files": "Αρχεία", + "folders": "Φάκελοι", + "home": "Αρχική", + "lastModified": "Τελευταία τροποποίηση", + "loading": "Φορτώνει…", + "lonely": "Δεν υπάρχει τίποτα εδώ (ακόμη)…", + "metadata": "Μεταδεδομένα", + "multipleSelectionEnabled": "Ενεργοποιημένη επιλογή πολλαπλών", + "name": "Όνομα", + "size": "Μέγεθος", + "sortByLastModified": "Ταξινόμηση κατά πρόσφατη τροποποίηση", + "sortByName": "Ταξινόμηση κατά όνομα", + "sortBySize": "Ταξινόμηση κατά μέγεθος", + "noPreview": "Η προεπισκόπηση δεν είναι διαθέσιμη για αυτό το αρχείο." + }, + "help": { + "click": "επιλέξτε αρχείο ή φάκελο", + "ctrl": { + "click": "επιλογή πολλαπλών αρχείων ή φακέλων", + "f": "ανοίγει την αναζήτηση", + "s": "αποθηκεύει ένα αρχείο ή εκκινεί λήψη του φακέλου στον οποίο βρίσκεστε" }, - "download": { - "downloadFile": "Λήψη αρχείου", - "downloadFolder": "Λήψη φακέλου", - "downloadSelected": "Λήψη επιλεγμένων" + "del": "διαγραφή επιλεγμένων στοιχείων", + "doubleClick": "ανοίγει ένα αρχείο ή φάκελο", + "esc": "καθαρίζει την επιλογή ή/και κλείνει το παράθυρο", + "f1": "αυτή η πληροφορία", + "f2": "μετονομασία αρχείου", + "help": "Βοήθεια" + }, + "languages": { + "he": "עברית", + "hu": "Magyar", + "ar": "العربية", + "de": "Deutsch", + "en": "English", + "es": "Español", + "el": "Ελληνικά", + "fr": "Français", + "is": "Icelandic", + "it": "Italiano", + "ja": "日本語", + "ko": "한국어", + "nlBE": "Dutch (Belgium)", + "pl": "Polski", + "pt": "Português", + "ptBR": "Português (Brasil)", + "ro": "Romanian", + "ru": "Русский", + "sk": "Slovenčina", + "svSE": "Swedish (Sweden)", + "tr": "Türkçe", + "ua": "Українська", + "zhCN": "中文 (简体)", + "zhTW": "中文 (繁體)" + }, + "login": { + "createAnAccount": "Δημιουργία λογαριασμού", + "loginInstead": "Έχετε ήδη λογαριασμό", + "password": "Κωδικός πρόσβασης", + "passwordConfirm": "Επιβεβαίωση κωδικού πρόσβασης", + "passwordsDontMatch": "Οι κωδικοί πρόσβασης δεν ταιριάζουν", + "signup": "Εγγραφή", + "submit": "Είσοδος", + "username": "Όνομα χρήστη", + "usernameTaken": "Το όνομα χρήστη χρησιμοποιείται ήδη", + "wrongCredentials": "Λάθος όνομα ή/και κωδικός πρόσβασης" + }, + "permanent": "Μόνιμο", + "prompts": { + "copy": "Αντιγραφή", + "copyMessage": "Επιλέξτε τοποθεσία για αντιγραφή των αρχείων σας:", + "deleteMessageMultiple": "Είστε σίγουροι ότι θέλετε να διαγράψετε {count} αρχεία;", + "deleteMessageSingle": "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το αρχείο/φάκελο;", + "deleteMessageShare": "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτή την κοινοποίηση ({path});", + "deleteTitle": "Διαγραφή αρχείων", + "displayName": "Εμφάνιση ονόματος:", + "download": "Λήψη αρχείων", + "downloadMessage": "Επιλέξτε τη μορφή που θέλετε να λάβετε.", + "error": "Προέκυψε κάποιο σφάλμα", + "fileInfo": "Πληροφορίες αρχείου", + "filesSelected": "Επιλέχθηκαν {count} αρχεία.", + "lastModified": "Τελευταία τροποποίηση", + "move": "Μετακίνηση", + "moveMessage": "Επιλέξτε νέα τοποθεσία για τα αρχεία / τους φακέλους σας:", + "newArchetype": "Δημιουργία νέας ανάρτησης με βάση έναν αρχέτυπο. Το αρχείο σας θα δημιουργηθεί στο φάκελο περιεχομένου.", + "newDir": "Νέος φάκελος", + "newDirMessage": "Γράψτε το όνομα του νέου φακέλου.", + "newFile": "Νέο αρχείο", + "newFileMessage": "Γράψτε το όνομα του νέου αρχείου.", + "numberDirs": "Αριθμός φακέλων", + "numberFiles": "Αριθμός αρχείων", + "rename": "Μετονομασία", + "renameMessage": "Εισαγάγετε ένα νέο όνομα για το", + "replace": "Αντικατάσταση", + "replaceMessage": "Ένα από τα αρχεία που προσπαθείτε να μεταφορτώσετε δημιουργεί σύγκρουση με υπάρχον αρχείο λόγω του ονόματός του. Θέλετε να συνεχίσετε τη μεταφόρτωση ή να αντικαταστήσετε το υπάρχον;\n", + "schedule": "Προγραμματισμός", + "scheduleMessage": "Επιλέξτε μια ημερομηνία και ώρα για τον προγραμματισμό της δημοσίευσης αυτής της ανάρτησης.", + "show": "Εμφάνιση", + "size": "Μέγεθος", + "upload": "Μεταφόρτωση", + "uploadFiles": "Μεταφόρτωση {files} αρχείων…", + "uploadMessage": "Επιλέξτε μια επιλογή για τη μεταφόρτωση.", + "optionalPassword": "Προαιρετικός κωδικός πρόσβασης" + }, + "search": { + "images": "Εικόνες", + "music": "Μουσική", + "pdf": "PDF", + "pressToSearch": "Πατήστε Enter για αναζήτηση…", + "search": "Αναζήτηση…", + "typeToSearch": "Πληκτρολογήστε για αναζήτηση…", + "types": "Τύποι", + "video": "Βίντεο" + }, + "settings": { + "admin": "Διαχειριστής", + "administrator": "Διαχειριστής", + "allowCommands": "Εκτέλεση εντολών", + "allowEdit": "Επεξεργασία, μετονομασία και διαγραφή αρχείων ή φακέλων", + "allowNew": "Δημιουργία νέων αρχείων και φακέλων", + "allowPublish": "Δημοσίευση νέων αναρτήσεων και σελίδων", + "allowSignup": "Να επιτρέπεται η εγγραφή νέων χρηστών", + "avoidChanges": "(αφήστε το κενό για αποφυγή αλλαγών)", + "branding": "Εξατομίκευση", + "brandingDirectoryPath": "Διαδρομή φακέλου εξατομίκευσης", + "brandingHelp": "Μπορείτε να προσαρμόσετε την εμφάνισης της εφαρμογής File Browser αλλάζοντας το όνομά της, αντικαθιστώντας το λογότυπό της, προσθέτοντας προσαρμοσμένα στυλ και ακόμα και απενεργοποιώντας εξωτερικούς συνδέσμους προς το GitHub.\nΓια περισσότερες πληροφορίες σχετικά με αυτές τις προσαρμογές, ελέγξτε το {0}.", + "changePassword": "Αλλαγή κωδικού πρόσβασης", + "commandRunner": "Εκτέλεση εντολών", + "commandRunnerHelp": "Εδώ μπορείτε να ορίσετε εντολές που εκτελούνται στα ονομασμένα γεγονότα και δραστηριότητες. Πρέπει να γράψετε μία εντολή ανά γραμμή. Οι μεταβλητές περιβάλλοντος {0} και {1} θα είναι διαθέσιμες, και θα είναι {0} σχετικές με το {1}. Για περισσότερες πληροφορίες σχετικά με αυτή τη λειτουργία και τις διαθέσιμες μεταβλητές περιβάλλοντος, παρακαλώ διαβάστε το {2}.", + "commandsUpdated": "Οι εντολές ενημερώθηκαν!", + "createUserDir": "Αυτόματη δημιουργία φακέλου χρήστη κατά την προσθήκη νέου χρήστη", + "tusUploads": "Τμηματικές μεταφορές αρχείων", + "tusUploadsHelp": "Η εφαρμογή File Browser υποστηρίζει τμηματικές μεταφορτώσεις αρχείων, επιτρέποντας την αποδοτική, αξιόπιστη και συνεχιζόμενη μεταφόρτωση αρχείων ακόμα και σε ασταθείς συνδέσεις δικτύου.", + "tusUploadsChunkSize": "Υποδεικνύει το μέγιστο μέγεθος ενός αιτήματος μεταφόρτωσης (για μικρότερες μεταφορές αρχείων θα χρησιμοποιηθούν απευθείας και όχι τμηματικές μεταφορτώσεις). Μπορείτε να εισάγετε έναν ακέραιο αριθμό που υποδηλώνει το μέγεθος σε bytes, ή κείμενο με αριθμό και μονάδα μέτρησης μεγέθους δεδομένων, όπως 10MB, 1GB κλπ.", + "tusUploadsRetryCount": "Αριθμός επαναληπτικών δοκιμών που θα πραγματοποιηθούν αν αποτύχει η μεταφόρτωση ενός τμήματος.", + "userHomeBasePath": "Βασική διαδρομή αρχείων για τους φακέλους των χρηστών", + "userScopeGenerationPlaceholder": "Η εμβέλεια εφαρμογής θα δημιουργηθεί αυτόματα", + "createUserHomeDirectory": "Δημιουργία φακέλου χρήστη", + "customStylesheet": "Προσαρμοσμένο στυλ εμφάνισης (stylesheet)", + "defaultUserDescription": "Αυτές είναι οι προεπιλεγμένες ρυθμίσεις για νέους χρήστες.", + "disableExternalLinks": "Απενεργοποίηση εξωτερικών συνδέσμων (εκτός από συνδέσμους προς τις οδηγίες χρήσης)", + "disableUsedDiskPercentage": "Απενεργοποίηση γραφήματος ποσοστού χρήσης χώρου αποθήκευσης", + "documentation": "οδηγίες χρήσης", + "examples": "Παραδείγματα", + "executeOnShell": "Εκτέλεση στο κέλυφος", + "executeOnShellDescription": "Από προεπιλογή, η εφαρμογή File Browser εκτελεί τις εντολές καλώντας τα προγράμματα των εντολών απευθείας. Αν θέλετε να τις εκτελέσετε σε ένα κέλυφος (όπως το Bash ή το PowerShell), μπορείτε να το καθορίσετε εδώ με τις απαιτούμενες παραμέτρους. Εάν οριστεί, η εντολή που εκτελείτε θα προστίθεται ως παράμετρος. Αυτό ισχύει τόσο για τις εντολές χρήστη όσο και για τους αγκίστρους συμβάντων (event hooks).", + "globalRules": "Πρόκειται για ένα γενικό σύνολο κανόνων που επιτρέπουν και απαγορεύουν διάφορες λειτουργίες και ισχύουν για κάθε χρήστη. Μπορείτε να καθορίσετε συγκεκριμένους κανόνες στις ρυθμίσεις κάθε χρήστη για να παρακάμψετε τους γενικούς κανόνες.", + "globalSettings": "Γενικές ρυθμίσεις", + "hideDotfiles": "Απόκρυψη κρυφών αρχείων (dotfiles)", + "insertPath": "Εισάγετε διαδρομή", + "insertRegex": "Εισάγετε έκφραση regex", + "instanceName": "Όνομα περιβάλλοντος", + "language": "Γλώσσα", + "lockPassword": "Αποτρέψτε τον χρήστη από την αλλαγή του κωδικού πρόσβασης", + "newPassword": "Νέος κωδικός πρόσβασης", + "newPasswordConfirm": "Επιβεβαιώστε τον νέο κωδικό πρόσβασης", + "newUser": "Νέος χρήστης", + "password": "Κωδικός πρόσβασης", + "passwordUpdated": "Ο κωδικός πρόσβασης ενημερώθηκε!", + "path": "Διαδρομή", + "perm": { + "create": "Δημιουργία αρχείων και φακέλων", + "delete": "Διαγραφή αρχείων και φακέλων", + "download": "Λήψη", + "execute": "Εκτέλεση εντολών", + "modify": "Επεξεργασία αρχείων", + "rename": "Μετονομασία ή μετακίνηση αρχείων και φακέλων", + "share": "Κοινοποίηση αρχείων" }, - "upload": { - "abortUpload": "Είστε σίγουροι ότι θέλετε να διακόψετε τη μεταφόρτωση;" + "permissions": "Δικαιώματα", + "permissionsHelp": "Μπορείτε να ορίσετε τον χρήστη ως διαχειριστή ή να επιλέξετε τα δικαιώματα μεμονωμένα. Αν επιλέξετε \"Διαχειριστής\", όλες οι υπόλοιπες επιλογές θα είναι αυτόματα επιλεγμένες. Η διαχείριση χρηστών παραμένει προνόμιο ενός χρήστη με τον ρόλο του διαχειριστή.\n", + "profileSettings": "Ρυθμίσεις προφίλ", + "ruleExample1": "αποκλείει την πρόσβαση σε οποιοδήποτε κρυφό αρχείο (όπως .git, .gitignore) σε κάθε φάκελο.\n", + "ruleExample2": "αποκλείει την πρόσβαση στο αρχείο με το όνομα Caddyfile στον ριζικό φάκελο της εμβέλειας του κανόνα.", + "rules": "Κανόνες", + "rulesHelp": "Εδώ μπορείτε να ορίσετε ένα σύνολο κανόνων που επιτρέπουν και απαγορεύουν διάφορες λειτουργίες για τον συγκεκριμένο χρήστη. Τα αποκλεισμένα αρχεία δεν θα εμφανίζονται στα περιεχόμενα των αντίστοιχων φακέλων και δεν θα είναι προσβάσιμα από τον χρήστη. Υποστηρίζονται εκφράσεις regex και διαδρομές σχετικές με την εμβέλεια αρχείων των χρηστών.\n", + "scope": "Εμβέλεια", + "setDateFormat": "Ορισμός ακριβούς μορφής ημερομηνίας", + "settingsUpdated": "Οι ρυθμίσεις ενημερώθηκαν!", + "shareDuration": "Διάρκεια κοινοποίησης", + "shareManagement": "Διαχείριση κοινοποίησης", + "shareDeleted": "Η κοινοποίηση διαγράφηκε!", + "singleClick": "Χρήση μονού κλικ για να ανοίξετε αρχεία και φακέλους", + "themes": { + "dark": "Σκοτεινό", + "light": "Φωτεινό", + "title": "Μοτίβο" }, - "errors": { - "forbidden": "Δεν έχετε άδεια πρόσβασης σε αυτό.", - "internal": "Προέκυψε εσωτερικό σφάλμα.", - "notFound": "Αυτή η τοποθεσία δεν μπορεί να βρεθεί.", - "connection": "Ο διακομιστής δεν είναι διαθέσιμος." - }, - "files": { - "body": "Περιεχόμενο", - "clear": "Καθαρισμός", - "closePreview": "Κλείσιμο προεπισκόπησης", - "files": "Αρχεία", - "folders": "Φάκελοι", - "home": "Αρχική", - "lastModified": "Τελευταία τροποποίηση", - "loading": "Φορτώνει…", - "lonely": "Δεν υπάρχει τίποτα εδώ (ακόμη)…", - "metadata": "Μεταδεδομένα", - "multipleSelectionEnabled": "Ενεργοποιημένη επιλογή πολλαπλών", - "name": "Όνομα", - "size": "Μέγεθος", - "sortByLastModified": "Ταξινόμηση κατά πρόσφατη τροποποίηση", - "sortByName": "Ταξινόμηση κατά όνομα", - "sortBySize": "Ταξινόμηση κατά μέγεθος", - "noPreview": "Η προεπισκόπηση δεν είναι διαθέσιμη για αυτό το αρχείο." - }, - "help": { - "click": "επιλέξτε αρχείο ή φάκελο", - "ctrl": { - "click": "επιλογή πολλαπλών αρχείων ή φακέλων", - "f": "ανοίγει την αναζήτηση", - "s": "αποθηκεύει ένα αρχείο ή εκκινεί λήψη του φακέλου στον οποίο βρίσκεστε" - }, - "del": "διαγραφή επιλεγμένων στοιχείων", - "doubleClick": "ανοίγει ένα αρχείο ή φάκελο", - "esc": "καθαρίζει την επιλογή ή/και κλείνει το παράθυρο", - "f1": "αυτή η πληροφορία", - "f2": "μετονομασία αρχείου", - "help": "Βοήθεια" - }, - "languages": { - "he": "עברית", - "hu": "Magyar", - "ar": "العربية", - "de": "Deutsch", - "en": "English", - "es": "Español", - "el": "Ελληνικά", - "fr": "Français", - "is": "Icelandic", - "it": "Italiano", - "ja": "日本語", - "ko": "한국어", - "nlBE": "Dutch (Belgium)", - "pl": "Polski", - "pt": "Português", - "ptBR": "Português (Brasil)", - "ro": "Romanian", - "ru": "Русский", - "sk": "Slovenčina", - "svSE": "Swedish (Sweden)", - "tr": "Türkçe", - "ua": "Українська", - "zhCN": "中文 (简体)", - "zhTW": "中文 (繁體)" - }, - "login": { - "createAnAccount": "Δημιουργία λογαριασμού", - "loginInstead": "Έχετε ήδη λογαριασμό", - "password": "Κωδικός πρόσβασης", - "passwordConfirm": "Επιβεβαίωση κωδικού πρόσβασης", - "passwordsDontMatch": "Οι κωδικοί πρόσβασης δεν ταιριάζουν", - "signup": "Εγγραφή", - "submit": "Είσοδος", - "username": "Όνομα χρήστη", - "usernameTaken": "Το όνομα χρήστη χρησιμοποιείται ήδη", - "wrongCredentials": "Λάθος όνομα ή/και κωδικός πρόσβασης" - }, - "permanent": "Μόνιμο", - "prompts": { - "copy": "Αντιγραφή", - "copyMessage": "Επιλέξτε τοποθεσία για αντιγραφή των αρχείων σας:", - "deleteMessageMultiple": "Είστε σίγουροι ότι θέλετε να διαγράψετε {count} αρχεία;", - "deleteMessageSingle": "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το αρχείο/φάκελο;", - "deleteMessageShare": "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτή την κοινοποίηση ({path});", - "deleteTitle": "Διαγραφή αρχείων", - "displayName": "Εμφάνιση ονόματος:", - "download": "Λήψη αρχείων", - "downloadMessage": "Επιλέξτε τη μορφή που θέλετε να λάβετε.", - "error": "Προέκυψε κάποιο σφάλμα", - "fileInfo": "Πληροφορίες αρχείου", - "filesSelected": "Επιλέχθηκαν {count} αρχεία.", - "lastModified": "Τελευταία τροποποίηση", - "move": "Μετακίνηση", - "moveMessage": "Επιλέξτε νέα τοποθεσία για τα αρχεία / τους φακέλους σας:", - "newArchetype": "Δημιουργία νέας ανάρτησης με βάση έναν αρχέτυπο. Το αρχείο σας θα δημιουργηθεί στο φάκελο περιεχομένου.", - "newDir": "Νέος φάκελος", - "newDirMessage": "Γράψτε το όνομα του νέου φακέλου.", - "newFile": "Νέο αρχείο", - "newFileMessage": "Γράψτε το όνομα του νέου αρχείου.", - "numberDirs": "Αριθμός φακέλων", - "numberFiles": "Αριθμός αρχείων", - "rename": "Μετονομασία", - "renameMessage": "Εισαγάγετε ένα νέο όνομα για το", - "replace": "Αντικατάσταση", - "replaceMessage": "Ένα από τα αρχεία που προσπαθείτε να μεταφορτώσετε δημιουργεί σύγκρουση με υπάρχον αρχείο λόγω του ονόματός του. Θέλετε να συνεχίσετε τη μεταφόρτωση ή να αντικαταστήσετε το υπάρχον;\n", - "schedule": "Προγραμματισμός", - "scheduleMessage": "Επιλέξτε μια ημερομηνία και ώρα για τον προγραμματισμό της δημοσίευσης αυτής της ανάρτησης.", - "show": "Εμφάνιση", - "size": "Μέγεθος", - "upload": "Μεταφόρτωση", - "uploadFiles": "Μεταφόρτωση {files} αρχείων…", - "uploadMessage": "Επιλέξτε μια επιλογή για τη μεταφόρτωση.", - "optionalPassword": "Προαιρετικός κωδικός πρόσβασης" - }, - "search": { - "images": "Εικόνες", - "music": "Μουσική", - "pdf": "PDF", - "pressToSearch": "Πατήστε Enter για αναζήτηση…", - "search": "Αναζήτηση…", - "typeToSearch": "Πληκτρολογήστε για αναζήτηση…", - "types": "Τύποι", - "video": "Βίντεο" - }, - "settings": { - "admin": "Διαχειριστής", - "administrator": "Διαχειριστής", - "allowCommands": "Εκτέλεση εντολών", - "allowEdit": "Επεξεργασία, μετονομασία και διαγραφή αρχείων ή φακέλων", - "allowNew": "Δημιουργία νέων αρχείων και φακέλων", - "allowPublish": "Δημοσίευση νέων αναρτήσεων και σελίδων", - "allowSignup": "Να επιτρέπεται η εγγραφή νέων χρηστών", - "avoidChanges": "(αφήστε το κενό για αποφυγή αλλαγών)", - "branding": "Εξατομίκευση", - "brandingDirectoryPath": "Διαδρομή φακέλου εξατομίκευσης", - "brandingHelp": "Μπορείτε να προσαρμόσετε την εμφάνισης της εφαρμογής File Browser αλλάζοντας το όνομά της, αντικαθιστώντας το λογότυπό της, προσθέτοντας προσαρμοσμένα στυλ και ακόμα και απενεργοποιώντας εξωτερικούς συνδέσμους προς το GitHub.\nΓια περισσότερες πληροφορίες σχετικά με αυτές τις προσαρμογές, ελέγξτε το {0}.", - "changePassword": "Αλλαγή κωδικού πρόσβασης", - "commandRunner": "Εκτέλεση εντολών", - "commandRunnerHelp": "Εδώ μπορείτε να ορίσετε εντολές που εκτελούνται στα ονομασμένα γεγονότα και δραστηριότητες. Πρέπει να γράψετε μία εντολή ανά γραμμή. Οι μεταβλητές περιβάλλοντος {0} και {1} θα είναι διαθέσιμες, και θα είναι {0} σχετικές με το {1}. Για περισσότερες πληροφορίες σχετικά με αυτή τη λειτουργία και τις διαθέσιμες μεταβλητές περιβάλλοντος, παρακαλώ διαβάστε το {2}.", - "commandsUpdated": "Οι εντολές ενημερώθηκαν!", - "createUserDir": "Αυτόματη δημιουργία φακέλου χρήστη κατά την προσθήκη νέου χρήστη", - "tusUploads": "Τμηματικές μεταφορές αρχείων", - "tusUploadsHelp": "Η εφαρμογή File Browser υποστηρίζει τμηματικές μεταφορτώσεις αρχείων, επιτρέποντας την αποδοτική, αξιόπιστη και συνεχιζόμενη μεταφόρτωση αρχείων ακόμα και σε ασταθείς συνδέσεις δικτύου.", - "tusUploadsChunkSize": "Υποδεικνύει το μέγιστο μέγεθος ενός αιτήματος μεταφόρτωσης (για μικρότερες μεταφορές αρχείων θα χρησιμοποιηθούν απευθείας και όχι τμηματικές μεταφορτώσεις). Μπορείτε να εισάγετε έναν ακέραιο αριθμό που υποδηλώνει το μέγεθος σε bytes, ή κείμενο με αριθμό και μονάδα μέτρησης μεγέθους δεδομένων, όπως 10MB, 1GB κλπ.", - "tusUploadsRetryCount": "Αριθμός επαναληπτικών δοκιμών που θα πραγματοποιηθούν αν αποτύχει η μεταφόρτωση ενός τμήματος.", - "userHomeBasePath": "Βασική διαδρομή αρχείων για τους φακέλους των χρηστών", - "userScopeGenerationPlaceholder": "Η εμβέλεια εφαρμογής θα δημιουργηθεί αυτόματα", - "createUserHomeDirectory": "Δημιουργία φακέλου χρήστη", - "customStylesheet": "Προσαρμοσμένο στυλ εμφάνισης (stylesheet)", - "defaultUserDescription": "Αυτές είναι οι προεπιλεγμένες ρυθμίσεις για νέους χρήστες.", - "disableExternalLinks": "Απενεργοποίηση εξωτερικών συνδέσμων (εκτός από συνδέσμους προς τις οδηγίες χρήσης)", - "disableUsedDiskPercentage": "Απενεργοποίηση γραφήματος ποσοστού χρήσης χώρου αποθήκευσης", - "documentation": "οδηγίες χρήσης", - "examples": "Παραδείγματα", - "executeOnShell": "Εκτέλεση στο κέλυφος", - "executeOnShellDescription": "Από προεπιλογή, η εφαρμογή File Browser εκτελεί τις εντολές καλώντας τα προγράμματα των εντολών απευθείας. Αν θέλετε να τις εκτελέσετε σε ένα κέλυφος (όπως το Bash ή το PowerShell), μπορείτε να το καθορίσετε εδώ με τις απαιτούμενες παραμέτρους. Εάν οριστεί, η εντολή που εκτελείτε θα προστίθεται ως παράμετρος. Αυτό ισχύει τόσο για τις εντολές χρήστη όσο και για τους αγκίστρους συμβάντων (event hooks).", - "globalRules": "Πρόκειται για ένα γενικό σύνολο κανόνων που επιτρέπουν και απαγορεύουν διάφορες λειτουργίες και ισχύουν για κάθε χρήστη. Μπορείτε να καθορίσετε συγκεκριμένους κανόνες στις ρυθμίσεις κάθε χρήστη για να παρακάμψετε τους γενικούς κανόνες.", - "globalSettings": "Γενικές ρυθμίσεις", - "hideDotfiles": "Απόκρυψη κρυφών αρχείων (dotfiles)", - "insertPath": "Εισάγετε διαδρομή", - "insertRegex": "Εισάγετε έκφραση regex", - "instanceName": "Όνομα περιβάλλοντος", - "language": "Γλώσσα", - "lockPassword": "Αποτρέψτε τον χρήστη από την αλλαγή του κωδικού πρόσβασης", - "newPassword": "Νέος κωδικός πρόσβασης", - "newPasswordConfirm": "Επιβεβαιώστε τον νέο κωδικό πρόσβασης", - "newUser": "Νέος χρήστης", - "password": "Κωδικός πρόσβασης", - "passwordUpdated": "Ο κωδικός πρόσβασης ενημερώθηκε!", - "path": "Διαδρομή", - "perm": { - "create": "Δημιουργία αρχείων και φακέλων", - "delete": "Διαγραφή αρχείων και φακέλων", - "download": "Λήψη", - "execute": "Εκτέλεση εντολών", - "modify": "Επεξεργασία αρχείων", - "rename": "Μετονομασία ή μετακίνηση αρχείων και φακέλων", - "share": "Κοινοποίηση αρχείων" - }, - "permissions": "Δικαιώματα", - "permissionsHelp": "Μπορείτε να ορίσετε τον χρήστη ως διαχειριστή ή να επιλέξετε τα δικαιώματα μεμονωμένα. Αν επιλέξετε \"Διαχειριστής\", όλες οι υπόλοιπες επιλογές θα είναι αυτόματα επιλεγμένες. Η διαχείριση χρηστών παραμένει προνόμιο ενός χρήστη με τον ρόλο του διαχειριστή.\n", - "profileSettings": "Ρυθμίσεις προφίλ", - "ruleExample1": "αποκλείει την πρόσβαση σε οποιοδήποτε κρυφό αρχείο (όπως .git, .gitignore) σε κάθε φάκελο.\n", - "ruleExample2": "αποκλείει την πρόσβαση στο αρχείο με το όνομα Caddyfile στον ριζικό φάκελο της εμβέλειας του κανόνα.", - "rules": "Κανόνες", - "rulesHelp": "Εδώ μπορείτε να ορίσετε ένα σύνολο κανόνων που επιτρέπουν και απαγορεύουν διάφορες λειτουργίες για τον συγκεκριμένο χρήστη. Τα αποκλεισμένα αρχεία δεν θα εμφανίζονται στα περιεχόμενα των αντίστοιχων φακέλων και δεν θα είναι προσβάσιμα από τον χρήστη. Υποστηρίζονται εκφράσεις regex και διαδρομές σχετικές με την εμβέλεια αρχείων των χρηστών.\n", - "scope": "Εμβέλεια", - "setDateFormat": "Ορισμός ακριβούς μορφής ημερομηνίας", - "settingsUpdated": "Οι ρυθμίσεις ενημερώθηκαν!", - "shareDuration": "Διάρκεια κοινοποίησης", - "shareManagement": "Διαχείριση κοινοποίησης", - "shareDeleted": "Η κοινοποίηση διαγράφηκε!", - "singleClick": "Χρήση μονού κλικ για να ανοίξετε αρχεία και φακέλους", - "themes": { - "dark": "Σκοτεινό", - "light": "Φωτεινό", - "title": "Μοτίβο" - }, - "user": "Χρήστης", - "userCommands": "Εντολές χρήστη", - "userCommandsHelp": "Μια λίστα με τις διαθέσιμες εντολές για αυτόν το χρήστη, χωρισμένες μεταξύ τους με κενά. Παράδειγμα:\n", - "userCreated": "Ο χρήστης δημιουργήθηκε!", - "userDefaults": "Προεπιλεγμένες ρυθμίσεις χρήστη", - "userDeleted": "Ο χρήστης διαγράφηκε!", - "userManagement": "Διαχείριση χρηστών", - "userUpdated": "Ο χρήστης ενημερώθηκε!", - "username": "Όνομα χρήστη", - "users": "Χρήστες" - }, - "sidebar": { - "help": "Βοήθεια", - "hugoNew": "Νέο Hugo", - "login": "Σύνδεση", - "logout": "Αποσύνδεση", - "myFiles": "Τα αρχεία μου", - "newFile": "Νέο αρχείο", - "newFolder": "Νέος φάκελος", - "preview": "Προεπισκόπηση", - "settings": "Ρυθμίσεις", - "signup": "Εγγραφή", - "siteSettings": "Ρυθμίσεις ιστότοπου" - }, - "success": { - "linkCopied": "Ο σύνδεσμος αντιγράφηκε!" - }, - "time": { - "days": "Ημέρες", - "hours": "Ώρες", - "minutes": "Λεπτά", - "seconds": "Δευτερόλεπτα", - "unit": "Μονάδα χρόνου" - } + "user": "Χρήστης", + "userCommands": "Εντολές χρήστη", + "userCommandsHelp": "Μια λίστα με τις διαθέσιμες εντολές για αυτόν το χρήστη, χωρισμένες μεταξύ τους με κενά. Παράδειγμα:\n", + "userCreated": "Ο χρήστης δημιουργήθηκε!", + "userDefaults": "Προεπιλεγμένες ρυθμίσεις χρήστη", + "userDeleted": "Ο χρήστης διαγράφηκε!", + "userManagement": "Διαχείριση χρηστών", + "userUpdated": "Ο χρήστης ενημερώθηκε!", + "username": "Όνομα χρήστη", + "users": "Χρήστες" + }, + "sidebar": { + "help": "Βοήθεια", + "hugoNew": "Νέο Hugo", + "login": "Σύνδεση", + "logout": "Αποσύνδεση", + "myFiles": "Τα αρχεία μου", + "newFile": "Νέο αρχείο", + "newFolder": "Νέος φάκελος", + "preview": "Προεπισκόπηση", + "settings": "Ρυθμίσεις", + "signup": "Εγγραφή", + "siteSettings": "Ρυθμίσεις ιστότοπου" + }, + "success": { + "linkCopied": "Ο σύνδεσμος αντιγράφηκε!" + }, + "time": { + "days": "Ημέρες", + "hours": "Ώρες", + "minutes": "Λεπτά", + "seconds": "Δευτερόλεπτα", + "unit": "Μονάδα χρόνου" + } } diff --git a/frontend/src/i18n/en.json b/frontend/src/i18n/en.json index 33977e4e..499e474c 100644 --- a/frontend/src/i18n/en.json +++ b/frontend/src/i18n/en.json @@ -1,7 +1,9 @@ { "buttons": { "cancel": "Cancel", + "clear": "Clear", "close": "Close", + "continue": "Continue", "copy": "Copy", "copyFile": "Copy file", "copyToClipboard": "Copy to clipboard", @@ -11,6 +13,7 @@ "download": "Download", "file": "File", "folder": "Folder", + "fullScreen": "Toggle full screen", "hideDotfiles": "Hide dotfiles", "info": "Info", "more": "More", @@ -38,7 +41,6 @@ "update": "Update", "upload": "Upload", "openFile": "Open file", - "continue": "Continue", "discardChanges": "Discard" }, "download": { @@ -57,7 +59,6 @@ }, "files": { "body": "Body", - "clear": "Clear", "closePreview": "Close preview", "files": "Files", "folders": "Folders", @@ -110,7 +111,7 @@ "sk": "Slovenčina", "svSE": "Swedish (Sweden)", "tr": "Türkçe", - "ua": "Українська", + "uk": "Українська", "zhCN": "中文 (简体)", "zhTW": "中文 (繁體)" }, @@ -134,6 +135,7 @@ "deleteMessageMultiple": "Are you sure you wish to delete {count} file(s)?", "deleteMessageSingle": "Are you sure you wish to delete this file/folder?", "deleteMessageShare": "Are you sure you wish to delete this share({path})?", + "deleteUser": "Are you sure you want to delete this user?", "deleteTitle": "Delete files", "displayName": "Display Name:", "download": "Download files", @@ -246,6 +248,7 @@ "shareDeleted": "Share deleted!", "singleClick": "Use single clicks to open files and directories", "themes": { + "default": "System default", "dark": "Dark", "light": "Light", "title": "Theme" diff --git a/frontend/src/i18n/es.json b/frontend/src/i18n/es.json index bd247627..a0015ced 100644 --- a/frontend/src/i18n/es.json +++ b/frontend/src/i18n/es.json @@ -1,7 +1,9 @@ { "buttons": { "cancel": "Cancelar", + "clear": "Limpiar", "close": "Cerrar", + "continue": "Continuar", "copy": "Copiar", "copyFile": "Copiar archivo", "copyToClipboard": "Copiar al portapapeles", @@ -51,7 +53,6 @@ }, "files": { "body": "Cuerpo", - "clear": "Limpiar", "closePreview": "Cerrar vista previa", "files": "Archivos", "folders": "Carpetas", @@ -102,8 +103,8 @@ "ru": "Русский", "sk": "Slovenčina", "svSE": "Swedish (Sweden)", - "tr" : "Türkçe", - "ua": "Українська", + "tr": "Türkçe", + "uk": "Українська", "zhCN": "中文 (简体)", "zhTW": "中文 (繁體)" }, diff --git a/frontend/src/i18n/fr.json b/frontend/src/i18n/fr.json index 0be93f1a..0578c7fc 100644 --- a/frontend/src/i18n/fr.json +++ b/frontend/src/i18n/fr.json @@ -1,15 +1,19 @@ { "buttons": { "cancel": "Annuler", + "clear": "Effacer", "close": "Fermer", + "continue": "Continuer", "copy": "Copier", "copyFile": "Copier le fichier", "copyToClipboard": "Copier dans le presse-papier", + "copyDownloadLinkToClipboard": "Copier le lien de téléchargement dans le presse-papier", "create": "Créer", "delete": "Supprimer", "download": "Télécharger", "file": "Fichier", "folder": "Dossier", + "fullScreen": "Plein écran", "hideDotfiles": "Masquer les dotfiles", "info": "Info", "more": "Plus", @@ -51,7 +55,6 @@ }, "files": { "body": "Corps", - "clear": "Fermer", "closePreview": "Fermer la prévisualisation", "files": "Fichiers", "folders": "Dossiers", @@ -87,23 +90,24 @@ "hu": "Magyar", "ar": "العربية", "de": "Deutsch", + "el": "Ελληνικά", "en": "English", "es": "Español", "fr": "Français", - "is": "", + "is": "Icelandic", "it": "Italiano", "ja": "日本語", "ko": "한국어", - "nlBE": "", + "nlBE": "Dutch (Belgium)", "pl": "Polski", "pt": "Português", "ptBR": "Português (Brasil)", - "ro": "", + "ro": "Romanian", "ru": "Русский", "sk": "Slovenčina", - "svSE": "", - "tr" : "Türkçe", - "ua": "Українська", + "svSE": "Swedish (Sweden)", + "tr": "Türkçe", + "uk": "Українська", "zhCN": "中文 (简体)", "zhTW": "中文 (繁體)" }, @@ -181,7 +185,7 @@ "brandingHelp": "Vous pouvez personnaliser l'apparence de votre instance de File Browser en changeant son nom, en remplaçant le logo, en ajoutant des styles personnalisés et même en désactivant les liens externes vers GitHub.\nPour plus d'informations sur la personnalisation de l'image de marque, veuillez consulter la {0}.", "changePassword": "Modifier le mot de passe", "commandRunner": "Command runner", - "commandRunnerHelp" : "Ici, vous pouvez définir les commandes qui sont exécutées pour les événements nommés précédemments. Vous devez en écrire une par ligne. Les variables d'environnement {0} et {1} seront disponibles, {0} étant relatif à {1}. Pour plus d'informations sur cette fonctionnalité et les variables d'environnement disponibles, veuillez lire la {2}.", + "commandRunnerHelp": "Ici, vous pouvez définir les commandes qui sont exécutées pour les événements nommés précédemments. Vous devez en écrire une par ligne. Les variables d'environnement {0} et {1} seront disponibles, {0} étant relatif à {1}. Pour plus d'informations sur cette fonctionnalité et les variables d'environnement disponibles, veuillez lire la {2}.", "commandsUpdated": "Commandes mises à jour !", "createUserDir": "Créer automatiquement un dossier pour l'utilisateur", "customStylesheet": "Feuille de style personnalisée", diff --git a/frontend/src/i18n/he.json b/frontend/src/i18n/he.json index dbac2871..98c768f0 100644 --- a/frontend/src/i18n/he.json +++ b/frontend/src/i18n/he.json @@ -1,6 +1,7 @@ { "buttons": { "cancel": "ביטול", + "clear": "נקה", "close": "סגירה", "copy": "העתקה", "copyFile": "העתק קובץ", @@ -93,6 +94,7 @@ "hu": "Magyar", "ar": "العربية", "de": "Deutsch", + "el": "Ελληνικά", "en": "English", "es": "Español", "fr": "Français", @@ -109,7 +111,7 @@ "sk": "Slovenčina", "svSE": "Swedish (Sweden)", "tr": "Türkçe", - "ua": "Українська", + "uk": "Українська", "zhCN": "中文 (简体)", "zhTW": "中文 (繁體)" }, diff --git a/frontend/src/i18n/hu.json b/frontend/src/i18n/hu.json index 7674e337..34bbe862 100644 --- a/frontend/src/i18n/hu.json +++ b/frontend/src/i18n/hu.json @@ -1,6 +1,7 @@ { "buttons": { "cancel": "Mégse", + "clear": "Törlése", "close": "Bezárás", "copy": "Másolás", "copyFile": "Fájl másolása", @@ -51,7 +52,6 @@ }, "files": { "body": "Törzs", - "clear": "Törlése", "closePreview": "Előnézet bezárása", "files": "Fájlok", "folders": "Mappák", @@ -87,6 +87,7 @@ "hu": "Magyar", "ar": "العربية", "de": "Deutsch", + "el": "Ελληνικά", "en": "English", "es": "Español", "fr": "Français", @@ -103,7 +104,7 @@ "sk": "Slovenčina", "svSE": "Swedish (Sweden)", "tr": "Türkçe", - "ua": "Українська", + "uk": "Українська", "zhCN": "中文 (简体)", "zhTW": "中文 (繁體)" }, diff --git a/frontend/src/i18n/index.js b/frontend/src/i18n/index.js deleted file mode 100644 index 70640de8..00000000 --- a/frontend/src/i18n/index.js +++ /dev/null @@ -1,143 +0,0 @@ -import Vue from "vue"; -import VueI18n from "vue-i18n"; - -import he from "./he.json"; -import hu from "./hu.json"; -import ar from "./ar.json"; -import de from "./de.json"; -import el from "./el.json"; -import en from "./en.json"; -import es from "./es.json"; -import fr from "./fr.json"; -import is from "./is.json"; -import it from "./it.json"; -import ja from "./ja.json"; -import ko from "./ko.json"; -import nlBE from "./nl-be.json"; -import pl from "./pl.json"; -import pt from "./pt.json"; -import ptBR from "./pt-br.json"; -import ro from "./ro.json"; -import ru from "./ru.json"; -import sk from "./sk.json"; -import ua from "./ua.json"; -import svSE from "./sv-se.json"; -import zhCN from "./zh-cn.json"; -import zhTW from "./zh-tw.json"; - -Vue.use(VueI18n); - -export function detectLocale() { - let locale = (navigator.language || navigator.browserLangugae).toLowerCase(); - switch (true) { - case /^he.*/i.test(locale): - locale = "he"; - break; - case /^hu.*/i.test(locale): - locale = "hu"; - break; - case /^ar.*/i.test(locale): - locale = "ar"; - break; - case /^el.*/i.test(locale): - locale = "el"; - break; - case /^es.*/i.test(locale): - locale = "es"; - break; - case /^en.*/i.test(locale): - locale = "en"; - break; - case /^it.*/i.test(locale): - locale = "it"; - break; - case /^fr.*/i.test(locale): - locale = "fr"; - break; - case /^pt.*/i.test(locale): - locale = "pt"; - break; - case /^pt-BR.*/i.test(locale): - locale = "pt-br"; - break; - case /^ja.*/i.test(locale): - locale = "ja"; - break; - case /^zh-CN/i.test(locale): - locale = "zh-cn"; - break; - case /^zh-TW/i.test(locale): - locale = "zh-tw"; - break; - case /^zh.*/i.test(locale): - locale = "zh-cn"; - break; - case /^de.*/i.test(locale): - locale = "de"; - break; - case /^ru.*/i.test(locale): - locale = "ru"; - break; - case /^pl.*/i.test(locale): - locale = "pl"; - break; - case /^ko.*/i.test(locale): - locale = "ko"; - break; - case /^sk.*/i.test(locale): - locale = "sk"; - break; - case /^ua.*/i.test(locale): - locale = "ua"; - break; - default: - locale = "en"; - } - - return locale; -} - -const removeEmpty = (obj) => - Object.keys(obj) - .filter((k) => obj[k] !== null && obj[k] !== undefined && obj[k] !== "") // Remove undef. and null and empty.string. - .reduce( - (newObj, k) => - typeof obj[k] === "object" - ? Object.assign(newObj, { [k]: removeEmpty(obj[k]) }) // Recurse. - : Object.assign(newObj, { [k]: obj[k] }), // Copy value. - {} - ); - -export const rtlLanguages = ["he", "ar"]; - -const i18n = new VueI18n({ - locale: detectLocale(), - fallbackLocale: "en", - messages: { - he: removeEmpty(he), - hu: removeEmpty(hu), - ar: removeEmpty(ar), - de: removeEmpty(de), - el: removeEmpty(el), - en: en, - es: removeEmpty(es), - fr: removeEmpty(fr), - is: removeEmpty(is), - it: removeEmpty(it), - ja: removeEmpty(ja), - ko: removeEmpty(ko), - "nl-be": removeEmpty(nlBE), - pl: removeEmpty(pl), - "pt-br": removeEmpty(ptBR), - pt: removeEmpty(pt), - ru: removeEmpty(ru), - ro: removeEmpty(ro), - sk: removeEmpty(sk), - "sv-se": removeEmpty(svSE), - ua: removeEmpty(ua), - "zh-cn": removeEmpty(zhCN), - "zh-tw": removeEmpty(zhTW), - }, -}); - -export default i18n; diff --git a/frontend/src/i18n/index.ts b/frontend/src/i18n/index.ts new file mode 100644 index 00000000..a16a0a6a --- /dev/null +++ b/frontend/src/i18n/index.ts @@ -0,0 +1,164 @@ +import dayjs from "dayjs"; +import { createI18n } from "vue-i18n"; + +import("dayjs/locale/ar"); +import("dayjs/locale/de"); +import("dayjs/locale/el"); +import("dayjs/locale/en"); +import("dayjs/locale/es"); +import("dayjs/locale/fr"); +import("dayjs/locale/he"); +import("dayjs/locale/hu"); +import("dayjs/locale/is"); +import("dayjs/locale/it"); +import("dayjs/locale/ja"); +import("dayjs/locale/ko"); +import("dayjs/locale/nl-be"); +import("dayjs/locale/pl"); +import("dayjs/locale/pt-br"); +import("dayjs/locale/pt"); +import("dayjs/locale/ro"); +import("dayjs/locale/ru"); +import("dayjs/locale/sk"); +import("dayjs/locale/sv"); +import("dayjs/locale/tr"); +import("dayjs/locale/uk"); +import("dayjs/locale/zh-cn"); +import("dayjs/locale/zh-tw"); + +// All i18n resources specified in the plugin `include` option can be loaded +// at once using the import syntax +import messages from "@intlify/unplugin-vue-i18n/messages"; + +export function detectLocale() { + // locale is an RFC 5646 language tag + // https://developer.mozilla.org/en-US/docs/Web/API/Navigator/language + let locale = navigator.language.toLowerCase(); + switch (true) { + case /^he\b/.test(locale): + locale = "he"; + break; + case /^hu\b/.test(locale): + locale = "hu"; + break; + case /^ar\b/.test(locale): + locale = "ar"; + break; + case /^el.*/i.test(locale): + locale = "el"; + break; + case /^es\b/.test(locale): + locale = "es"; + break; + case /^en\b/.test(locale): + locale = "en"; + break; + case /^is\b/.test(locale): + locale = "is"; + break; + case /^it\b/.test(locale): + locale = "it"; + break; + case /^fr\b/.test(locale): + locale = "fr"; + break; + case /^pt-br\b/.test(locale): + locale = "pt-br"; + break; + case /^pt\b/.test(locale): + locale = "pt"; + break; + case /^ja\b/.test(locale): + locale = "ja"; + break; + case /^zh-tw\b/.test(locale): + locale = "zh-tw"; + break; + case /^zh-cn\b/.test(locale): + case /^zh\b/.test(locale): + locale = "zh-cn"; + break; + case /^de\b/.test(locale): + locale = "de"; + break; + case /^ro\b/.test(locale): + locale = "ro"; + break; + case /^ru\b/.test(locale): + locale = "ru"; + break; + case /^pl\b/.test(locale): + locale = "pl"; + break; + case /^ko\b/.test(locale): + locale = "ko"; + break; + case /^sk\b/.test(locale): + locale = "sk"; + break; + case /^tr\b/.test(locale): + locale = "tr"; + break; + // ua wasnt a valid locale for ukraine + case /^uk\b/.test(locale): + locale = "uk"; + break; + case /^sv-se\b/.test(locale): + case /^sv\b/.test(locale): + locale = "sv"; + break; + case /^nl-be\b/.test(locale): + locale = "nl-be"; + break; + default: + locale = "en"; + } + + return locale; +} + +// TODO: was this really necessary? +// function removeEmpty(obj: Record): void { +// Object.keys(obj) +// .filter((k) => obj[k] !== null && obj[k] !== undefined && obj[k] !== "") // Remove undef. and null and empty.string. +// .reduce( +// (newObj, k) => +// typeof obj[k] === "object" +// ? Object.assign(newObj, { [k]: removeEmpty(obj[k]) }) // Recurse. +// : Object.assign(newObj, { [k]: obj[k] }), // Copy value. +// {} +// ); +// } + +export const rtlLanguages = ["he", "ar"]; + +export const i18n = createI18n({ + locale: detectLocale(), + fallbackLocale: "en", + messages, + // expose i18n.global for outside components + legacy: true, +}); + +export const isRtl = (locale?: string) => { + // see below + // @ts-ignore + return rtlLanguages.includes(locale || i18n.global.locale.value); +}; + +export function setLocale(locale: string) { + dayjs.locale(locale); + // according to doc u only need .value if legacy: false but they lied + // https://vue-i18n.intlify.dev/guide/essentials/scope.html#local-scope-1 + //@ts-ignore + i18n.global.locale.value = locale; +} + +export function setHtmlLocale(locale: string) { + const html = document.documentElement; + html.lang = locale; + if (isRtl(locale)) html.dir = "rtl"; + else html.dir = "ltr"; +} + +export default i18n; diff --git a/frontend/src/i18n/is.json b/frontend/src/i18n/is.json index 24d51b02..6cc6af1d 100644 --- a/frontend/src/i18n/is.json +++ b/frontend/src/i18n/is.json @@ -1,6 +1,7 @@ { "buttons": { "cancel": "Hætta við", + "clear": "Hreinsa", "close": "Loka", "copy": "Afrita", "copyFile": "Afrita skjal", @@ -46,7 +47,6 @@ }, "files": { "body": "Meginmál", - "clear": "Hreinsa", "closePreview": "Loka forskoðun", "files": "Skjöl", "folders": "Möppur", @@ -81,23 +81,24 @@ "hu": "Magyar", "ar": "العربية", "de": "Deutsch", + "el": "Ελληνικά", "en": "English", "es": "Español", "fr": "Français", - "is": "", + "is": "Icelandic", "it": "Italiano", "ja": "日本語", "ko": "한국어", - "nlBE": "", + "nlBE": "Dutch (Belgium)", "pl": "Polski", "pt": "Português", "ptBR": "Português (Brasil)", - "ro": "", + "ro": "Romanian", "ru": "Русский", "sk": "Slovenčina", - "svSE": "", - "tr" : "Türkçe", - "ua": "Українська", + "svSE": "Swedish (Sweden)", + "tr": "Türkçe", + "uk": "Українська", "zhCN": "中文 (简体)", "zhTW": "中文 (繁體)" }, diff --git a/frontend/src/i18n/it.json b/frontend/src/i18n/it.json index 85360980..5e5291a7 100644 --- a/frontend/src/i18n/it.json +++ b/frontend/src/i18n/it.json @@ -1,7 +1,9 @@ { "buttons": { "cancel": "Annulla", + "clear": "Cancella", "close": "Chiudi", + "continue": "Continua", "copy": "Copia", "copyFile": "Copia file", "copyToClipboard": "Copia negli appunti", @@ -46,7 +48,6 @@ }, "files": { "body": "Contenuto", - "clear": "Cancella", "closePreview": "Chiudi anteprima", "files": "File", "folders": "Cartelle", @@ -81,23 +82,24 @@ "hu": "Magyar", "ar": "العربية", "de": "Deutsch", + "el": "Ελληνικά", "en": "English", "es": "Español", "fr": "Français", - "is": "", + "is": "Icelandic", "it": "Italiano", "ja": "日本語", "ko": "한국어", - "nlBE": "", + "nlBE": "Dutch (Belgium)", "pl": "Polski", "pt": "Português", "ptBR": "Português (Brasil)", - "ro": "", + "ro": "Romanian", "ru": "Русский", "sk": "Slovenčina", - "svSE": "", - "tr" : "Türkçe", - "ua": "Українська", + "svSE": "Swedish (Sweden)", + "tr": "Türkçe", + "uk": "Українська", "zhCN": "中文 (简体)", "zhTW": "中文 (繁體)" }, diff --git a/frontend/src/i18n/ja.json b/frontend/src/i18n/ja.json index 911c09b4..d69e9334 100644 --- a/frontend/src/i18n/ja.json +++ b/frontend/src/i18n/ja.json @@ -1,6 +1,7 @@ { "buttons": { "cancel": "キャンセル", + "clear": "クリアー", "close": "閉じる", "copy": "コピー", "copyFile": "ファイルのコピー", @@ -109,7 +110,7 @@ "sk": "Slovenčina", "svSE": "Swedish (Sweden)", "tr": "Türkçe", - "ua": "Українська", + "uk": "Українська", "zhCN": "中文 (简体)", "zhTW": "中文 (繁體)" }, diff --git a/frontend/src/i18n/ko.json b/frontend/src/i18n/ko.json index 64a6eab9..4924d8ca 100644 --- a/frontend/src/i18n/ko.json +++ b/frontend/src/i18n/ko.json @@ -1,6 +1,7 @@ { "buttons": { "cancel": "취소", + "clear": "지우기", "close": "닫기", "copy": "복사", "copyFile": "파일 복사", @@ -46,7 +47,6 @@ }, "files": { "body": "본문", - "clear": "지우기", "closePreview": "미리보기 닫기", "files": "파일", "folders": "폴더", @@ -81,23 +81,24 @@ "hu": "Magyar", "ar": "العربية", "de": "Deutsch", + "el": "Ελληνικά", "en": "English", "es": "Español", "fr": "Français", - "is": "", + "is": "Icelandic", "it": "Italiano", "ja": "日本語", "ko": "한국어", - "nlBE": "", + "nlBE": "Dutch (Belgium)", "pl": "Polski", "pt": "Português", "ptBR": "Português (Brasil)", - "ro": "", + "ro": "Romanian", "ru": "Русский", "sk": "Slovenčina", - "svSE": "", - "tr" : "Türkçe", - "ua": "Українська", + "svSE": "Swedish (Sweden)", + "tr": "Türkçe", + "uk": "Українська", "zhCN": "中文 (简体)", "zhTW": "中文 (繁體)" }, diff --git a/frontend/src/i18n/nl-be.json b/frontend/src/i18n/nl-be.json index dec8d302..9147acac 100644 --- a/frontend/src/i18n/nl-be.json +++ b/frontend/src/i18n/nl-be.json @@ -1,6 +1,7 @@ { "buttons": { "cancel": "Annuleren", + "clear": "Wissen", "close": "Sluiten", "copy": "Kopiëren", "copyFile": "Bestand kopiëren", @@ -46,7 +47,6 @@ }, "files": { "body": "Body", - "clear": "Wissen", "closePreview": "Voorvertoon sluiten", "files": "Bestanden", "folders": "Mappen", @@ -79,27 +79,28 @@ "languages": { "he": "עברית", "hu": "Magyar", - "ar": "Arabisch", - "de": "Duits", - "en": "Engels", - "es": "Spaans", - "fr": "Frans", - "is": "", - "it": "Italiaans", - "ja": "Japans", - "ko": "Koreaans", - "nlBE": "", - "pl": "Pools", - "pt": "Portugees", - "ptBR": "Portugees (Brazilië)", - "ro": "", - "ru": "Russisch", + "ar": "العربية", + "de": "Deutsch", + "el": "Ελληνικά", + "en": "English", + "es": "Español", + "fr": "Français", + "is": "Icelandic", + "it": "Italiano", + "ja": "日本語", + "ko": "한국어", + "nlBE": "Dutch (Belgium)", + "pl": "Polski", + "pt": "Português", + "ptBR": "Português (Brasil)", + "ro": "Romanian", + "ru": "Русский", "sk": "Slovenčina", - "svSE": "", - "tr" : "Türkçe", - "ua": "Українська", - "zhCN": "Chinees (vereenvoudigd)", - "zhTW": "Chinees (traditioneel)" + "svSE": "Swedish (Sweden)", + "tr": "Türkçe", + "uk": "Українська", + "zhCN": "中文 (简体)", + "zhTW": "中文 (繁體)" }, "login": { "createAnAccount": "Account aanmaken", diff --git a/frontend/src/i18n/pl.json b/frontend/src/i18n/pl.json index a66facb2..8f7eb72d 100644 --- a/frontend/src/i18n/pl.json +++ b/frontend/src/i18n/pl.json @@ -1,6 +1,7 @@ { "buttons": { "cancel": "Anuluj", + "clear": "Wyczyść", "close": "Zamknij", "copy": "Kopiuj", "copyFile": "Kopiuj plik", @@ -46,7 +47,6 @@ }, "files": { "body": "Body", - "clear": "Wyczyść", "closePreview": "Zamknij poprzednie", "files": "Pliki", "folders": "Foldery", @@ -81,23 +81,24 @@ "hu": "Magyar", "ar": "العربية", "de": "Deutsch", + "el": "Ελληνικά", "en": "English", "es": "Español", "fr": "Français", - "is": "Íslenska", + "is": "Icelandic", "it": "Italiano", "ja": "日本語", "ko": "한국어", - "nlBE": "Nederlands (België)", + "nlBE": "Dutch (Belgium)", "pl": "Polski", "pt": "Português", "ptBR": "Português (Brasil)", - "ro": "Română", + "ro": "Romanian", "ru": "Русский", "sk": "Slovenčina", - "svSE": "Svenska (Sverige)", - "tr" : "Türkçe", - "ua": "Українська", + "svSE": "Swedish (Sweden)", + "tr": "Türkçe", + "uk": "Українська", "zhCN": "中文 (简体)", "zhTW": "中文 (繁體)" }, @@ -147,7 +148,6 @@ "size": "Rozmiar", "upload": "Prześlij", "uploadMessage": "Proszę wybrać metodę przesyłania" - }, "search": { "images": "Zdjęcia", diff --git a/frontend/src/i18n/pt-br.json b/frontend/src/i18n/pt-br.json index 51355a9c..ae9c7bdb 100644 --- a/frontend/src/i18n/pt-br.json +++ b/frontend/src/i18n/pt-br.json @@ -1,7 +1,9 @@ { "buttons": { "cancel": "Cancelar", + "clear": "Limpar", "close": "Fechar", + "continue": "Continuar", "copy": "Copiar", "copyFile": "Copiar arquivo", "copyToClipboard": "Copiar", @@ -51,7 +53,6 @@ }, "files": { "body": "Corpo", - "clear": "Limpar", "closePreview": "Fechar pré-visualização", "files": "Arquivos", "folders": "Pastas", @@ -87,23 +88,24 @@ "hu": "Magyar", "ar": "العربية", "de": "Deutsch", + "el": "Ελληνικά", "en": "English", "es": "Español", "fr": "Français", - "is": "", + "is": "Icelandic", "it": "Italiano", "ja": "日本語", "ko": "한국어", - "nlBE": "", + "nlBE": "Dutch (Belgium)", "pl": "Polski", "pt": "Português", "ptBR": "Português (Brasil)", - "ro": "", + "ro": "Romanian", "ru": "Русский", "sk": "Slovenčina", - "svSE": "", - "tr" : "Türkçe", - "ua": "Українська", + "svSE": "Swedish (Sweden)", + "tr": "Türkçe", + "uk": "Українська", "zhCN": "中文 (简体)", "zhTW": "中文 (繁體)" }, diff --git a/frontend/src/i18n/pt.json b/frontend/src/i18n/pt.json index 93ac94f6..7b7d14e4 100644 --- a/frontend/src/i18n/pt.json +++ b/frontend/src/i18n/pt.json @@ -1,7 +1,9 @@ { "buttons": { "cancel": "Cancelar", + "clear": "Limpar", "close": "Fechar", + "continue": "Continuar", "copy": "Copiar", "copyFile": "Copiar ficheiro", "copyToClipboard": "Copiar", @@ -46,7 +48,6 @@ }, "files": { "body": "Corpo", - "clear": "Limpar", "closePreview": "Fechar pré-visualização", "files": "Ficheiros", "folders": "Pastas", @@ -79,27 +80,28 @@ "languages": { "he": "עברית", "hu": "Magyar", - "ar": "Árabe", - "de": "Alemão", - "en": "Inglês", - "es": "Espanhol", - "fr": "Francês", - "is": "", + "ar": "العربية", + "de": "Deutsch", + "el": "Ελληνικά", + "en": "English", + "es": "Español", + "fr": "Français", + "is": "Icelandic", "it": "Italiano", - "ja": "Japonês", - "ko": "Coreano", - "nlBE": "", - "pl": "Polaco", + "ja": "日本語", + "ko": "한국어", + "nlBE": "Dutch (Belgium)", + "pl": "Polski", "pt": "Português", "ptBR": "Português (Brasil)", - "ro": "", - "ru": "Russo", + "ro": "Romanian", + "ru": "Русский", "sk": "Slovenčina", - "svSE": "", - "tr" : "Türkçe", - "ua": "Українська", - "zhCN": "Chinês simplificado", - "zhTW": "Chinês tradicional" + "svSE": "Swedish (Sweden)", + "tr": "Türkçe", + "uk": "Українська", + "zhCN": "中文 (简体)", + "zhTW": "中文 (繁體)" }, "login": { "createAnAccount": "Criar uma conta", diff --git a/frontend/src/i18n/ro.json b/frontend/src/i18n/ro.json index f2168a46..f580eec2 100644 --- a/frontend/src/i18n/ro.json +++ b/frontend/src/i18n/ro.json @@ -1,6 +1,7 @@ { "buttons": { "cancel": "Anulează", + "clear": "Curăță", "close": "Închide", "copy": "Copiază", "copyFile": "Copiază fișier", @@ -46,7 +47,6 @@ }, "files": { "body": "Corp", - "clear": "Curăță", "closePreview": "Închide previzualizarea", "files": "Fișiere", "folders": "Directoare", @@ -81,23 +81,24 @@ "hu": "Magyar", "ar": "العربية", "de": "Deutsch", + "el": "Ελληνικά", "en": "English", "es": "Español", "fr": "Français", - "is": "", + "is": "Icelandic", "it": "Italiano", "ja": "日本語", "ko": "한국어", - "nlBE": "", + "nlBE": "Dutch (Belgium)", "pl": "Polski", "pt": "Português", "ptBR": "Português (Brasil)", - "ro": "", + "ro": "Romanian", "ru": "Русский", "sk": "Slovenčina", - "svSE": "", - "tr" : "Türkçe", - "ua": "Українська", + "svSE": "Swedish (Sweden)", + "tr": "Türkçe", + "uk": "Українська", "zhCN": "中文 (简体)", "zhTW": "中文 (繁體)" }, diff --git a/frontend/src/i18n/ru.json b/frontend/src/i18n/ru.json index 5cf40b93..35c06a39 100644 --- a/frontend/src/i18n/ru.json +++ b/frontend/src/i18n/ru.json @@ -1,6 +1,7 @@ { "buttons": { "cancel": "Отмена", + "clear": "Очистить", "close": "Закрыть", "copy": "Копировать", "copyFile": "Скопировать файл", @@ -51,7 +52,6 @@ }, "files": { "body": "Тело", - "clear": "Очистить", "closePreview": "Закрыть", "files": "Файлы", "folders": "Папки", @@ -87,6 +87,7 @@ "hu": "Magyar", "ar": "العربية", "de": "Deutsch", + "el": "Ελληνικά", "en": "English", "es": "Español", "fr": "Français", @@ -102,8 +103,8 @@ "ru": "Русский", "sk": "Slovenčina", "svSE": "Swedish (Sweden)", - "tr" : "Türkçe", - "ua": "Українська", + "tr": "Türkçe", + "uk": "Українська", "zhCN": "中文 (简体)", "zhTW": "中文 (繁體)" }, diff --git a/frontend/src/i18n/sk.json b/frontend/src/i18n/sk.json index 414a8b4d..8243b40c 100644 --- a/frontend/src/i18n/sk.json +++ b/frontend/src/i18n/sk.json @@ -1,6 +1,7 @@ { "buttons": { "cancel": "Zrušiť", + "clear": "Zrušiť výber", "close": "Zavrieť", "copy": "Kopírovať", "copyFile": "Kopírovať súbor", @@ -51,7 +52,6 @@ }, "files": { "body": "Telo", - "clear": "Zrušiť výber", "closePreview": "Zavrieť náhľad", "files": "Súbory", "folders": "Priečinky", @@ -87,6 +87,7 @@ "hu": "Magyar", "ar": "العربية", "de": "Deutsch", + "el": "Ελληνικά", "en": "English", "es": "Español", "fr": "Français", @@ -102,8 +103,8 @@ "ru": "Русский", "sk": "Slovenčina", "svSE": "Swedish (Sweden)", - "tr" : "Türkçe", - "ua": "Українська", + "tr": "Türkçe", + "uk": "Українська", "zhCN": "中文 (简体)", "zhTW": "中文 (繁體)" }, diff --git a/frontend/src/i18n/sv-se.json b/frontend/src/i18n/sv-se.json index df0537ec..4a7bd5fc 100644 --- a/frontend/src/i18n/sv-se.json +++ b/frontend/src/i18n/sv-se.json @@ -1,6 +1,7 @@ { "buttons": { "cancel": "Avbryt", + "clear": "Rensa", "close": "Stäng", "copy": "Kopiera", "copyFile": "Kopiera fil", @@ -46,7 +47,6 @@ }, "files": { "body": "Huvud", - "clear": "Rensa", "closePreview": "Stäng förhands granskningen", "files": "Filer", "folders": "Mappar", @@ -81,23 +81,24 @@ "hu": "Magyar", "ar": "العربية", "de": "Deutsch", + "el": "Ελληνικά", "en": "English", "es": "Español", "fr": "Français", - "is": "", + "is": "Icelandic", "it": "Italiano", "ja": "日本語", "ko": "한국어", - "nlBE": "", + "nlBE": "Dutch (Belgium)", "pl": "Polski", "pt": "Português", "ptBR": "Português (Brasil)", - "ro": "", + "ro": "Romanian", "ru": "Русский", "sk": "Slovenčina", - "svSE": "", - "tr" : "Türkçe", - "ua": "Українська", + "svSE": "Swedish (Sweden)", + "tr": "Türkçe", + "uk": "Українська", "zhCN": "中文 (简体)", "zhTW": "中文 (繁體)" }, diff --git a/frontend/src/i18n/tr.json b/frontend/src/i18n/tr.json index 77ebb3f6..b8cd6446 100644 --- a/frontend/src/i18n/tr.json +++ b/frontend/src/i18n/tr.json @@ -1,6 +1,7 @@ { "buttons": { "cancel": "Vazgeç", + "clear": "Temizle", "close": "Kapat", "copy": "Kopyala", "copyFile": "Dosyayı kopyala", @@ -49,7 +50,6 @@ }, "files": { "body": "Sayfa", - "clear": "Temizle", "closePreview": "Önizlemeyi kapat", "files": "Dosyalar", "folders": "Klasörler", @@ -85,6 +85,7 @@ "hu": "Magyar", "ar": "العربية", "de": "Deutsch", + "el": "Ελληνικά", "en": "English", "es": "Español", "fr": "Français", @@ -100,8 +101,8 @@ "ru": "Русский", "sk": "Slovenčina", "svSE": "Swedish (Sweden)", - "tr" : "Türkçe", - "ua": "Українська", + "tr": "Türkçe", + "uk": "Українська", "zhCN": "中文 (简体)", "zhTW": "中文 (繁體)" }, diff --git a/frontend/src/i18n/ua.json b/frontend/src/i18n/ua.json deleted file mode 100644 index cfc42ca2..00000000 --- a/frontend/src/i18n/ua.json +++ /dev/null @@ -1,270 +0,0 @@ -{ - "buttons": { - "cancel": "Відмінити", - "close": "Закрити", - "copy": "Копіювати", - "copyFile": "Копіювати файл", - "copyToClipboard": "Копіювати в буфер обміну", - "create": "Створити", - "delete": "Видалити", - "download": "Завантажити", - "file": "Файл", - "folder": "Папка", - "hideDotfiles": "Приховати точкові файли", - "info": "Інфо", - "more": "Більше", - "move": "Перемістити", - "moveFile": "Перемістити файл", - "new": "Новий", - "next": "Далі", - "ok": "ОК", - "permalink": "Отримати постійне посилання", - "previous": "Назад", - "publish": "Опублікувати", - "rename": "Перейменувати", - "replace": "Замінити", - "reportIssue": "Повідомити про помилку", - "save": "Зберегти", - "schedule": "Планування", - "search": "Пошук", - "select": "Вибрати", - "selectMultiple": "Мультивибір", - "share": "Поділитися", - "shell": "Командний рядок", - "submit": "Відправити", - "switchView": "Вид", - "toggleSidebar": "Бічна панель", - "update": "Оновити", - "upload": "Завантажити", - "openFile": "Відкрити файл" - }, - "download": { - "downloadFile": "Завантажити файл", - "downloadFolder": "Завантажити папку", - "downloadSelected": "Завантажити вибране" - }, - "errors": { - "forbidden": "У вас немає прав доступу до цього.", - "internal": "Щось пішло не так.", - "notFound": "Неправильне посилання.", - "connection": "Немає підключення до сервера." - }, - "files": { - "body": "Тіло", - "clear": "Очистити", - "closePreview": "Закрити", - "files": "Файли", - "folders": "Папки", - "home": "Домівка", - "lastModified": "Останній раз змінено", - "loading": "Завантаження...", - "lonely": "Тут пусто...", - "metadata": "Метадані", - "multipleSelectionEnabled": "Мультивибір включений", - "name": "Ім'я", - "size": "Розмір", - "sortByLastModified": "Сортувати за останнім зміненням", - "sortByName": "Сортувати за іменем", - "sortBySize": "Сортувати за розміром", - "noPreview": "Попередній перегляд для цього файлу недоступний." - }, - "help": { - "click": "вибрати файл чи каталог", - "ctrl": { - "click": "вибрати кілька файлів чи каталогів", - "f": "відкрити пошук", - "s": "скачати файл або поточний каталог" - }, - "del": "видалити вибрані елементи", - "doubleClick": "відкрити файл чи каталог", - "esc": "очистити виділення та/або закрити вікно", - "f1": "допомога", - "f2": "перейменувати файл", - "help": "Допомога" - }, - "languages": { - "he": "עברית", - "hu": "Magyar", - "ar": "العربية", - "de": "Deutsch", - "en": "English", - "es": "Español", - "fr": "Français", - "is": "Icelandic", - "it": "Italiano", - "ja": "日本語", - "ko": "한국어", - "nlBE": "Dutch (Belgium)", - "pl": "Polski", - "pt": "Português", - "ptBR": "Português (Brasil)", - "ro": "Romanian", - "ru": "Русский", - "sk": "Slovenčina", - "svSE": "Swedish (Sweden)", - "tr": "Türkçe", - "ua": "Українська", - "zhCN": "中文 (简体)", - "zhTW": "中文 (繁體)" - }, - "login": { - "createAnAccount": "Створити обліковий запис", - "loginInstead": "Вже є обліковий запис", - "password": "Пароль", - "passwordConfirm": "Підтвердження паролю", - "passwordsDontMatch": "Паролі не співпадають", - "signup": "Зареєструватися", - "submit": "Увійти", - "username": "Ім'я користувача", - "usernameTaken": "Ім'я користувача вже використовується", - "wrongCredentials": "Невірне ім'я користувача або пароль" - }, - "permanent": "Постійний", - "prompts": { - "copy": "Копіювати", - "copyMessage": "Копіювати в:", - "currentlyNavigating": "Поточний каталог:", - "deleteMessageMultiple": "Видалити ці файли ({count})?", - "deleteMessageSingle": "Видалити цей файл/каталог?", - "deleteMessageShare": "Видалити цей спільний файл/каталог ({path})?", - "deleteTitle": "Видалити файлы", - "displayName": "Відображене ім'я:", - "download": "Завантажити файлы", - "downloadMessage": "Виберіть формат, в якому хочете завантажити.", - "error": "Помилка", - "fileInfo": "Інформація про файл", - "filesSelected": "Файлів вибрано: {count}.", - "lastModified": "Останній раз змінено", - "move": "Перемістити", - "moveMessage": "Перемістити в:", - "newArchetype": "Створіть новий запис на основі архетипу. Файл буде створено у каталозі.", - "newDir": "Новий каталог", - "newDirMessage": "Ім'я нового каталогу.", - "newFile": "Новий файл", - "newFileMessage": "Ім'я нового файлу.", - "numberDirs": "Кількість каталогів", - "numberFiles": "Кількість файлів", - "rename": "Перейменувати", - "renameMessage": "Нове ім'я", - "replace": "Замінити", - "replaceMessage": "Ім'я одного з файлів, що завантажуються, збігається з вже існуючим файлом. Ви бажаєте замінити існуючий?\n", - "schedule": "Планування", - "scheduleMessage": "Запланувати дату та час публікації.", - "show": "Показати", - "size": "Розмір", - "upload": "Завантажити", - "uploadMessage": "Виберіть варіант для завантаження.", - "optionalPassword": "Необов'язковий пароль" - }, - "search": { - "images": "Зображення", - "music": "Музика", - "pdf": "PDF", - "pressToSearch": "Натисніть ENTER для пошуку", - "search": "Пошук...", - "typeToSearch": "Введіть ім'я файлу...", - "types": "Типи", - "video": "Відео" - }, - "settings": { - "admin": "Адмін", - "administrator": "Адміністратор", - "allowCommands": "Запуск команд", - "allowEdit": "Редагування, перейменування та видалення файлів чи каталогів", - "allowNew": "Створення нових файлів або каталогів", - "allowPublish": "Публікація нових записів та сторінок", - "allowSignup": "Дозволити користувачам реєструватися", - "avoidChanges": "(залишіть поле порожнім, щоб уникнути змін)", - "branding": "Брендинг", - "brandingDirectoryPath": "Шлях до каталогу брендів", - "brandingHelp": "Ви можете налаштувати зовнішній вигляд файлового браузера, змінивши його ім'я, замінивши логотип, додавши власні стилі та навіть відключивши зовнішні посилання на GitHub.\nДодаткову інформацію про персоналізований брендинг можна знайти на сторінці {0}.", - "changePassword": "Зміна пароля", - "commandRunner": "Запуск команд", - "commandRunnerHelp": "Тут ви можете встановити команди, які будуть виконуватися у зазначених подіях. Ви повинні вказати по одній команді в кожному рядку. Змінні середовища {0} та {1} будуть доступні, будучи {0} щодо {1}. Додаткові відомості про цю функцію та доступні змінні середовища див. у {2}.", - "commandsUpdated": "Команди оновлені!", - "createUserDir": "Автоматичне створення домашнього каталогу користувача при додаванні нового користувача", - "customStylesheet": "Свій стиль", - "defaultUserDescription": "Це налаштування за замовчуванням для нових користувачів.", - "disableExternalLinks": "Вимкнути зовнішні посилання (крім документації)", - "disableUsedDiskPercentage": "Disable used disk percentage graph", - "documentation": "документація", - "examples": "Приклади", - "executeOnShell": "Виконати в командному рядку", - "executeOnShellDescription": "За замовчуванням File Browser виконує команди, безпосередньо викликаючи їх бінарні файли. Якщо ви хочете замість цього запускати їх в оболонці (наприклад, Bash або PowerShell), ви можете визначити їх тут з необхідними аргументами та прапорами. Якщо встановлено, виконуєма вами команда буде додана як аргумент. Це стосується як користувацьких команд, так і обробників подій.", - "globalRules": "Це глобальний набір дозволяючих та забороняючих правил. Вони застосовні до кожного користувача. Ви можете визначити певні правила для налаштувань кожного користувача, щоб перевизначити їх.", - "globalSettings": "Глобальні налаштування", - "hideDotfiles": "Приховати точкові файли", - "insertPath": "Вставте шлях", - "insertRegex": "Вставити регулярний вираз", - "instanceName": "Поточна назва програми", - "language": "Мова", - "lockPassword": "Заборонити користувачеві змінювати пароль", - "newPassword": "Новий пароль", - "newPasswordConfirm": "Підтвердження нового пароля", - "newUser": "Новий користувач", - "password": "Пароль", - "passwordUpdated": "Пароль оновлено!", - "path": "Шлях", - "perm": { - "create": "Створювати файли та каталоги", - "delete": "Видаляти файли та каталоги", - "download": "Завантажувати", - "execute": "Виконувати команди", - "modify": "Редагувати файли", - "rename": "Перейменовувати або переміщувати файли та каталоги", - "share": "Ділітися файлами" - }, - "permissions": "Дозволи", - "permissionsHelp": "Можна настроїти користувача як адміністратора або вибрати індивідуальні дозволи. При виборі \"Адміністратор\" всі інші параметри будуть автоматично вибрані. Керування користувачами - привілей адміністратора.\n", - "profileSettings": "Налаштування профілю", - "ruleExample1": "запобігти доступу до будь-якого прихованого файлу (наприклад: .git, .gitignore) у кожній папці.\n", - "ruleExample2": "блокує доступ до файлу з ім'ям Caddyfile у кореневій області.", - "rules": "Права", - "rulesHelp": "Тут ви можете визначити набір дозволяючих та забороняючих правил для цього конкретного користувача. Блоковані файли не відображатимуться у списках, і не будуть доступні для користувача. Є підтримка регулярних виразів та відносних шляхів.\n", - "scope": "Корінь", - "setDateFormat": "Встановити точний формат дати", - "settingsUpdated": "Налаштування застосовані!", - "shareDuration": "Тривалість спільного посилання", - "shareManagement": "Управління спільними посиланнями", - "shareDeleted": "Спільне посилання видалено!", - "singleClick": "Відкриття файлів та каталогів одним кліком", - "themes": { - "dark": "Темна", - "light": "Світла", - "title": "Тема" - }, - "user": "Користувач", - "userCommands": "Команди", - "userCommandsHelp": "Список команд, доступних користувачу, розділений пробілами. Приклад:\n", - "userCreated": "Користувач створений!", - "userDefaults": "Налаштування користувача за замовчуванням", - "userDeleted": "Користувач видалений!", - "userManagement": "Керування користувачами", - "userUpdated": "Користувач змінений!", - "username": "Ім'я користувача", - "users": "Користувачі" - }, - "sidebar": { - "help": "Допомога", - "hugoNew": "Hugo New", - "login": "Увійти", - "logout": "Вийти", - "myFiles": "Файли", - "newFile": "Новий файл", - "newFolder": "Новий каталог", - "preview": "Перегляд", - "settings": "Налаштування", - "signup": "Зареєструватися", - "siteSettings": "Налаштування сайту" - }, - "success": { - "linkCopied": "Посилання скопійоване!" - }, - "time": { - "days": "Дні", - "hours": "Години", - "minutes": "Хвилини", - "seconds": "Секунди", - "unit": "Одиниця часу" - } -} diff --git a/frontend/src/i18n/uk.json b/frontend/src/i18n/uk.json new file mode 100644 index 00000000..dceac2a2 --- /dev/null +++ b/frontend/src/i18n/uk.json @@ -0,0 +1,271 @@ +{ + "buttons": { + "cancel": "Відмінити", + "clear": "Очистити", + "close": "Закрити", + "copy": "Копіювати", + "copyFile": "Копіювати файл", + "copyToClipboard": "Копіювати в буфер обміну", + "create": "Створити", + "delete": "Видалити", + "download": "Завантажити", + "file": "Файл", + "folder": "Папка", + "hideDotfiles": "Приховати точкові файли", + "info": "Інфо", + "more": "Більше", + "move": "Перемістити", + "moveFile": "Перемістити файл", + "new": "Новий", + "next": "Далі", + "ok": "ОК", + "permalink": "Отримати постійне посилання", + "previous": "Назад", + "publish": "Опублікувати", + "rename": "Перейменувати", + "replace": "Замінити", + "reportIssue": "Повідомити про помилку", + "save": "Зберегти", + "schedule": "Планування", + "search": "Пошук", + "select": "Вибрати", + "selectMultiple": "Мультивибір", + "share": "Поділитися", + "shell": "Командний рядок", + "submit": "Відправити", + "switchView": "Вид", + "toggleSidebar": "Бічна панель", + "update": "Оновити", + "upload": "Завантажити", + "openFile": "Відкрити файл" + }, + "download": { + "downloadFile": "Завантажити файл", + "downloadFolder": "Завантажити папку", + "downloadSelected": "Завантажити вибране" + }, + "errors": { + "forbidden": "У вас немає прав доступу до цього.", + "internal": "Щось пішло не так.", + "notFound": "Неправильне посилання.", + "connection": "Немає підключення до сервера." + }, + "files": { + "body": "Тіло", + "closePreview": "Закрити", + "files": "Файли", + "folders": "Папки", + "home": "Домівка", + "lastModified": "Останній раз змінено", + "loading": "Завантаження...", + "lonely": "Тут пусто...", + "metadata": "Метадані", + "multipleSelectionEnabled": "Мультивибір включений", + "name": "Ім'я", + "size": "Розмір", + "sortByLastModified": "Сортувати за останнім зміненням", + "sortByName": "Сортувати за іменем", + "sortBySize": "Сортувати за розміром", + "noPreview": "Попередній перегляд для цього файлу недоступний." + }, + "help": { + "click": "вибрати файл чи каталог", + "ctrl": { + "click": "вибрати кілька файлів чи каталогів", + "f": "відкрити пошук", + "s": "скачати файл або поточний каталог" + }, + "del": "видалити вибрані елементи", + "doubleClick": "відкрити файл чи каталог", + "esc": "очистити виділення та/або закрити вікно", + "f1": "допомога", + "f2": "перейменувати файл", + "help": "Допомога" + }, + "languages": { + "he": "עברית", + "hu": "Magyar", + "ar": "العربية", + "de": "Deutsch", + "el": "Ελληνικά", + "en": "English", + "es": "Español", + "fr": "Français", + "is": "Icelandic", + "it": "Italiano", + "ja": "日本語", + "ko": "한국어", + "nlBE": "Dutch (Belgium)", + "pl": "Polski", + "pt": "Português", + "ptBR": "Português (Brasil)", + "ro": "Romanian", + "ru": "Русский", + "sk": "Slovenčina", + "svSE": "Swedish (Sweden)", + "tr": "Türkçe", + "uk": "Українська", + "zhCN": "中文 (简体)", + "zhTW": "中文 (繁體)" + }, + "login": { + "createAnAccount": "Створити обліковий запис", + "loginInstead": "Вже є обліковий запис", + "password": "Пароль", + "passwordConfirm": "Підтвердження паролю", + "passwordsDontMatch": "Паролі не співпадають", + "signup": "Зареєструватися", + "submit": "Увійти", + "username": "Ім'я користувача", + "usernameTaken": "Ім'я користувача вже використовується", + "wrongCredentials": "Невірне ім'я користувача або пароль" + }, + "permanent": "Постійний", + "prompts": { + "copy": "Копіювати", + "copyMessage": "Копіювати в:", + "currentlyNavigating": "Поточний каталог:", + "deleteMessageMultiple": "Видалити ці файли ({count})?", + "deleteMessageSingle": "Видалити цей файл/каталог?", + "deleteMessageShare": "Видалити цей спільний файл/каталог ({path})?", + "deleteTitle": "Видалити файлы", + "displayName": "Відображене ім'я:", + "download": "Завантажити файлы", + "downloadMessage": "Виберіть формат, в якому хочете завантажити.", + "error": "Помилка", + "fileInfo": "Інформація про файл", + "filesSelected": "Файлів вибрано: {count}.", + "lastModified": "Останній раз змінено", + "move": "Перемістити", + "moveMessage": "Перемістити в:", + "newArchetype": "Створіть новий запис на основі архетипу. Файл буде створено у каталозі.", + "newDir": "Новий каталог", + "newDirMessage": "Ім'я нового каталогу.", + "newFile": "Новий файл", + "newFileMessage": "Ім'я нового файлу.", + "numberDirs": "Кількість каталогів", + "numberFiles": "Кількість файлів", + "rename": "Перейменувати", + "renameMessage": "Нове ім'я", + "replace": "Замінити", + "replaceMessage": "Ім'я одного з файлів, що завантажуються, збігається з вже існуючим файлом. Ви бажаєте замінити існуючий?\n", + "schedule": "Планування", + "scheduleMessage": "Запланувати дату та час публікації.", + "show": "Показати", + "size": "Розмір", + "upload": "Завантажити", + "uploadMessage": "Виберіть варіант для завантаження.", + "optionalPassword": "Необов'язковий пароль" + }, + "search": { + "images": "Зображення", + "music": "Музика", + "pdf": "PDF", + "pressToSearch": "Натисніть ENTER для пошуку", + "search": "Пошук...", + "typeToSearch": "Введіть ім'я файлу...", + "types": "Типи", + "video": "Відео" + }, + "settings": { + "admin": "Адмін", + "administrator": "Адміністратор", + "allowCommands": "Запуск команд", + "allowEdit": "Редагування, перейменування та видалення файлів чи каталогів", + "allowNew": "Створення нових файлів або каталогів", + "allowPublish": "Публікація нових записів та сторінок", + "allowSignup": "Дозволити користувачам реєструватися", + "avoidChanges": "(залишіть поле порожнім, щоб уникнути змін)", + "branding": "Брендинг", + "brandingDirectoryPath": "Шлях до каталогу брендів", + "brandingHelp": "Ви можете налаштувати зовнішній вигляд файлового браузера, змінивши його ім'я, замінивши логотип, додавши власні стилі та навіть відключивши зовнішні посилання на GitHub.\nДодаткову інформацію про персоналізований брендинг можна знайти на сторінці {0}.", + "changePassword": "Зміна пароля", + "commandRunner": "Запуск команд", + "commandRunnerHelp": "Тут ви можете встановити команди, які будуть виконуватися у зазначених подіях. Ви повинні вказати по одній команді в кожному рядку. Змінні середовища {0} та {1} будуть доступні, будучи {0} щодо {1}. Додаткові відомості про цю функцію та доступні змінні середовища див. у {2}.", + "commandsUpdated": "Команди оновлені!", + "createUserDir": "Автоматичне створення домашнього каталогу користувача при додаванні нового користувача", + "customStylesheet": "Свій стиль", + "defaultUserDescription": "Це налаштування за замовчуванням для нових користувачів.", + "disableExternalLinks": "Вимкнути зовнішні посилання (крім документації)", + "disableUsedDiskPercentage": "Disable used disk percentage graph", + "documentation": "документація", + "examples": "Приклади", + "executeOnShell": "Виконати в командному рядку", + "executeOnShellDescription": "За замовчуванням File Browser виконує команди, безпосередньо викликаючи їх бінарні файли. Якщо ви хочете замість цього запускати їх в оболонці (наприклад, Bash або PowerShell), ви можете визначити їх тут з необхідними аргументами та прапорами. Якщо встановлено, виконуєма вами команда буде додана як аргумент. Це стосується як користувацьких команд, так і обробників подій.", + "globalRules": "Це глобальний набір дозволяючих та забороняючих правил. Вони застосовні до кожного користувача. Ви можете визначити певні правила для налаштувань кожного користувача, щоб перевизначити їх.", + "globalSettings": "Глобальні налаштування", + "hideDotfiles": "Приховати точкові файли", + "insertPath": "Вставте шлях", + "insertRegex": "Вставити регулярний вираз", + "instanceName": "Поточна назва програми", + "language": "Мова", + "lockPassword": "Заборонити користувачеві змінювати пароль", + "newPassword": "Новий пароль", + "newPasswordConfirm": "Підтвердження нового пароля", + "newUser": "Новий користувач", + "password": "Пароль", + "passwordUpdated": "Пароль оновлено!", + "path": "Шлях", + "perm": { + "create": "Створювати файли та каталоги", + "delete": "Видаляти файли та каталоги", + "download": "Завантажувати", + "execute": "Виконувати команди", + "modify": "Редагувати файли", + "rename": "Перейменовувати або переміщувати файли та каталоги", + "share": "Ділітися файлами" + }, + "permissions": "Дозволи", + "permissionsHelp": "Можна настроїти користувача як адміністратора або вибрати індивідуальні дозволи. При виборі \"Адміністратор\" всі інші параметри будуть автоматично вибрані. Керування користувачами - привілей адміністратора.\n", + "profileSettings": "Налаштування профілю", + "ruleExample1": "запобігти доступу до будь-якого прихованого файлу (наприклад: .git, .gitignore) у кожній папці.\n", + "ruleExample2": "блокує доступ до файлу з ім'ям Caddyfile у кореневій області.", + "rules": "Права", + "rulesHelp": "Тут ви можете визначити набір дозволяючих та забороняючих правил для цього конкретного користувача. Блоковані файли не відображатимуться у списках, і не будуть доступні для користувача. Є підтримка регулярних виразів та відносних шляхів.\n", + "scope": "Корінь", + "setDateFormat": "Встановити точний формат дати", + "settingsUpdated": "Налаштування застосовані!", + "shareDuration": "Тривалість спільного посилання", + "shareManagement": "Управління спільними посиланнями", + "shareDeleted": "Спільне посилання видалено!", + "singleClick": "Відкриття файлів та каталогів одним кліком", + "themes": { + "dark": "Темна", + "light": "Світла", + "title": "Тема" + }, + "user": "Користувач", + "userCommands": "Команди", + "userCommandsHelp": "Список команд, доступних користувачу, розділений пробілами. Приклад:\n", + "userCreated": "Користувач створений!", + "userDefaults": "Налаштування користувача за замовчуванням", + "userDeleted": "Користувач видалений!", + "userManagement": "Керування користувачами", + "userUpdated": "Користувач змінений!", + "username": "Ім'я користувача", + "users": "Користувачі" + }, + "sidebar": { + "help": "Допомога", + "hugoNew": "Hugo New", + "login": "Увійти", + "logout": "Вийти", + "myFiles": "Файли", + "newFile": "Новий файл", + "newFolder": "Новий каталог", + "preview": "Перегляд", + "settings": "Налаштування", + "signup": "Зареєструватися", + "siteSettings": "Налаштування сайту" + }, + "success": { + "linkCopied": "Посилання скопійоване!" + }, + "time": { + "days": "Дні", + "hours": "Години", + "minutes": "Хвилини", + "seconds": "Секунди", + "unit": "Одиниця часу" + } +} diff --git a/frontend/src/i18n/zh-cn.json b/frontend/src/i18n/zh-cn.json index 7e197202..c0397b0f 100644 --- a/frontend/src/i18n/zh-cn.json +++ b/frontend/src/i18n/zh-cn.json @@ -1,6 +1,7 @@ { "buttons": { "cancel": "取消", + "clear": "清空", "close": "关闭", "copy": "复制", "copyFile": "复制文件", @@ -56,7 +57,6 @@ }, "files": { "body": "内容", - "clear": "清空", "closePreview": "关闭预览", "files": "文件", "folders": "文件夹", @@ -103,15 +103,15 @@ "nlBE": "Dutch (Belgium)", "pl": "Polski", "pt": "Português", - "ptBR": "Português(Brasil)", + "ptBR": "Português (Brasil)", "ro": "Romanian", "ru": "Русский", "sk": "Slovenčina", - "svSE": "Swedish(Sweden)", - "tr" : "Türkçe", - "ua": "Українська", - "zhCN": "中文(简体)", - "zhTW": "中文(繁體)" + "svSE": "Swedish (Sweden)", + "tr": "Türkçe", + "uk": "Українська", + "zhCN": "中文 (简体)", + "zhTW": "中文 (繁體)" }, "login": { "createAnAccount": "创建用户", diff --git a/frontend/src/i18n/zh-tw.json b/frontend/src/i18n/zh-tw.json index 096a9fbc..43ad20ee 100644 --- a/frontend/src/i18n/zh-tw.json +++ b/frontend/src/i18n/zh-tw.json @@ -1,6 +1,7 @@ { "buttons": { "cancel": "取消", + "clear": "清空", "close": "關閉", "copy": "複製", "copyFile": "複製檔案", @@ -46,7 +47,6 @@ }, "files": { "body": "内容", - "clear": "清空", "closePreview": "關閉預覽", "files": "檔案", "folders": "資料夾", @@ -81,6 +81,7 @@ "hu": "Magyar", "ar": "العربية", "de": "Deutsch", + "el": "Ελληνικά", "en": "English", "es": "Español", "fr": "Français", @@ -88,16 +89,16 @@ "it": "Italiano", "ja": "日本語", "ko": "한국어", - "nlBE": "Dutch(Belgium)", + "nlBE": "Dutch (Belgium)", "pl": "Polski", "pt": "Português", "ptBR": "Português (Brasil)", "ro": "Romanian", "ru": "Русский", "sk": "Slovenčina", - "svSE": "Swedish(Sweden)", - "tr" : "Türkçe", - "ua": "Українська", + "svSE": "Swedish (Sweden)", + "tr": "Türkçe", + "uk": "Українська", "zhCN": "中文 (简体)", "zhTW": "中文 (繁體)" }, diff --git a/frontend/src/index.d.ts b/frontend/src/index.d.ts new file mode 100644 index 00000000..11a8c6e2 --- /dev/null +++ b/frontend/src/index.d.ts @@ -0,0 +1 @@ +declare module "*.vue"; diff --git a/frontend/src/main.js b/frontend/src/main.js deleted file mode 100644 index f9291588..00000000 --- a/frontend/src/main.js +++ /dev/null @@ -1,51 +0,0 @@ -import "whatwg-fetch"; -import cssVars from "css-vars-ponyfill"; -import { sync } from "vuex-router-sync"; -import store from "@/store"; -import router from "@/router"; -import i18n from "@/i18n"; -import Vue from "@/utils/vue"; -import { recaptcha, loginPage } from "@/utils/constants"; -import { login, validateLogin } from "@/utils/auth"; -import App from "@/App.vue"; - -cssVars(); - -sync(store, router); - -async function start() { - try { - if (loginPage) { - await validateLogin(); - } else { - await login("", "", ""); - } - } catch (e) { - console.log(e); - } - - if (recaptcha) { - await new Promise((resolve) => { - const check = () => { - if (typeof window.grecaptcha === "undefined") { - setTimeout(check, 100); - } else { - resolve(); - } - }; - - check(); - }); - } - - new Vue({ - el: "#app", - store, - router, - i18n, - template: "", - components: { App }, - }); -} - -start(); diff --git a/frontend/src/main.ts b/frontend/src/main.ts new file mode 100644 index 00000000..303bae9c --- /dev/null +++ b/frontend/src/main.ts @@ -0,0 +1,109 @@ +import { disableExternal } from "@/utils/constants"; +import { createApp } from "vue"; +import VueNumberInput from "@chenfengyuan/vue-number-input"; +import VueLazyload from "vue-lazyload"; +import { createVfm } from "vue-final-modal"; +import Toast, { POSITION, useToast } from "vue-toastification"; +import { + ToastOptions, + PluginOptions, +} from "vue-toastification/dist/types/types"; +import createPinia from "@/stores"; +import router from "@/router"; +import i18n, { isRtl } from "@/i18n"; +import App from "@/App.vue"; +import CustomToast from "@/components/CustomToast.vue"; + +import dayjs from "dayjs"; +import localizedFormat from "dayjs/plugin/localizedFormat"; +import relativeTime from "dayjs/plugin/relativeTime"; +import duration from "dayjs/plugin/duration"; + +import "./css/styles.css"; + +// register dayjs plugins globally +dayjs.extend(localizedFormat); +dayjs.extend(relativeTime); +dayjs.extend(duration); + +const pinia = createPinia(router); +const vfm = createVfm(); + +const app = createApp(App); + +app.component(VueNumberInput.name || "vue-number-input", VueNumberInput); +app.use(VueLazyload); +app.use(Toast, { + transition: "Vue-Toastification__bounce", + maxToasts: 10, + newestOnTop: true, +} satisfies PluginOptions); + +app.use(vfm); +app.use(i18n); +app.use(pinia); +app.use(router); + +app.mixin({ + mounted() { + // expose vue instance to components + this.$el.__vue__ = this; + }, +}); + +// provide v-focus for components +app.directive("focus", { + mounted: async (el) => { + // initiate focus for the element + el.focus(); + }, +}); + +const toastConfig = { + position: POSITION.BOTTOM_CENTER, + timeout: 4000, + closeOnClick: true, + pauseOnFocusLoss: true, + pauseOnHover: true, + draggable: true, + draggablePercent: 0.6, + showCloseButtonOnHover: false, + hideProgressBar: false, + closeButton: "button", + icon: true, +} satisfies ToastOptions; + +app.provide("$showSuccess", (message: string) => { + const $toast = useToast(); + $toast.success( + { + component: CustomToast, + props: { + message: message, + }, + }, + { ...toastConfig, rtl: isRtl() } + ); +}); + +app.provide("$showError", (error: Error | string, displayReport = true) => { + const $toast = useToast(); + $toast.error( + { + component: CustomToast, + props: { + message: (error as Error).message || error, + isReport: !disableExternal && displayReport, + // TODO: could you add this to the component itself? + reportText: i18n.global.t("buttons.reportIssue"), + }, + }, + { + ...toastConfig, + timeout: 0, + rtl: isRtl(), + } + ); +}); + +router.isReady().then(() => app.mount("#app")); diff --git a/frontend/src/router/index.js b/frontend/src/router/index.js deleted file mode 100644 index be30026a..00000000 --- a/frontend/src/router/index.js +++ /dev/null @@ -1,194 +0,0 @@ -import Vue from "vue"; -import Router from "vue-router"; -import Login from "@/views/Login.vue"; -import Layout from "@/views/Layout.vue"; -import Files from "@/views/Files.vue"; -import Share from "@/views/Share.vue"; -import Users from "@/views/settings/Users.vue"; -import User from "@/views/settings/User.vue"; -import Settings from "@/views/Settings.vue"; -import GlobalSettings from "@/views/settings/Global.vue"; -import ProfileSettings from "@/views/settings/Profile.vue"; -import Shares from "@/views/settings/Shares.vue"; -import Errors from "@/views/Errors.vue"; -import store from "@/store"; -import { baseURL, name } from "@/utils/constants"; -import i18n, { rtlLanguages } from "@/i18n"; - -Vue.use(Router); - -const titles = { - Login: "sidebar.login", - Share: "buttons.share", - Files: "files.files", - Settings: "sidebar.settings", - ProfileSettings: "settings.profileSettings", - Shares: "settings.shareManagement", - GlobalSettings: "settings.globalSettings", - Users: "settings.users", - User: "settings.user", - Forbidden: "errors.forbidden", - NotFound: "errors.notFound", - InternalServerError: "errors.internal", -}; - -const router = new Router({ - base: import.meta.env.PROD ? baseURL : "", - mode: "history", - routes: [ - { - path: "/login", - name: "Login", - component: Login, - beforeEnter: (to, from, next) => { - if (store.getters.isLogged) { - return next({ path: "/files" }); - } - - next(); - }, - }, - { - path: "/*", - component: Layout, - children: [ - { - path: "/share/*", - name: "Share", - component: Share, - }, - { - path: "/files/*", - name: "Files", - component: Files, - meta: { - requiresAuth: true, - }, - }, - { - path: "/settings", - name: "Settings", - component: Settings, - redirect: { - path: "/settings/profile", - }, - meta: { - requiresAuth: true, - }, - children: [ - { - path: "/settings/profile", - name: "ProfileSettings", - component: ProfileSettings, - }, - { - path: "/settings/shares", - name: "Shares", - component: Shares, - }, - { - path: "/settings/global", - name: "GlobalSettings", - component: GlobalSettings, - meta: { - requiresAdmin: true, - }, - }, - { - path: "/settings/users", - name: "Users", - component: Users, - meta: { - requiresAdmin: true, - }, - }, - { - path: "/settings/users/*", - name: "User", - component: User, - meta: { - requiresAdmin: true, - }, - }, - ], - }, - { - path: "/403", - name: "Forbidden", - component: Errors, - props: { - errorCode: 403, - showHeader: true, - }, - }, - { - path: "/404", - name: "NotFound", - component: Errors, - props: { - errorCode: 404, - showHeader: true, - }, - }, - { - path: "/500", - name: "InternalServerError", - component: Errors, - props: { - errorCode: 500, - showHeader: true, - }, - }, - { - path: "/files", - redirect: { - path: "/files/", - }, - }, - { - path: "/*", - redirect: (to) => `/files${to.path}`, - }, - ], - }, - ], -}); - -router.beforeEach((to, from, next) => { - const title = i18n.t(titles[to.name]); - document.title = title + " - " + name; - - /*** RTL related settings per route ****/ - const rtlSet = document.querySelector("body").classList.contains("rtl"); - const shouldSetRtl = rtlLanguages.includes(i18n.locale); - switch (true) { - case shouldSetRtl && !rtlSet: - document.querySelector("body").classList.add("rtl"); - break; - case !shouldSetRtl && rtlSet: - document.querySelector("body").classList.remove("rtl"); - break; - } - - if (to.matched.some((record) => record.meta.requiresAuth)) { - if (!store.getters.isLogged) { - next({ - path: "/login", - query: { redirect: to.fullPath }, - }); - - return; - } - - if (to.matched.some((record) => record.meta.requiresAdmin)) { - if (!store.state.user.perm.admin) { - next({ path: "/403" }); - return; - } - } - } - - next(); -}); - -export default router; diff --git a/frontend/src/router/index.ts b/frontend/src/router/index.ts new file mode 100644 index 00000000..4766b1b1 --- /dev/null +++ b/frontend/src/router/index.ts @@ -0,0 +1,220 @@ +import { RouteLocation, createRouter, createWebHistory } from "vue-router"; +import Login from "@/views/Login.vue"; +import Layout from "@/views/Layout.vue"; +import Files from "@/views/Files.vue"; +import Share from "@/views/Share.vue"; +import Users from "@/views/settings/Users.vue"; +import User from "@/views/settings/User.vue"; +import Settings from "@/views/Settings.vue"; +import GlobalSettings from "@/views/settings/Global.vue"; +import ProfileSettings from "@/views/settings/Profile.vue"; +import Shares from "@/views/settings/Shares.vue"; +import Errors from "@/views/Errors.vue"; +import { useAuthStore } from "@/stores/auth"; +import { baseURL, name } from "@/utils/constants"; +import i18n from "@/i18n"; +import { recaptcha, loginPage } from "@/utils/constants"; +import { login, validateLogin } from "@/utils/auth"; + +const titles = { + Login: "sidebar.login", + Share: "buttons.share", + Files: "files.files", + Settings: "sidebar.settings", + ProfileSettings: "settings.profileSettings", + Shares: "settings.shareManagement", + GlobalSettings: "settings.globalSettings", + Users: "settings.users", + User: "settings.user", + Forbidden: "errors.forbidden", + NotFound: "errors.notFound", + InternalServerError: "errors.internal", +}; + +const routes = [ + { + path: "/login", + name: "Login", + component: Login, + }, + { + path: "/share", + component: Layout, + children: [ + { + path: ":path*", + name: "Share", + component: Share, + }, + ], + }, + { + path: "/files", + component: Layout, + meta: { + requiresAuth: true, + }, + children: [ + { + path: ":path*", + name: "Files", + component: Files, + }, + ], + }, + { + path: "/settings", + component: Layout, + meta: { + requiresAuth: true, + }, + children: [ + { + path: "", + name: "Settings", + component: Settings, + redirect: { + path: "/settings/profile", + }, + children: [ + { + path: "profile", + name: "ProfileSettings", + component: ProfileSettings, + }, + { + path: "shares", + name: "Shares", + component: Shares, + }, + { + path: "global", + name: "GlobalSettings", + component: GlobalSettings, + meta: { + requiresAdmin: true, + }, + }, + { + path: "users", + name: "Users", + component: Users, + meta: { + requiresAdmin: true, + }, + }, + { + path: "users/:id", + name: "User", + component: User, + meta: { + requiresAdmin: true, + }, + }, + ], + }, + ], + }, + { + path: "/403", + name: "Forbidden", + component: Errors, + props: { + errorCode: 403, + showHeader: true, + }, + }, + { + path: "/404", + name: "NotFound", + component: Errors, + props: { + errorCode: 404, + showHeader: true, + }, + }, + { + path: "/500", + name: "InternalServerError", + component: Errors, + props: { + errorCode: 500, + showHeader: true, + }, + }, + { + path: "/:catchAll(.*)*", + redirect: (to: RouteLocation) => + `/files/${[...to.params.catchAll].join("/")}`, + }, +]; + +async function initAuth() { + if (loginPage) { + await validateLogin(); + } else { + await login("", "", ""); + } + + if (recaptcha) { + await new Promise((resolve) => { + const check = () => { + if (typeof window.grecaptcha === "undefined") { + setTimeout(check, 100); + } else { + resolve(); + } + }; + + check(); + }); + } +} + +const router = createRouter({ + history: createWebHistory(baseURL), + routes, +}); + +router.beforeResolve(async (to, from, next) => { + const title = i18n.global.t(titles[to.name as keyof typeof titles]); + document.title = title + " - " + name; + + const authStore = useAuthStore(); + + // this will only be null on first route + if (from.name == null) { + try { + await initAuth(); + } catch (error) { + console.error(error); + } + } + + if (to.path.endsWith("/login") && authStore.isLoggedIn) { + next({ path: "/files/" }); + return; + } + + if (to.matched.some((record) => record.meta.requiresAuth)) { + if (!authStore.isLoggedIn) { + next({ + path: "/login", + query: { redirect: to.fullPath }, + }); + + return; + } + + if (to.matched.some((record) => record.meta.requiresAdmin)) { + if (authStore.user === null || !authStore.user.perm.admin) { + next({ path: "/403" }); + return; + } + } + } + + next(); +}); + +export { router, router as default }; diff --git a/frontend/src/store/getters.js b/frontend/src/store/getters.js deleted file mode 100644 index 01607c09..00000000 --- a/frontend/src/store/getters.js +++ /dev/null @@ -1,56 +0,0 @@ -const getters = { - isLogged: (state) => state.user !== null, - isFiles: (state) => !state.loading && state.route.name === "Files", - isListing: (state, getters) => getters.isFiles && state.req.isDir, - selectedCount: (state) => state.selected.length, - progress: (state) => { - if (state.upload.progress.length === 0) { - return 0; - } - - let totalSize = state.upload.sizes.reduce((a, b) => a + b, 0); - - let sum = state.upload.progress.reduce((acc, val) => acc + val); - return Math.ceil((sum / totalSize) * 100); - }, - filesInUploadCount: (state) => { - return Object.keys(state.upload.uploads).length + state.upload.queue.length; - }, - filesInUpload: (state) => { - let files = []; - - for (let index in state.upload.uploads) { - let upload = state.upload.uploads[index]; - let id = upload.id; - let type = upload.type; - let name = upload.file.name; - let size = state.upload.sizes[id]; - let isDir = upload.file.isDir; - let progress = isDir - ? 100 - : Math.ceil((state.upload.progress[id] / size) * 100); - - files.push({ - id, - name, - progress, - type, - isDir, - }); - } - - return files.sort((a, b) => a.progress - b.progress); - }, - currentPrompt: (state) => { - return state.prompts.length > 0 - ? state.prompts[state.prompts.length - 1] - : null; - }, - currentPromptName: (_, getters) => { - return getters.currentPrompt?.prompt; - }, - uploadSpeed: (state) => state.upload.speedMbyte, - eta: (state) => state.upload.eta, -}; - -export default getters; diff --git a/frontend/src/store/index.js b/frontend/src/store/index.js deleted file mode 100644 index 0a0b9713..00000000 --- a/frontend/src/store/index.js +++ /dev/null @@ -1,33 +0,0 @@ -import Vue from "vue"; -import Vuex from "vuex"; -import mutations from "./mutations"; -import getters from "./getters"; -import upload from "./modules/upload"; - -Vue.use(Vuex); - -const state = { - user: null, - req: {}, - oldReq: {}, - clipboard: { - key: "", - items: [], - }, - jwt: "", - progress: 0, - loading: false, - reload: false, - selected: [], - multiple: false, - prompts: [], - showShell: false, -}; - -export default new Vuex.Store({ - strict: true, - state, - getters, - mutations, - modules: { upload }, -}); diff --git a/frontend/src/store/modules/upload.js b/frontend/src/store/modules/upload.js deleted file mode 100644 index 836b59ab..00000000 --- a/frontend/src/store/modules/upload.js +++ /dev/null @@ -1,112 +0,0 @@ -import Vue from "vue"; -import { files as api } from "@/api"; -import throttle from "lodash.throttle"; -import buttons from "@/utils/buttons"; - -const UPLOADS_LIMIT = 5; - -const state = { - id: 0, - sizes: [], - progress: [], - queue: [], - uploads: {}, - speedMbyte: 0, - eta: 0, -}; - -const mutations = { - setProgress(state, { id, loaded }) { - Vue.set(state.progress, id, loaded); - }, - reset: (state) => { - state.id = 0; - state.sizes = []; - state.progress = []; - }, - addJob: (state, item) => { - state.queue.push(item); - state.sizes[state.id] = item.file.size; - state.id++; - }, - moveJob(state) { - const item = state.queue[0]; - state.queue.shift(); - Vue.set(state.uploads, item.id, item); - }, - removeJob(state, id) { - Vue.delete(state.uploads, id); - delete state.uploads[id]; - }, -}; - -const beforeUnload = (event) => { - event.preventDefault(); - event.returnValue = ""; -}; - -const actions = { - upload: (context, item) => { - let uploadsCount = Object.keys(context.state.uploads).length; - - let isQueueEmpty = context.state.queue.length == 0; - let isUploadsEmpty = uploadsCount == 0; - - if (isQueueEmpty && isUploadsEmpty) { - window.addEventListener("beforeunload", beforeUnload); - buttons.loading("upload"); - } - - context.commit("addJob", item); - context.dispatch("processUploads"); - }, - finishUpload: (context, item) => { - context.commit("setProgress", { id: item.id, loaded: item.file.size }); - context.commit("removeJob", item.id); - context.dispatch("processUploads"); - }, - processUploads: async (context) => { - let uploadsCount = Object.keys(context.state.uploads).length; - - let isBellowLimit = uploadsCount < UPLOADS_LIMIT; - let isQueueEmpty = context.state.queue.length == 0; - let isUploadsEmpty = uploadsCount == 0; - - let isFinished = isQueueEmpty && isUploadsEmpty; - let canProcess = isBellowLimit && !isQueueEmpty; - - if (isFinished) { - window.removeEventListener("beforeunload", beforeUnload); - buttons.success("upload"); - context.commit("reset"); - context.commit("setReload", true, { root: true }); - } - - if (canProcess) { - const item = context.state.queue[0]; - context.commit("moveJob"); - - if (item.file.isDir) { - await api.post(item.path).catch(Vue.prototype.$showError); - } else { - let onUpload = throttle( - (event) => - context.commit("setProgress", { - id: item.id, - loaded: event.loaded, - }), - 100, - { leading: true, trailing: false } - ); - - await api - .post(item.path, item.file, item.overwrite, onUpload) - .catch(Vue.prototype.$showError); - } - - context.dispatch("finishUpload", item); - } - }, -}; - -export default { state, mutations, actions, namespaced: true }; diff --git a/frontend/src/store/mutations.js b/frontend/src/store/mutations.js deleted file mode 100644 index 1f9912c5..00000000 --- a/frontend/src/store/mutations.js +++ /dev/null @@ -1,118 +0,0 @@ -import * as i18n from "@/i18n"; -import moment from "moment/min/moment-with-locales"; - -const mutations = { - closeHovers: (state) => { - state.prompts.pop(); - }, - toggleShell: (state) => { - state.show = null; - state.showShell = !state.showShell; - }, - showHover: (state, value) => { - if (typeof value !== "object") { - state.prompts.push({ - prompt: value, - confirm: null, - action: null, - props: null, - }); - return; - } - - state.prompts.push({ - prompt: value.prompt, // Should not be null - confirm: value?.confirm, - action: value?.action, - props: value?.props, - }); - }, - showError: (state) => { - state.prompts.push("error"); - }, - showSuccess: (state) => { - state.prompts.push("success"); - }, - setLoading: (state, value) => { - state.loading = value; - }, - setReload: (state, value) => { - state.reload = value; - }, - setUser: (state, value) => { - if (value === null) { - state.user = null; - return; - } - - let locale = value.locale; - - if (locale === "") { - locale = i18n.detectLocale(); - } - - moment.locale(locale); - i18n.default.locale = locale; - state.user = value; - }, - setJWT: (state, value) => (state.jwt = value), - multiple: (state, value) => (state.multiple = value), - addSelected: (state, value) => state.selected.push(value), - removeSelected: (state, value) => { - let i = state.selected.indexOf(value); - if (i === -1) return; - state.selected.splice(i, 1); - }, - resetSelected: (state) => { - state.selected = []; - }, - updateUser: (state, value) => { - if (typeof value !== "object") return; - - for (let field in value) { - if (field === "locale") { - moment.locale(value[field]); - i18n.default.locale = value[field]; - } - - state.user[field] = value[field]; - } - }, - updateRequest: (state, value) => { - const selectedItems = state.selected.map((i) => state.req.items[i]); - state.oldReq = state.req; - state.req = value; - state.selected = []; - - if (!state.req?.items) return; - state.selected = state.req.items - .filter((item) => selectedItems.some((rItem) => rItem.url === item.url)) - .map((item) => item.index); - }, - updateClipboard: (state, value) => { - state.clipboard.key = value.key; - state.clipboard.items = value.items; - state.clipboard.path = value.path; - }, - resetClipboard: (state) => { - state.clipboard.key = ""; - state.clipboard.items = []; - }, - setUploadSpeed: (state, value) => { - state.upload.speedMbyte = value; - }, - setETA(state, value) { - state.upload.eta = value; - }, - resetUpload(state) { - state.upload.uploads = {}; - state.upload.queue = []; - state.upload.progress = []; - state.upload.sizes = []; - state.upload.id = 0; - state.upload.speedMbyte = 0; - state.upload.eta = 0; - }, -}; - -export default mutations; diff --git a/frontend/src/stores/auth.ts b/frontend/src/stores/auth.ts new file mode 100644 index 00000000..459141ad --- /dev/null +++ b/frontend/src/stores/auth.ts @@ -0,0 +1,41 @@ +import { defineStore } from "pinia"; +import { detectLocale, setLocale } from "@/i18n"; +import { cloneDeep } from "lodash-es"; + +export const useAuthStore = defineStore("auth", { + // convert to a function + state: (): { + user: IUser | null; + jwt: string; + } => ({ + user: null, + jwt: "", + }), + getters: { + // user and jwt getter removed, no longer needed + isLoggedIn: (state) => state.user !== null, + }, + actions: { + // no context as first argument, use `this` instead + setUser(user: IUser) { + if (user === null) { + this.user = null; + return; + } + + setLocale(user.locale || detectLocale()); + this.user = user; + }, + updateUser(user: Partial) { + if (user.locale) { + setLocale(user.locale); + } + + this.user = { ...this.user, ...cloneDeep(user) } as IUser; + }, + // easily reset state using `$reset` + clearUser() { + this.$reset(); + }, + }, +}); diff --git a/frontend/src/stores/clipboard.ts b/frontend/src/stores/clipboard.ts new file mode 100644 index 00000000..5ad8a775 --- /dev/null +++ b/frontend/src/stores/clipboard.ts @@ -0,0 +1,24 @@ +import { defineStore } from "pinia"; + +export const useClipboardStore = defineStore("clipboard", { + // convert to a function + state: (): { + key: string; + items: ClipItem[]; + path?: string; + } => ({ + key: "", + items: [], + path: undefined, + }), + getters: { + // user and jwt getter removed, no longer needed + }, + actions: { + // no context as first argument, use `this` instead + // easily reset state using `$reset` + resetClipboard() { + this.$reset(); + }, + }, +}); diff --git a/frontend/src/stores/file.ts b/frontend/src/stores/file.ts new file mode 100644 index 00000000..425bb315 --- /dev/null +++ b/frontend/src/stores/file.ts @@ -0,0 +1,63 @@ +import { defineStore } from "pinia"; + +export const useFileStore = defineStore("file", { + // convert to a function + state: (): { + req: Resource | null; + oldReq: Resource | null; + reload: boolean; + selected: number[]; + multiple: boolean; + isFiles: boolean; + } => ({ + req: null, + oldReq: null, + reload: false, + selected: [], + multiple: false, + isFiles: false, + }), + getters: { + selectedCount: (state) => state.selected.length, + // route: () => { + // const routerStore = useRouterStore(); + // return routerStore.router.currentRoute; + // }, + // isFiles: (state) => { + // const layoutStore = useLayoutStore(); + // return !layoutStore.loading && state.route._value.name === "Files"; + // }, + isListing: (state) => { + return state.isFiles && state?.req?.isDir; + }, + }, + actions: { + // no context as first argument, use `this` instead + toggleMultiple() { + this.multiple = !this.multiple; + }, + updateRequest(value: Resource | null) { + const selectedItems = this.selected.map((i) => this.req?.items[i]); + this.oldReq = this.req; + this.req = value; + + this.selected = []; + + if (!this.req?.items) return; + this.selected = this.req.items + .filter((item) => + selectedItems.some((rItem) => rItem?.url === item.url) + ) + .map((item) => item.index); + }, + removeSelected(value: any) { + const i = this.selected.indexOf(value); + if (i === -1) return; + this.selected.splice(i, 1); + }, + // easily reset state using `$reset` + clearFile() { + this.$reset(); + }, + }, +}); diff --git a/frontend/src/stores/index.ts b/frontend/src/stores/index.ts new file mode 100644 index 00000000..7f52aa28 --- /dev/null +++ b/frontend/src/stores/index.ts @@ -0,0 +1,12 @@ +import { createPinia as _createPinia } from "pinia"; +import { markRaw } from "vue"; +import { Router } from "vue-router"; + +export default function createPinia(router: Router) { + const pinia = _createPinia(); + pinia.use(({ store }) => { + store.router = markRaw(router); + }); + + return pinia; +} diff --git a/frontend/src/stores/layout.ts b/frontend/src/stores/layout.ts new file mode 100644 index 00000000..1911643a --- /dev/null +++ b/frontend/src/stores/layout.ts @@ -0,0 +1,74 @@ +import { defineStore } from "pinia"; +// import { useAuthPreferencesStore } from "./auth-preferences"; +// import { useAuthEmailStore } from "./auth-email"; + +export const useLayoutStore = defineStore("layout", { + // convert to a function + state: (): { + loading: boolean; + prompts: PopupProps[]; + showShell: boolean | null; + } => ({ + loading: false, + prompts: [], + showShell: false, + }), + getters: { + currentPrompt(state) { + return state.prompts.length > 0 + ? state.prompts[state.prompts.length - 1] + : null; + }, + currentPromptName(): string | null | undefined { + return this.currentPrompt?.prompt; + }, + // user and jwt getter removed, no longer needed + }, + actions: { + // no context as first argument, use `this` instead + toggleShell() { + this.showShell = !this.showShell; + }, + showHover(value: PopupProps | string) { + if (typeof value !== "object") { + this.prompts.push({ + prompt: value, + confirm: null, + action: undefined, + props: null, + }); + return; + } + + this.prompts.push({ + prompt: value.prompt, + confirm: value?.confirm, + action: value?.action, + props: value?.props, + }); + }, + showError() { + this.prompts.push({ + prompt: "error", + confirm: null, + action: undefined, + props: null, + }); + }, + showSuccess() { + this.prompts.push({ + prompt: "success", + confirm: null, + action: undefined, + props: null, + }); + }, + closeHovers() { + this.prompts.pop(); + }, + // easily reset state using `$reset` + clearLayout() { + this.$reset(); + }, + }, +}); diff --git a/frontend/src/stores/router.ts b/frontend/src/stores/router.ts new file mode 100644 index 00000000..e598824c --- /dev/null +++ b/frontend/src/stores/router.ts @@ -0,0 +1,14 @@ +import { defineStore } from "pinia"; + +/** + * Dummy store for exposing router to be used in other stores + * @example + * // route: () => { + * // const routerStore = useRouterStore(); + * // return routerStore.router.currentRoute; + * // }, + */ +export const useRouterStore = defineStore("routerStore", () => { + // can be an empty definition + return {}; +}); diff --git a/frontend/src/stores/upload.ts b/frontend/src/stores/upload.ts new file mode 100644 index 00000000..7a7686a6 --- /dev/null +++ b/frontend/src/stores/upload.ts @@ -0,0 +1,187 @@ +import { defineStore } from "pinia"; +import { useFileStore } from "./file"; +import { files as api } from "@/api"; +import throttle from "lodash/throttle"; +import buttons from "@/utils/buttons"; + +// TODO: make this into a user setting +const UPLOADS_LIMIT = 5; + +const beforeUnload = (event: Event) => { + event.preventDefault(); + // To remove >> is deprecated + // event.returnValue = ""; +}; + +export const useUploadStore = defineStore("upload", { + // convert to a function + state: (): { + id: number; + sizes: number[]; + progress: Progress[]; + queue: UploadItem[]; + uploads: Uploads; + speedMbyte: number; + eta: number; + error: Error | null; + } => ({ + id: 0, + sizes: [], + progress: [], + queue: [], + uploads: {}, + speedMbyte: 0, + eta: 0, + error: null, + }), + getters: { + // user and jwt getter removed, no longer needed + getProgress: (state) => { + if (state.progress.length === 0) { + return 0; + } + + const totalSize = state.sizes.reduce((a, b) => a + b, 0); + + // TODO: this looks ugly but it works with ts now + const sum = state.progress.reduce((acc, val) => +acc + +val) as number; + return Math.ceil((sum / totalSize) * 100); + }, + filesInUploadCount: (state) => { + return Object.keys(state.uploads).length + state.queue.length; + }, + filesInUpload: (state) => { + const files = []; + + for (const index in state.uploads) { + const upload = state.uploads[index]; + const id = upload.id; + const type = upload.type; + const name = upload.file.name; + const size = state.sizes[id]; + const isDir = upload.file.isDir; + const progress = isDir + ? 100 + : Math.ceil(((state.progress[id] as number) / size) * 100); + + files.push({ + id, + name, + progress, + type, + isDir, + }); + } + + return files.sort((a, b) => a.progress - b.progress); + }, + uploadSpeed: (state) => { + return state.speedMbyte; + }, + getETA: (state) => state.eta, + }, + actions: { + // no context as first argument, use `this` instead + setProgress({ id, loaded }: { id: number; loaded: Progress }) { + this.progress[id] = loaded; + }, + setError(error: Error) { + this.error = error; + }, + reset() { + this.id = 0; + this.sizes = []; + this.progress = []; + this.queue = []; + this.uploads = {}; + this.speedMbyte = 0; + this.eta = 0; + this.error = null; + }, + addJob(item: UploadItem) { + this.queue.push(item); + this.sizes[this.id] = item.file.size; + this.id++; + }, + moveJob() { + const item = this.queue[0]; + this.queue.shift(); + this.uploads[item.id] = item; + }, + removeJob(id: number) { + delete this.uploads[id]; + }, + upload(item: UploadItem) { + const uploadsCount = Object.keys(this.uploads).length; + + const isQueueEmpty = this.queue.length == 0; + const isUploadsEmpty = uploadsCount == 0; + + if (isQueueEmpty && isUploadsEmpty) { + window.addEventListener("beforeunload", beforeUnload); + buttons.loading("upload"); + } + + this.addJob(item); + this.processUploads(); + }, + finishUpload(item: UploadItem) { + this.setProgress({ id: item.id, loaded: item.file.size > 0 }); + this.removeJob(item.id); + this.processUploads(); + }, + async processUploads() { + const uploadsCount = Object.keys(this.uploads).length; + + const isBellowLimit = uploadsCount < UPLOADS_LIMIT; + const isQueueEmpty = this.queue.length == 0; + const isUploadsEmpty = uploadsCount == 0; + + const isFinished = isQueueEmpty && isUploadsEmpty; + const canProcess = isBellowLimit && !isQueueEmpty; + + if (isFinished) { + const fileStore = useFileStore(); + window.removeEventListener("beforeunload", beforeUnload); + buttons.success("upload"); + this.reset(); + fileStore.reload = true; + } + + if (canProcess) { + const item = this.queue[0]; + this.moveJob(); + + if (item.file.isDir) { + await api.post(item.path).catch(this.setError); + } else { + const onUpload = throttle( + (event: ProgressEvent) => + this.setProgress({ + id: item.id, + loaded: event.loaded, + }), + 100, + { leading: true, trailing: false } + ); + + await api + .post(item.path, item.file.file as File, item.overwrite, onUpload) + .catch(this.setError); + } + + this.finishUpload(item); + } + }, + setUploadSpeed(value: number) { + this.speedMbyte = value; + }, + setETA(value: number) { + this.eta = value; + }, + // easily reset state using `$reset` + clearUpload() { + this.$reset(); + }, + }, +}); diff --git a/frontend/src/types/api.d.ts b/frontend/src/types/api.d.ts new file mode 100644 index 00000000..66685e5e --- /dev/null +++ b/frontend/src/types/api.d.ts @@ -0,0 +1,33 @@ +type ApiMethod = "GET" | "POST" | "PUT" | "DELETE" | "PATCH"; + +type ApiContent = + | Blob + | File + | Pick, "read"> + | ""; + +interface ApiOpts { + method?: ApiMethod; + headers?: object; + body?: any; +} + +interface TusSettings { + retryCount: number; + chunkSize: number; +} + +type ChecksumAlg = "md5" | "sha1" | "sha256" | "sha512"; + +interface Share { + hash: string; + path: string; + expire?: any; + userID?: number; + token?: string; + username?: string; +} + +interface SearchParams { + [key: string]: string; +} diff --git a/frontend/src/types/file.d.ts b/frontend/src/types/file.d.ts new file mode 100644 index 00000000..db2aa5fe --- /dev/null +++ b/frontend/src/types/file.d.ts @@ -0,0 +1,58 @@ +interface ResourceBase { + path: string; + name: string; + size: number; + extension: string; + modified: string; // ISO 8601 datetime + mode: number; + isDir: boolean; + isSymlink: boolean; + type: ResourceType; + url: string; +} + +interface Resource extends ResourceBase { + items: ResourceItem[]; + numDirs: number; + numFiles: number; + sorting: Sorting; + hash?: string; + token?: string; + index: number; + subtitles?: string[]; + content?: string; +} + +interface ResourceItem extends ResourceBase { + index: number; + subtitles?: string[]; +} + +type ResourceType = + | "video" + | "audio" + | "image" + | "pdf" + | "text" + | "blob" + | "textImmutable"; + +type DownloadFormat = + | "zip" + | "tar" + | "targz" + | "tarbz2" + | "tarxz" + | "tarlz4" + | "tarsz" + | null; + +interface ClipItem { + from: string; + name: string; +} + +interface BreadCrumb { + name: string; + url: string; +} diff --git a/frontend/src/types/global.d.ts b/frontend/src/types/global.d.ts new file mode 100644 index 00000000..5475c908 --- /dev/null +++ b/frontend/src/types/global.d.ts @@ -0,0 +1,13 @@ +export {}; + +declare global { + interface Window { + FileBrowser: any; + grecaptcha: any; + } + + interface HTMLElement { + // TODO: no idea what the exact type is + __vue__: any; + } +} diff --git a/frontend/src/types/layout.d.ts b/frontend/src/types/layout.d.ts new file mode 100644 index 00000000..fa05a484 --- /dev/null +++ b/frontend/src/types/layout.d.ts @@ -0,0 +1,8 @@ +interface PopupProps { + prompt: string; + confirm?: any; + action?: PopupAction; + props?: any; +} + +type PopupAction = (e: Event) => void; diff --git a/frontend/src/types/settings.d.ts b/frontend/src/types/settings.d.ts new file mode 100644 index 00000000..a2c19f76 --- /dev/null +++ b/frontend/src/types/settings.d.ts @@ -0,0 +1,57 @@ +interface ISettings { + signup: boolean; + createUserDir: boolean; + userHomeBasePath: string; + defaults: SettingsDefaults; + rules: any[]; + branding: SettingsBranding; + tus: SettingsTus; + shell: string[]; + commands: SettingsCommand; +} + +interface SettingsDefaults { + scope: string; + locale: string; + viewMode: ViewModeType; + singleClick: boolean; + sorting: Sorting; + perm: Permissions; + commands: any[]; + hideDotfiles: boolean; + dateFormat: boolean; +} + +interface SettingsBranding { + name: string; + disableExternal: boolean; + disableUsedPercentage: boolean; + files: string; + theme: UserTheme; + color: string; +} + +interface SettingsTus { + chunkSize: number; + retryCount: number; +} + +interface SettingsCommand { + after_copy?: string[]; + after_delete?: string[]; + after_rename?: string[]; + after_save?: string[]; + after_upload?: string[]; + before_copy?: string[]; + before_delete?: string[]; + before_rename?: string[]; + before_save?: string[]; + before_upload?: string[]; +} + +interface SettingsUnit { + KB: number; + MB: number; + GB: number; + TB: number; +} diff --git a/frontend/src/types/toast.d.ts b/frontend/src/types/toast.d.ts new file mode 100644 index 00000000..5a691ed4 --- /dev/null +++ b/frontend/src/types/toast.d.ts @@ -0,0 +1,2 @@ +type IToastSuccess = (message: string) => void; +type IToastError = (error: Error | string, displayReport?: boolean) => void; diff --git a/frontend/src/types/upload.d.ts b/frontend/src/types/upload.d.ts new file mode 100644 index 00000000..263b6bf5 --- /dev/null +++ b/frontend/src/types/upload.d.ts @@ -0,0 +1,51 @@ +interface Uploads { + [key: number]: Upload; +} + +interface Upload { + id: number; + file: UploadEntry; + type?: ResourceType; +} + +interface UploadItem { + id: number; + url?: string; + path: string; + file: UploadEntry; + dir?: boolean; + overwrite?: boolean; + type?: ResourceType; +} + +interface UploadEntry { + name: string; + size: number; + isDir: boolean; + fullPath?: string; + file?: File; +} + +type UploadList = UploadEntry[]; + +type Progress = number | boolean; + +type CurrentUploadList = { + [key: string]: { + upload: import("tus-js-client").Upload; + recentSpeeds: number[]; + initialBytesUploaded: number; + currentBytesUploaded: number; + currentAverageSpeed: number; + lastProgressTimestamp: number | null; + sumOfRecentSpeeds: number; + hasStarted: boolean; + interval: number | undefined; + }; +}; + +interface ETAState { + sizes: number[]; + progress: Progress[]; + speedMbyte: number; +} diff --git a/frontend/src/types/user.d.ts b/frontend/src/types/user.d.ts new file mode 100644 index 00000000..b81806fc --- /dev/null +++ b/frontend/src/types/user.d.ts @@ -0,0 +1,66 @@ +interface IUser { + id: number; + username: string; + password: string; + scope: string; + locale: string; + perm: Permissions; + commands: string[]; + rules: IRule[]; + lockPassword: boolean; + hideDotfiles: boolean; + singleClick: boolean; + dateFormat: boolean; + viewMode: ViewModeType; + sorting?: Sorting; +} + +type ViewModeType = "list" | "mosaic" | "mosaic gallery"; + +interface IUserForm { + id?: number; + username?: string; + password?: string; + scope?: string; + locale?: string; + perm?: Permissions; + commands?: string[]; + rules?: IRule[]; + lockPassword?: boolean; + hideDotfiles?: boolean; + singleClick?: boolean; + dateFormat?: boolean; +} + +interface Permissions { + admin: boolean; + copy: boolean; + create: boolean; + delete: boolean; + download: boolean; + execute: boolean; + modify: boolean; + move: boolean; + rename: boolean; + share: boolean; + shell: boolean; + upload: boolean; +} + +interface Sorting { + by: string; + asc: boolean; +} + +interface IRule { + allow: boolean; + path: string; + regex: boolean; + regexp: IRegexp; +} + +interface IRegexp { + raw: string; +} + +type UserTheme = "light" | "dark" | ""; diff --git a/frontend/src/types/utif.d.ts b/frontend/src/types/utif.d.ts new file mode 100644 index 00000000..1919070b --- /dev/null +++ b/frontend/src/types/utif.d.ts @@ -0,0 +1 @@ +declare module "utif"; diff --git a/frontend/src/utils/auth.js b/frontend/src/utils/auth.js deleted file mode 100644 index 03d35d74..00000000 --- a/frontend/src/utils/auth.js +++ /dev/null @@ -1,92 +0,0 @@ -import store from "@/store"; -import router from "@/router"; -import { Base64 } from "js-base64"; -import { baseURL } from "@/utils/constants"; - -export function parseToken(token) { - const parts = token.split("."); - - if (parts.length !== 3) { - throw new Error("token malformed"); - } - - const data = JSON.parse(Base64.decode(parts[1])); - - document.cookie = `auth=${token}; path=/`; - - localStorage.setItem("jwt", token); - store.commit("setJWT", token); - store.commit("setUser", data.user); -} - -export async function validateLogin() { - try { - if (localStorage.getItem("jwt")) { - await renew(localStorage.getItem("jwt")); - } - } catch (_) { - console.warn("Invalid JWT token in storage"); // eslint-disable-line - } -} - -export async function login(username, password, recaptcha) { - const data = { username, password, recaptcha }; - - const res = await fetch(`${baseURL}/api/login`, { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify(data), - }); - - const body = await res.text(); - - if (res.status === 200) { - parseToken(body); - } else { - throw new Error(body); - } -} - -export async function renew(jwt) { - const res = await fetch(`${baseURL}/api/renew`, { - method: "POST", - headers: { - "X-Auth": jwt, - }, - }); - - const body = await res.text(); - - if (res.status === 200) { - parseToken(body); - } else { - throw new Error(body); - } -} - -export async function signup(username, password) { - const data = { username, password }; - - const res = await fetch(`${baseURL}/api/signup`, { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify(data), - }); - - if (res.status !== 200) { - throw new Error(res.status); - } -} - -export function logout() { - document.cookie = "auth=; expires=Thu, 01 Jan 1970 00:00:01 GMT; path=/"; - - store.commit("setJWT", ""); - store.commit("setUser", null); - localStorage.setItem("jwt", null); - router.push({ path: "/login" }); -} diff --git a/frontend/src/utils/auth.ts b/frontend/src/utils/auth.ts new file mode 100644 index 00000000..5fe8ce31 --- /dev/null +++ b/frontend/src/utils/auth.ts @@ -0,0 +1,102 @@ +import { useAuthStore } from "@/stores/auth"; +import router from "@/router"; +import { JwtPayload, jwtDecode } from "jwt-decode"; +import { baseURL } from "./constants"; +import { StatusError } from "@/api/utils"; + +export function parseToken(token: string) { + // falsy or malformed jwt will throw InvalidTokenError + const data = jwtDecode(token); + + document.cookie = `auth=${token}; Path=/; SameSite=Strict;`; + + localStorage.setItem("jwt", token); + + const authStore = useAuthStore(); + authStore.jwt = token; + authStore.setUser(data.user); +} + +export async function validateLogin() { + try { + if (localStorage.getItem("jwt")) { + await renew(localStorage.getItem("jwt")); + } + } catch (error) { + console.warn("Invalid JWT token in storage"); // eslint-disable-line + throw error; + } +} + +export async function login( + username: string, + password: string, + recaptcha: string +) { + const data = { username, password, recaptcha }; + + const res = await fetch(`${baseURL}/api/login`, { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(data), + }); + + const body = await res.text(); + + if (res.status === 200) { + parseToken(body); + } else { + throw new StatusError( + body || `${res.status} ${res.statusText}`, + res.status + ); + } +} + +export async function renew(jwt: string) { + const res = await fetch(`${baseURL}/api/renew`, { + method: "POST", + headers: { + "X-Auth": jwt, + }, + }); + + const body = await res.text(); + + if (res.status === 200) { + parseToken(body); + } else { + throw new StatusError( + body || `${res.status} ${res.statusText}`, + res.status + ); + } +} + +export async function signup(username: string, password: string) { + const data = { username, password }; + + const res = await fetch(`${baseURL}/api/signup`, { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(data), + }); + + if (res.status !== 200) { + throw new StatusError(`${res.status} ${res.statusText}`, res.status); + } +} + +export function logout() { + document.cookie = "auth=; Max-Age=0; Path=/; SameSite=Strict;"; + + const authStore = useAuthStore(); + authStore.clearUser(); + + localStorage.setItem("jwt", ""); + router.push({ path: "/login" }); +} diff --git a/frontend/src/utils/buttons.js b/frontend/src/utils/buttons.js deleted file mode 100644 index bf123878..00000000 --- a/frontend/src/utils/buttons.js +++ /dev/null @@ -1,70 +0,0 @@ -function loading(button) { - let el = document.querySelector(`#${button}-button > i`); - - if (el === undefined || el === null) { - console.log('Error getting button ' + button) // eslint-disable-line - return; - } - - if (el.innerHTML == "autorenew" || el.innerHTML == "done") { - return; - } - - el.dataset.icon = el.innerHTML; - el.style.opacity = 0; - - setTimeout(() => { - el.classList.add("spin"); - el.innerHTML = "autorenew"; - el.style.opacity = 1; - }, 100); -} - -function done(button) { - let el = document.querySelector(`#${button}-button > i`); - - if (el === undefined || el === null) { - console.log('Error getting button ' + button) // eslint-disable-line - return; - } - - el.style.opacity = 0; - - setTimeout(() => { - el.classList.remove("spin"); - el.innerHTML = el.dataset.icon; - el.style.opacity = 1; - }, 100); -} - -function success(button) { - let el = document.querySelector(`#${button}-button > i`); - - if (el === undefined || el === null) { - console.log('Error getting button ' + button) // eslint-disable-line - return; - } - - el.style.opacity = 0; - - setTimeout(() => { - el.classList.remove("spin"); - el.innerHTML = "done"; - el.style.opacity = 1; - - setTimeout(() => { - el.style.opacity = 0; - - setTimeout(() => { - el.innerHTML = el.dataset.icon; - el.style.opacity = 1; - }, 100); - }, 500); - }, 100); -} - -export default { - loading, - done, - success, -}; diff --git a/frontend/src/utils/buttons.ts b/frontend/src/utils/buttons.ts new file mode 100644 index 00000000..6a8ac249 --- /dev/null +++ b/frontend/src/utils/buttons.ts @@ -0,0 +1,83 @@ +function loading(button: string) { + const el: HTMLButtonElement | null = document.querySelector( + `#${button}-button > i` + ); + + if (el === undefined || el === null) { + console.log("Error getting button " + button); // eslint-disable-line + return; + } + + if (el.innerHTML == "autorenew" || el.innerHTML == "done") { + return; + } + + el.dataset.icon = el.innerHTML; + el.style.opacity = "0"; + + setTimeout(() => { + if (el) { + el.classList.add("spin"); + el.innerHTML = "autorenew"; + el.style.opacity = "1"; + } + }, 100); +} + +function done(button: string) { + const el: HTMLButtonElement | null = document.querySelector( + `#${button}-button > i` + ); + + if (el === undefined || el === null) { + console.log("Error getting button " + button); // eslint-disable-line + return; + } + + el.style.opacity = "0"; + + setTimeout(() => { + if (el !== null) { + el.classList.remove("spin"); + el.innerHTML = el?.dataset?.icon || ""; + el.style.opacity = "1"; + } + }, 100); +} + +function success(button: string) { + const el: HTMLButtonElement | null = document.querySelector( + `#${button}-button > i` + ); + + if (el === undefined || el === null) { + console.log("Error getting button " + button); // eslint-disable-line + return; + } + + el.style.opacity = "0"; + + setTimeout(() => { + if (el !== null) { + el.classList.remove("spin"); + el.innerHTML = "done"; + el.style.opacity = "1"; + } + setTimeout(() => { + if (el) el.style.opacity = "0"; + + setTimeout(() => { + if (el !== null) { + el.innerHTML = el?.dataset?.icon || ""; + el.style.opacity = "1"; + } + }, 100); + }, 500); + }, 100); +} + +export default { + loading, + done, + success, +}; diff --git a/frontend/src/utils/clipboard.ts b/frontend/src/utils/clipboard.ts new file mode 100644 index 00000000..352d9ae7 --- /dev/null +++ b/frontend/src/utils/clipboard.ts @@ -0,0 +1,66 @@ +// Based on code provided by Amir Fo +// https://stackoverflow.com/a/74528564 +export function copy(text: string) { + return new Promise((resolve, reject) => { + if ( + typeof navigator !== "undefined" && + typeof navigator.clipboard !== "undefined" && + // @ts-ignore + navigator.permissions !== "undefined" + ) { + navigator.permissions + // @ts-ignore + .query({ name: "clipboard-write" }) + .then((permission) => { + if (permission.state === "granted" || permission.state === "prompt") { + const type = "text/plain"; + const blob = new Blob([text], { type }); + const data = [new ClipboardItem({ [type]: blob })]; + navigator.clipboard.write(data).then(resolve).catch(reject); + } else { + reject(new Error("Permission not granted!")); + } + }) + .catch((e) => { + // Firefox doesnt support clipboard-write permission + if (navigator.userAgent.indexOf("Firefox") != -1) { + navigator.clipboard.writeText(text).then(resolve).catch(reject); + } else { + reject(e); + } + }); + } else if ( + document.queryCommandSupported && + document.queryCommandSupported("copy") + ) { + const textarea = document.createElement("textarea"); + textarea.textContent = text; + textarea.setAttribute("readonly", ""); + textarea.style.fontSize = "12pt"; + textarea.style.position = "fixed"; + textarea.style.width = "2em"; + textarea.style.height = "2em"; + textarea.style.padding = "0"; + textarea.style.margin = "0"; + textarea.style.border = "none"; + textarea.style.outline = "none"; + textarea.style.boxShadow = "none"; + textarea.style.background = "transparent"; + document.body.appendChild(textarea); + textarea.focus(); + textarea.select(); + try { + document.execCommand("copy"); + document.body.removeChild(textarea); + resolve(); + } catch (e) { + document.body.removeChild(textarea); + reject(e); + } + } else { + reject( + new Error("None of copying methods are supported by this browser!") + ); + } + }); +} diff --git a/frontend/src/utils/constants.js b/frontend/src/utils/constants.js deleted file mode 100644 index 2dbe44a1..00000000 --- a/frontend/src/utils/constants.js +++ /dev/null @@ -1,42 +0,0 @@ -const name = window.FileBrowser.Name || "File Browser"; -const disableExternal = window.FileBrowser.DisableExternal; -const disableUsedPercentage = window.FileBrowser.DisableUsedPercentage; -const baseURL = window.FileBrowser.BaseURL; -const staticURL = window.FileBrowser.StaticURL; -const recaptcha = window.FileBrowser.ReCaptcha; -const recaptchaKey = window.FileBrowser.ReCaptchaKey; -const signup = window.FileBrowser.Signup; -const version = window.FileBrowser.Version; -const logoURL = `${staticURL}/img/logo.svg`; -const noAuth = window.FileBrowser.NoAuth; -const authMethod = window.FileBrowser.AuthMethod; -const loginPage = window.FileBrowser.LoginPage; -const theme = window.FileBrowser.Theme; -const enableThumbs = window.FileBrowser.EnableThumbs; -const resizePreview = window.FileBrowser.ResizePreview; -const enableExec = window.FileBrowser.EnableExec; -const tusSettings = window.FileBrowser.TusSettings; -const origin = window.location.origin; -const tusEndpoint = `/api/tus`; - -export { - name, - disableExternal, - disableUsedPercentage, - baseURL, - logoURL, - recaptcha, - recaptchaKey, - signup, - version, - noAuth, - authMethod, - loginPage, - theme, - enableThumbs, - resizePreview, - enableExec, - tusSettings, - origin, - tusEndpoint, -}; diff --git a/frontend/src/utils/constants.ts b/frontend/src/utils/constants.ts new file mode 100644 index 00000000..3f131b1a --- /dev/null +++ b/frontend/src/utils/constants.ts @@ -0,0 +1,42 @@ +const name: string = window.FileBrowser.Name || "File Browser"; +const disableExternal: boolean = window.FileBrowser.DisableExternal; +const disableUsedPercentage: boolean = window.FileBrowser.DisableUsedPercentage; +const baseURL: string = window.FileBrowser.BaseURL; +const staticURL: string = window.FileBrowser.StaticURL; +const recaptcha: string = window.FileBrowser.ReCaptcha; +const recaptchaKey: string = window.FileBrowser.ReCaptchaKey; +const signup: boolean = window.FileBrowser.Signup; +const version: string = window.FileBrowser.Version; +const logoURL = `${staticURL}/img/logo.svg`; +const noAuth: boolean = window.FileBrowser.NoAuth; +const authMethod = window.FileBrowser.AuthMethod; +const loginPage: boolean = window.FileBrowser.LoginPage; +const theme: UserTheme = window.FileBrowser.Theme; +const enableThumbs: boolean = window.FileBrowser.EnableThumbs; +const resizePreview: boolean = window.FileBrowser.ResizePreview; +const enableExec: boolean = window.FileBrowser.EnableExec; +const tusSettings = window.FileBrowser.TusSettings; +const origin = window.location.origin; +const tusEndpoint = `/api/tus`; + +export { + name, + disableExternal, + disableUsedPercentage, + baseURL, + logoURL, + recaptcha, + recaptchaKey, + signup, + version, + noAuth, + authMethod, + loginPage, + theme, + enableThumbs, + resizePreview, + enableExec, + tusSettings, + origin, + tusEndpoint, +}; diff --git a/frontend/src/utils/cookie.js b/frontend/src/utils/cookie.ts similarity index 63% rename from frontend/src/utils/cookie.js rename to frontend/src/utils/cookie.ts index 72d59be4..bdebf4f0 100644 --- a/frontend/src/utils/cookie.js +++ b/frontend/src/utils/cookie.ts @@ -1,5 +1,5 @@ -export default function (name) { - let re = new RegExp( +export default function (name: string) { + const re = new RegExp( "(?:(?:^|.*;\\s*)" + name + "\\s*\\=\\s*([^;]*).*$)|^.*$" ); return document.cookie.replace(re, "$1"); diff --git a/frontend/src/utils/css.js b/frontend/src/utils/css.ts similarity index 86% rename from frontend/src/utils/css.js rename to frontend/src/utils/css.ts index 405c0dd2..d727786b 100644 --- a/frontend/src/utils/css.js +++ b/frontend/src/utils/css.ts @@ -1,10 +1,10 @@ -export default function getRule(rules) { +export default function getRule(rules: string[]) { for (let i = 0; i < rules.length; i++) { rules[i] = rules[i].toLowerCase(); } let result = null; - let find = Array.prototype.find; + const find = Array.prototype.find; find.call(document.styleSheets, (styleSheet) => { result = find.call(styleSheet.cssRules, (cssRule) => { diff --git a/frontend/src/utils/index.js b/frontend/src/utils/index.ts similarity index 100% rename from frontend/src/utils/index.js rename to frontend/src/utils/index.ts diff --git a/frontend/src/utils/theme.ts b/frontend/src/utils/theme.ts new file mode 100644 index 00000000..8058356a --- /dev/null +++ b/frontend/src/utils/theme.ts @@ -0,0 +1,34 @@ +import { theme } from "./constants"; + +export const getTheme = (): UserTheme => { + return (document.documentElement.className as UserTheme) || theme; +}; + +export const setTheme = (theme: UserTheme) => { + const html = document.documentElement; + if (!theme) { + html.className = getMediaPreference(); + } else { + html.className = theme; + } +}; + +export const toggleTheme = (): void => { + const activeTheme = getTheme(); + if (activeTheme === "light") { + setTheme("dark"); + } else { + setTheme("light"); + } +}; + +export const getMediaPreference = (): UserTheme => { + const hasDarkPreference = window.matchMedia( + "(prefers-color-scheme: dark)" + ).matches; + if (hasDarkPreference) { + return "dark"; + } else { + return "light"; + } +}; diff --git a/frontend/src/utils/upload.js b/frontend/src/utils/upload.js deleted file mode 100644 index 2184072f..00000000 --- a/frontend/src/utils/upload.js +++ /dev/null @@ -1,138 +0,0 @@ -import store from "@/store"; -import url from "@/utils/url"; - -export function checkConflict(files, items) { - if (typeof items === "undefined" || items === null) { - items = []; - } - - let folder_upload = files[0].fullPath !== undefined; - - let conflict = false; - for (let i = 0; i < files.length; i++) { - let file = files[i]; - let name = file.name; - - if (folder_upload) { - let dirs = file.fullPath.split("/"); - if (dirs.length > 1) { - name = dirs[0]; - } - } - - let res = items.findIndex(function hasConflict(element) { - return element.name === this; - }, name); - - if (res >= 0) { - conflict = true; - break; - } - } - - return conflict; -} - -export function scanFiles(dt) { - return new Promise((resolve) => { - let reading = 0; - const contents = []; - - if (dt.items !== undefined) { - for (let item of dt.items) { - if ( - item.kind === "file" && - typeof item.webkitGetAsEntry === "function" - ) { - const entry = item.webkitGetAsEntry(); - readEntry(entry); - } - } - } else { - resolve(dt.files); - } - - function readEntry(entry, directory = "") { - if (entry.isFile) { - reading++; - entry.file((file) => { - reading--; - - file.fullPath = `${directory}${file.name}`; - contents.push(file); - - if (reading === 0) { - resolve(contents); - } - }); - } else if (entry.isDirectory) { - const dir = { - isDir: true, - size: 0, - fullPath: `${directory}${entry.name}`, - name: entry.name, - }; - - contents.push(dir); - - readReaderContent(entry.createReader(), `${directory}${entry.name}`); - } - } - - function readReaderContent(reader, directory) { - reading++; - - reader.readEntries(function (entries) { - reading--; - if (entries.length > 0) { - for (const entry of entries) { - readEntry(entry, `${directory}/`); - } - - readReaderContent(reader, `${directory}/`); - } - - if (reading === 0) { - resolve(contents); - } - }); - } - }); -} - -function detectType(mimetype) { - if (mimetype.startsWith("video")) return "video"; - if (mimetype.startsWith("audio")) return "audio"; - if (mimetype.startsWith("image")) return "image"; - if (mimetype.startsWith("pdf")) return "pdf"; - if (mimetype.startsWith("text")) return "text"; - return "blob"; -} - -export function handleFiles(files, base, overwrite = false) { - for (let i = 0; i < files.length; i++) { - let id = store.state.upload.id; - let path = base; - let file = files[i]; - - if (file.fullPath !== undefined) { - path += url.encodePath(file.fullPath); - } else { - path += url.encodeRFC5987ValueChars(file.name); - } - - if (file.isDir) { - path += "/"; - } - - const item = { - id, - path, - file, - overwrite, - ...(!file.isDir && { type: detectType(file.type) }), - }; - - store.dispatch("upload/upload", item); - } -} diff --git a/frontend/src/utils/upload.ts b/frontend/src/utils/upload.ts new file mode 100644 index 00000000..806bc78f --- /dev/null +++ b/frontend/src/utils/upload.ts @@ -0,0 +1,154 @@ +import { useUploadStore } from "@/stores/upload"; +import url from "@/utils/url"; + +export function checkConflict( + files: UploadList, + dest: ResourceItem[] +): boolean { + if (typeof dest === "undefined" || dest === null) { + dest = []; + } + + const folder_upload = files[0].fullPath !== undefined; + + const names = new Set(); + for (let i = 0; i < files.length; i++) { + const file = files[i]; + let name = file.name; + + if (folder_upload) { + const dirs = file.fullPath?.split("/"); + if (dirs && dirs.length > 1) { + name = dirs[0]; + } + } + + names.add(name); + } + + return dest.some((d) => names.has(d.name)); +} + +export function scanFiles(dt: DataTransfer): Promise { + return new Promise((resolve) => { + let reading = 0; + const contents: UploadList = []; + + if (dt.items) { + // ts didnt like the for of loop even tho + // it is the official example on MDN + // for (const item of dt.items) { + for (let i = 0; i < dt.items.length; i++) { + const item = dt.items[i]; + if ( + item.kind === "file" && + typeof item.webkitGetAsEntry === "function" + ) { + const entry = item.webkitGetAsEntry(); + entry && readEntry(entry); + } + } + } else { + resolve(dt.files); + } + + function readEntry(entry: FileSystemEntry, directory = ""): void { + if (entry.isFile) { + reading++; + (entry as FileSystemFileEntry).file((file) => { + reading--; + + contents.push({ + file, + name: file.name, + size: file.size, + isDir: false, + fullPath: `${directory}${file.name}`, + }); + + if (reading === 0) { + resolve(contents); + } + }); + } else if (entry.isDirectory) { + const dir = { + isDir: true, + size: 0, + fullPath: `${directory}${entry.name}`, + name: entry.name, + }; + + contents.push(dir); + + readReaderContent( + (entry as FileSystemDirectoryEntry).createReader(), + `${directory}${entry.name}` + ); + } + } + + function readReaderContent( + reader: FileSystemDirectoryReader, + directory: string + ): void { + reading++; + + reader.readEntries((entries) => { + reading--; + if (entries.length > 0) { + for (const entry of entries) { + readEntry(entry, `${directory}/`); + } + + readReaderContent(reader, `${directory}/`); + } + + if (reading === 0) { + resolve(contents); + } + }); + } + }); +} + +function detectType(mimetype: string): ResourceType { + if (mimetype.startsWith("video")) return "video"; + if (mimetype.startsWith("audio")) return "audio"; + if (mimetype.startsWith("image")) return "image"; + if (mimetype.startsWith("pdf")) return "pdf"; + if (mimetype.startsWith("text")) return "text"; + return "blob"; +} + +export function handleFiles( + files: UploadList, + base: string, + overwrite = false +) { + const uploadStore = useUploadStore(); + + for (const file of files) { + const id = uploadStore.id; + let path = base; + + if (file.fullPath !== undefined) { + path += url.encodePath(file.fullPath); + } else { + path += url.encodeRFC5987ValueChars(file.name); + } + + if (file.isDir) { + path += "/"; + } + + const item: UploadItem = { + id, + path, + file, + overwrite, + ...(!file.isDir && { type: detectType((file.file as File).type) }), + }; + + uploadStore.upload(item); + } +} diff --git a/frontend/src/utils/url.js b/frontend/src/utils/url.js deleted file mode 100644 index 33d124a2..00000000 --- a/frontend/src/utils/url.js +++ /dev/null @@ -1,36 +0,0 @@ -export function removeLastDir(url) { - var arr = url.split("/"); - if (arr.pop() === "") { - arr.pop(); - } - - return arr.join("/"); -} - -// this code borrow from mozilla -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent#Examples -export function encodeRFC5987ValueChars(str) { - return ( - encodeURIComponent(str) - // Note that although RFC3986 reserves "!", RFC5987 does not, - // so we do not need to escape it - .replace(/['()]/g, escape) // i.e., %27 %28 %29 - .replace(/\*/g, "%2A") - // The following are not required for percent-encoding per RFC5987, - // so we can allow for a little better readability over the wire: |`^ - .replace(/%(?:7C|60|5E)/g, unescape) - ); -} - -export function encodePath(str) { - return str - .split("/") - .map((v) => encodeURIComponent(v)) - .join("/"); -} - -export default { - encodeRFC5987ValueChars, - removeLastDir, - encodePath, -}; diff --git a/frontend/src/utils/url.ts b/frontend/src/utils/url.ts new file mode 100644 index 00000000..063fa6d2 --- /dev/null +++ b/frontend/src/utils/url.ts @@ -0,0 +1,42 @@ +export function removeLastDir(url: string) { + const arr = url.split("/"); + if (arr.pop() === "") { + arr.pop(); + } + + return arr.join("/"); +} + +// this function is taken from mozilla +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent#Examples +export function encodeRFC5987ValueChars(str: string) { + return ( + encodeURIComponent(str) + // The following creates the sequences %27 %28 %29 %2A (Note that + // the valid encoding of "*" is %2A, which necessitates calling + // toUpperCase() to properly encode). Although RFC3986 reserves "!", + // RFC5987 does not, so we do not need to escape it. + .replace( + /['()*]/g, + (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}` + ) + // The following are not required for percent-encoding per RFC5987, + // so we can allow for a little better readability over the wire: |`^ + .replace(/%(7C|60|5E)/g, (str, hex) => + String.fromCharCode(parseInt(hex, 16)) + ) + ); +} + +export function encodePath(str: string) { + return str + .split("/") + .map((v) => encodeURIComponent(v)) + .join("/"); +} + +export default { + encodeRFC5987ValueChars, + removeLastDir, + encodePath, +}; diff --git a/frontend/src/utils/vue.js b/frontend/src/utils/vue.js deleted file mode 100644 index 962a7f9d..00000000 --- a/frontend/src/utils/vue.js +++ /dev/null @@ -1,68 +0,0 @@ -import Vue from "vue"; -import Noty from "noty"; -import VueLazyload from "vue-lazyload"; -import i18n from "@/i18n"; -import { disableExternal } from "@/utils/constants"; -import AsyncComputed from "vue-async-computed"; - -Vue.use(VueLazyload); -Vue.use(AsyncComputed); - -Vue.config.productionTip = true; - -const notyDefault = { - type: "info", - layout: "bottomRight", - timeout: 1000, - progressBar: true, -}; - -Vue.prototype.$noty = (opts) => { - new Noty(Object.assign({}, notyDefault, opts)).show(); -}; - -Vue.prototype.$showSuccess = (message) => { - new Noty( - Object.assign({}, notyDefault, { - text: message, - type: "success", - }) - ).show(); -}; - -Vue.prototype.$showError = (error, displayReport = true) => { - let btns = [ - Noty.button(i18n.t("buttons.close"), "", function () { - n.close(); - }), - ]; - - if (!disableExternal && displayReport) { - btns.unshift( - Noty.button(i18n.t("buttons.reportIssue"), "", function () { - window.open( - "https://github.com/filebrowser/filebrowser/issues/new/choose" - ); - }) - ); - } - - let n = new Noty( - Object.assign({}, notyDefault, { - text: error.message || error, - type: "error", - timeout: null, - buttons: btns, - }) - ); - - n.show(); -}; - -Vue.directive("focus", { - inserted: function (el) { - el.focus(); - }, -}); - -export default Vue; diff --git a/frontend/src/views/Errors.vue b/frontend/src/views/Errors.vue index 4b9c58e8..a895ea9e 100644 --- a/frontend/src/views/Errors.vue +++ b/frontend/src/views/Errors.vue @@ -4,15 +4,24 @@

{{ info.icon }} - {{ $t(info.message) }} + {{ t(info.message) }}

- diff --git a/frontend/src/views/Files.vue b/frontend/src/views/Files.vue index 29a7afd9..2e82fc6b 100644 --- a/frontend/src/views/Files.vue +++ b/frontend/src/views/Files.vue @@ -1,9 +1,12 @@ - diff --git a/frontend/src/views/Layout.vue b/frontend/src/views/Layout.vue index c9eb4217..597a680e 100644 --- a/frontend/src/views/Layout.vue +++ b/frontend/src/views/Layout.vue @@ -1,46 +1,46 @@ - diff --git a/frontend/src/views/Login.vue b/frontend/src/views/Login.vue index 51e5d1cb..5804789a 100644 --- a/frontend/src/views/Login.vue +++ b/frontend/src/views/Login.vue @@ -11,39 +11,38 @@ type="text" autocapitalize="off" v-model="username" - :placeholder="$t('login.username')" + :placeholder="t('login.username')" />

- {{ - createMode ? $t("login.loginInstead") : $t("login.createAnAccount") - }} + {{ createMode ? t("login.loginInstead") : t("login.createAnAccount") }}

- diff --git a/frontend/src/views/Settings.vue b/frontend/src/views/Settings.vue index 15c62fab..271715b2 100644 --- a/frontend/src/views/Settings.vue +++ b/frontend/src/views/Settings.vue @@ -7,27 +7,27 @@
  • - {{ $t("settings.profileSettings") }} + {{ t("settings.profileSettings") }}
  • -
  • - {{ $t("settings.shareManagement") }} + {{ t("settings.shareManagement") }}
  • -
  • - {{ $t("settings.globalSettings") }} + {{ t("settings.globalSettings") }}
  • -
  • - {{ $t("settings.userManagement") }} + {{ t("settings.userManagement") }}
@@ -41,7 +41,7 @@
- {{ $t("files.loading") }} + {{ t("files.loading") }}
@@ -49,18 +49,18 @@ - diff --git a/frontend/src/views/Share.vue b/frontend/src/views/Share.vue index 0bbf6436..53f0cfb1 100644 --- a/frontend/src/views/Share.vue +++ b/frontend/src/views/Share.vue @@ -4,55 +4,56 @@ <action - v-if="selectedCount" + v-if="fileStore.selectedCount" icon="file_download" - :label="$t('buttons.download')" + :label="t('buttons.download')" @action="download" - :counter="selectedCount" + :counter="fileStore.selectedCount" /> <button v-if="isSingleFile()" class="action copy-clipboard" - :data-clipboard-text="linkSelected()" - :aria-label="$t('buttons.copyDownloadLinkToClipboard')" - :title="$t('buttons.copyDownloadLinkToClipboard')" + :aria-label="t('buttons.copyDownloadLinkToClipboard')" + :data-title="t('buttons.copyDownloadLinkToClipboard')" + @click="copyToClipboard(linkSelected())" > <i class="material-icons">content_paste</i> </button> <action icon="check_circle" - :label="$t('buttons.selectMultiple')" + :label="t('buttons.selectMultiple')" @action="toggleMultipleSelection" /> </header-bar> <breadcrumbs :base="'/share/' + hash" /> - <div v-if="loading"> - <h2 class="message delayed" style="padding-top: 3em !important;"> + <div v-if="layoutStore.loading"> + <h2 class="message delayed" style="padding-top: 3em !important"> <div class="spinner"> <div class="bounce1"></div> <div class="bounce2"></div> <div class="bounce3"></div> </div> - <span>{{ $t("files.loading") }}</span> + <span>{{ t("files.loading") }}</span> </h2> </div> <div v-else-if="error"> <div v-if="error.status === 401"> - <div class="card floating" id="password"> + <div class="card floating" id="password" style="z-index: 9999999"> <div v-if="attemptedPasswordLogin" class="share__wrong__password"> - {{ $t("login.wrongCredentials") }} + {{ t("login.wrongCredentials") }} </div> <div class="card-title"> - <h2>{{ $t("login.password") }}</h2> + <h2>{{ t("login.password") }}</h2> </div> <div class="card-content"> <input v-focus + class="input input--block" type="password" - :placeholder="$t('login.password')" + :placeholder="t('login.password')" v-model="password" @keyup.enter="fetchData" /> @@ -61,49 +62,60 @@ <button class="button button--flat" @click="fetchData" - :aria-label="$t('buttons.submit')" - :title="$t('buttons.submit')" + :aria-label="t('buttons.submit')" + :data-title="t('buttons.submit')" > - {{ $t("buttons.submit") }} + {{ t("buttons.submit") }} </button> </div> </div> + <div class="overlay" /> </div> <errors v-else :errorCode="error.status" /> </div> - <div v-else> + <div v-else-if="req !== null"> <div class="share"> - <div class="share__box share__box__info" + <div + class="share__box share__box__info" style=" position: -webkit-sticky; position: sticky; - top:-20.6em; - z-index:999;" + top: -20.6em; + z-index: 999; + " > - <div class="share__box__header" style="height:3em"> + <div class="share__box__header" style="height: 3em"> {{ req.isDir - ? $t("download.downloadFolder") - : $t("download.downloadFile") + ? t("download.downloadFolder") + : t("download.downloadFile") }} </div> - <div v-if="!this.req.isDir" class="share__box__element share__box__center share__box__icon"> + <div + v-if="!req.isDir" + class="share__box__element share__box__center share__box__icon" + > <i class="material-icons">{{ icon }}</i> </div> - <div class="share__box__element" style="height:3em"> + <div class="share__box__element" style="height: 3em"> <strong>{{ $t("prompts.displayName") }}</strong> {{ req.name }} </div> - <div v-if="!this.req.isDir" class="share__box__element" :title="modTime"> + <div v-if="!req.isDir" class="share__box__element" :title="modTime"> <strong>{{ $t("prompts.lastModified") }}:</strong> {{ humanTime }} </div> - <div class="share__box__element" style="height:3em"> + <div class="share__box__element" style="height: 3em"> <strong>{{ $t("prompts.size") }}:</strong> {{ humanSize }} </div> <div class="share__box__element share__box__center"> - <a target="_blank" :href="link" class="button button--flat" style="height:4em"> + <a + target="_blank" + :href="link" + class="button button--flat" + style="height: 4em" + > <div> <i class="material-icons">file_download</i - >{{ $t("buttons.download") }} + >{{ t("buttons.download") }} </div> </a> <a @@ -114,85 +126,123 @@ > <div> <i class="material-icons">open_in_new</i - >{{ $t("buttons.openFile") }} + >{{ t("buttons.openFile") }} </div> </a> - <qrcode-vue v-if="this.req.isDir" :value="fullLink" size="100" level="M"></qrcode-vue> + <qrcode-vue + v-if="req.isDir" + :value="link" + :size="100" + level="M" + ></qrcode-vue> </div> - <div v-if="!this.req.isDir" class="share__box__element share__box__center"> - <qrcode-vue :value="link" size="200" level="M"></qrcode-vue> + <div v-if="!req.isDir" class="share__box__element share__box__center"> + <qrcode-vue :value="link" :size="200" level="M"></qrcode-vue> </div> - <div v-if="this.req.isDir" class="share__box__element share__box__header" style="height:3em"> + <div + v-if="req.isDir" + class="share__box__element share__box__header" + style="height: 3em" + > {{ $t("sidebar.preview") }} </div> <div - v-if="this.req.isDir" - class="share__box__element share__box__center share__box__icon" - style="padding:0em !important;height:12em !important;" - > - <a + v-if="req.isDir" + class="share__box__element share__box__center share__box__icon" + style="padding: 0em !important; height: 12em !important" + > + <a target="_blank" :href="raw" class="button button--flat" - v-if= "!this.$store.state.multiple && - selectedCount === 1 && - req.items[this.selected[0]].type === 'image'" - style="height: 12em; padding:0; margin:0;" + v-if=" + !fileStore.multiple && + fileStore.selectedCount === 1 && + req.items[fileStore.selected[0]].type === 'image' + " + style="height: 12em; padding: 0; margin: 0" > - <img - style="height: 12em;" - :src="raw" - > + <img style="height: 12em" :src="raw" /> </a> <div - v-else-if= " - !this.$store.state.multiple && - selectedCount === 1 && - req.items[this.selected[0]].type === 'audio'" - style="height: 12em; paddingTop:1em; margin:0;" - > - <button @click="play" v-if="!this.tag" style="fontSize:6em !important; border:0px;outline:none; background: white;" class="material-icons">play_circle_filled</button> - <button @click="play" v-if="this.tag" style="fontSize:6em !important; border:0px;outline:none; background: white;" class="material-icons">pause_circle_filled</button> - <audio id="myaudio" - :src="raw" - controls="controls" + v-else-if=" + fileStore.multiple && + fileStore.selectedCount === 1 && + req.items[fileStore.selected[0]].type === 'audio' + " + style="height: 12em; padding-top: 1em; margin: 0" + > + <button + @click="play" + v-if="!tag" + style=" + font-size: 6em !important; + border: 0px; + outline: none; + background: white; + " + class="material-icons" + > + play_circle_filled + </button> + <button + @click="play" + v-if="tag" + style=" + font-size: 6em !important; + border: 0px; + outline: none; + background: white; + " + class="material-icons" + > + pause_circle_filled + </button> + <audio + id="myaudio" + ref="audio" + :src="raw" + controls :autoplay="tag" - > - </audio> + ></audio> </div> - <video - v-else-if= " - !this.$store.state.multiple && - selectedCount === 1 && - req.items[this.selected[0]].type === 'video'" - style="height: 12em; padding:0; margin:0;" - :src="raw" - controls="controls" - > - Sorry, your browser doesn't support embedded videos, but don't worry, - you can <a :href="raw">download it</a> - and watch it with your favorite video player! - </video> - <i - v-else-if= " - !this.$store.state.multiple && - selectedCount === 1 && - req.items[this.selected[0]].isDir" - class="material-icons">folder + <video + v-else-if=" + !fileStore.multiple && + fileStore.selectedCount === 1 && + req.items[fileStore.selected[0]].type === 'video' + " + style="height: 12em; padding: 0; margin: 0" + :src="raw" + controls + > + Sorry, your browser doesn't support embedded videos, but don't + worry, you can <a :href="raw">download it</a> + and watch it with your favorite video player! + </video> + <i + v-else-if=" + !fileStore.multiple && + fileStore.selectedCount === 1 && + req.items[fileStore.selected[0]].isDir + " + class="material-icons" + >folder </i> <i v-else class="material-icons">call_to_action</i> </div> </div> - <div id="shareList" + <div + id="shareList" v-if="req.isDir && req.items.length > 0" class="share__box share__box__items" > <div class="share__box__header" v-if="req.isDir"> - {{ $t("files.files") }} + {{ t("files.files") }} </div> <div id="listing" class="list file-icons"> <item - v-for="item in req.items.slice(0, this.showLimit)" + v-for="item in req.items.slice(0, showLimit)" :key="base64(item.name)" v-bind:index="item.index" v-bind:name="item.name" @@ -215,16 +265,16 @@ </div> <div - :class="{ active: $store.state.multiple }" + :class="{ active: fileStore.multiple }" id="multiple-selection" > - <p>{{ $t("files.multipleSelectionEnabled") }}</p> + <p>{{ t("files.multipleSelectionEnabled") }}</p> <div - @click="$store.commit('multiple', false)" + @click="() => (fileStore.multiple = false)" tabindex="0" role="button" - :title="$t('files.clear')" - :aria-label="$t('files.clear')" + :data-title="t('buttons.clear')" + :aria-label="t('buttons.clear')" class="action" > <i class="material-icons">clear</i> @@ -238,7 +288,7 @@ > <h2 class="message"> <i class="material-icons">sentiment_dissatisfied</i> - <span>{{ $t("files.lonely") }}</span> + <span>{{ t("files.lonely") }}</span> </h2> </div> </div> @@ -246,11 +296,11 @@ </div> </template> -<script> -import { mapState, mapMutations, mapGetters } from "vuex"; +<script setup lang="ts"> import { pub as api } from "@/api"; import { filesize } from "@/utils"; -import moment from "moment/min/moment-with-locales"; +import dayjs from "dayjs"; +import { Base64 } from "js-base64"; import HeaderBar from "@/components/header/HeaderBar.vue"; import Action from "@/components/header/Action.vue"; @@ -258,198 +308,223 @@ import Breadcrumbs from "@/components/Breadcrumbs.vue"; import Errors from "@/views/Errors.vue"; import QrcodeVue from "qrcode.vue"; import Item from "@/components/files/ListingItem.vue"; -import Clipboard from "clipboard"; +import { useFileStore } from "@/stores/file"; +import { useLayoutStore } from "@/stores/layout"; +import { computed, inject, onMounted, onBeforeUnmount, ref, watch } from "vue"; +import { useRoute } from "vue-router"; +import { useI18n } from "vue-i18n"; +import { StatusError } from "@/api/utils"; +import { copy } from "@/utils/clipboard"; -export default { - name: "share", - components: { - HeaderBar, - Action, - Breadcrumbs, - Item, - QrcodeVue, - Errors, - }, - data: () => ({ - error: null, - showLimit: 100, - password: "", - attemptedPasswordLogin: false, - hash: null, - token: null, - clip: null, - tag: false, - }), - watch: { - $route: function () { - this.showLimit = 100; +const error = ref<StatusError | null>(null); +const showLimit = ref<number>(100); +const password = ref<string>(""); +const attemptedPasswordLogin = ref<boolean>(false); +const hash = ref<string>(""); +const token = ref<string>(""); +const audio = ref<HTMLAudioElement>(); +const tag = ref<boolean>(false); - this.fetchData(); - }, - }, - created: async function () { - const hash = this.$route.params.pathMatch.split("/")[0]; - this.hash = hash; - await this.fetchData(); - }, - mounted() { - window.addEventListener("keydown", this.keyEvent); - this.clip = new Clipboard(".copy-clipboard"); - this.clip.on("success", () => { - this.$showSuccess(this.$t("success.linkCopied")); - }); - }, - beforeDestroy() { - window.removeEventListener("keydown", this.keyEvent); - this.clip.destroy(); - }, - computed: { - ...mapState(["req", "loading", "multiple", "selected"]), - ...mapGetters(["selectedCount"]), - icon: function () { - if (this.req.isDir) return "folder"; - if (this.req.type === "image") return "insert_photo"; - if (this.req.type === "audio") return "volume_up"; - if (this.req.type === "video") return "movie"; - return "insert_drive_file"; - }, - link: function () { - return api.getDownloadURL(this.req); - }, - raw: function () { - return this.req.items[this.selected[0]].url.replace(/share/, 'api/public/dl')+'?token='+this.token; - }, - inlineLink: function () { - return api.getDownloadURL(this.req, true); - }, - humanSize: function () { - if (this.req.isDir) { - return this.req.items.length; - } +const $showSuccess = inject<IToastSuccess>("$showSuccess")!; - return filesize(this.req.size); - }, - humanTime: function () { - return moment(this.req.modified).fromNow(); - }, - modTime: function () { - return new Date(Date.parse(this.req.modified)).toLocaleString(); - }, - }, - methods: { - ...mapMutations(["resetSelected", "updateRequest", "setLoading"]), - base64: function (name) { - return window.btoa(unescape(encodeURIComponent(name))); - }, - play() { - var audio = document.getElementById('myaudio'); - if(this.tag){ - audio.pause(); - this.tag = false; - } else { - audio.play(); - this.tag = true; - } - }, - fetchData: async function () { - // Reset view information. - this.$store.commit("setReload", false); - this.$store.commit("resetSelected"); - this.$store.commit("multiple", false); - this.$store.commit("closeHovers"); +const { t } = useI18n({}); - // Set loading to true and reset the error. - this.setLoading(true); - this.error = null; +const route = useRoute(); +const fileStore = useFileStore(); +const layoutStore = useLayoutStore(); - if (this.password !== "") { - this.attemptedPasswordLogin = true; - } +watch(route, () => { + showLimit.value = 100; + fetchData(); +}); - let url = this.$route.path; - if (url === "") url = "/"; - if (url[0] !== "/") url = "/" + url; +const req = computed(() => fileStore.req); - try { - let file = await api.fetch(url, this.password); - file.hash = this.hash; +// Define computes - this.token = file.token || ""; +const icon = computed(() => { + if (req.value === null) return "insert_drive_file"; + if (req.value.isDir) return "folder"; + if (req.value.type === "image") return "insert_photo"; + if (req.value.type === "audio") return "volume_up"; + if (req.value.type === "video") return "movie"; + return "insert_drive_file"; +}); - this.updateRequest(file); - document.title = `${file.name} - ${document.title}`; - } catch (e) { - this.error = e; - } finally { - this.setLoading(false); - } - }, - keyEvent(event) { - // Esc! - if (event.keyCode === 27) { - // If we're on a listing, unselect all - // files and folders. - if (this.selectedCount > 0) { - this.resetSelected(); - } - } - }, - toggleMultipleSelection() { - this.$store.commit("multiple", !this.multiple); - }, - isSingleFile: function () { - return ( - this.selectedCount === 1 && !this.req.items[this.selected[0]].isDir - ); - }, - download() { - if (this.isSingleFile()) { - api.download( - null, - this.hash, - this.token, - this.req.items[this.selected[0]].path - ); - return; - } +const link = computed(() => (req.value ? api.getDownloadURL(req.value) : "")); +const raw = computed(() => { + return req.value + ? req.value.items[fileStore.selected[0]].url.replace( + /share/, + "api/public/dl" + ) + + "?token=" + + token.value + : ""; +}); +const inlineLink = computed(() => + req.value ? api.getDownloadURL(req.value, true) : "" +); +const humanSize = computed(() => { + if (req.value) { + return req.value.isDir + ? req.value.items.length + : filesize(req.value.size ?? 0); + } else { + return ""; + } +}); +const humanTime = computed(() => dayjs(req.value?.modified).fromNow()); +const modTime = computed(() => + req.value + ? new Date(Date.parse(req.value.modified)).toLocaleString() + : new Date().toLocaleString() +); - this.$store.commit("showHover", { - prompt: "download", - confirm: (format) => { - this.$store.commit("closeHovers"); - - let files = []; - - for (let i of this.selected) { - files.push(this.req.items[i].path); - } - - api.download(format, this.hash, this.token, ...files); - }, - }); - }, - linkSelected: function () { - return this.isSingleFile() - ? api.getDownloadURL({ - hash: this.hash, - path: this.req.items[this.selected[0]].path, - }) - : ""; - }, - }, +// Functions +const base64 = (name: any) => Base64.encodeURI(name); +const play = () => { + if (tag.value) { + audio.value?.pause(); + tag.value = false; + } else { + audio.value?.play(); + tag.value = true; + } }; -</script> -<style scoped> - #listing.list{ - height: auto; +const fetchData = async () => { + fileStore.reload = false; + fileStore.selected = []; + fileStore.multiple = false; + layoutStore.closeHovers(); + + // Set loading to true and reset the error. + layoutStore.loading = true; + error.value = null; + if (password.value !== "") { + attemptedPasswordLogin.value = true; } - #shareList{ - overflow-y: scroll; + + let url = route.path; + if (url === "") url = "/"; + if (url[0] !== "/") url = "/" + url; + + try { + const file = await api.fetch(url, password.value); + file.hash = hash.value; + + token.value = file.token || ""; + + fileStore.updateRequest(file); + document.title = `${file.name} - ${document.title}`; + } catch (err) { + if (err instanceof Error) { + error.value = err; + } + } finally { + layoutStore.loading = false; } - @media (min-width: 930px) { - #shareList{ - height: calc(100vh - 9.8em); - overflow-y: auto; +}; + +const keyEvent = (event: KeyboardEvent) => { + if (event.key === "Escape") { + // If we're on a listing, unselect all + // files and folders. + if (fileStore.selectedCount > 0) { + fileStore.selected = []; } } -</style> \ No newline at end of file +}; + +const toggleMultipleSelection = () => { + fileStore.toggleMultiple(); +}; + +const isSingleFile = () => + fileStore.selectedCount === 1 && + !req.value?.items[fileStore.selected[0]].isDir; + +const download = () => { + if (!req.value) return false; + + if (isSingleFile()) { + api.download( + null, + hash.value, + token.value, + req.value.items[fileStore.selected[0]].path + ); + return true; + } + + layoutStore.showHover({ + prompt: "download", + confirm: (format: DownloadFormat) => { + if (req.value === null) return false; + layoutStore.closeHovers(); + + let files: string[] = []; + + for (let i of fileStore.selected) { + files.push(req.value.items[i].path); + } + + api.download(format, hash.value, token.value, ...files); + return true; + }, + }); + + return true; +}; + +const linkSelected = () => { + return isSingleFile() && req.value + ? api.getDownloadURL({ + ...req.value, + hash: hash.value, + path: req.value.items[fileStore.selected[0]].path, + }) + : ""; +}; + +const copyToClipboard = (text: string) => { + copy(text).then( + () => { + // clipboard successfully set + $showSuccess(t("success.linkCopied")); + }, + () => { + // clipboard write failed + } + ); +}; + +onMounted(async () => { + // Created + hash.value = route.params.path[0]; + window.addEventListener("keydown", keyEvent); + await fetchData(); +}); + +onBeforeUnmount(() => { + // Destroyed + window.removeEventListener("keydown", keyEvent); +}); +</script> + +<style scoped> +#listing.list { + height: auto; +} + +#shareList { + overflow-y: scroll; +} + +@media (min-width: 930px) { + #shareList { + height: calc(100vh - 9.8em); + overflow-y: auto; + } +} +</style> diff --git a/frontend/src/views/files/Editor.vue b/frontend/src/views/files/Editor.vue index f4871615..1654937e 100644 --- a/frontend/src/views/files/Editor.vue +++ b/frontend/src/views/files/Editor.vue @@ -1,156 +1,129 @@ <template> - <div - id="editor-container" - @touchmove.prevent.stop - @wheel.prevent.stop - > + <div id="editor-container" @touchmove.prevent.stop @wheel.prevent.stop> <header-bar> - <action icon="close" :label="$t('buttons.close')" @action="close()" /> - <title>{{ req.name }} + + {{ fileStore.req?.name ?? "" }} - +
- diff --git a/frontend/src/views/files/FileListing.vue b/frontend/src/views/files/FileListing.vue new file mode 100644 index 00000000..a26ac67e --- /dev/null +++ b/frontend/src/views/files/FileListing.vue @@ -0,0 +1,960 @@ +