From 2e637dcca3af21e90e45277a807ced791a799c0a Mon Sep 17 00:00:00 2001
From: Alicia Sykes
Date: Wed, 21 Jul 2021 17:24:15 +0100
Subject: [PATCH 01/43] :octocat: Adds action to label issues raised by
sponsors as high priority
---
.github/workflows/label-sponsors.yml | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
create mode 100644 .github/workflows/label-sponsors.yml
diff --git a/.github/workflows/label-sponsors.yml b/.github/workflows/label-sponsors.yml
new file mode 100644
index 00000000..f7d129bd
--- /dev/null
+++ b/.github/workflows/label-sponsors.yml
@@ -0,0 +1,18 @@
+# Adds a label to any issues raised by a sponsor of Lissy93/Dashy
+# In order to allow their request can be prioritized
+name: Label sponsors
+on:
+ pull_request:
+ types: [opened]
+ issues:
+ types: [opened]
+jobs:
+ build:
+ name: is-sponsor-label
+ runs-on: ubuntu-latest
+ steps:
+ - uses: JasonEtco/is-sponsor-label-action@v1
+ with:
+ label: Priority Request - Sponsor ๐
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
From 192bee0152e6fbf31b114eeb977d735bad722b07 Mon Sep 17 00:00:00 2001
From: Alicia Sykes
Date: Wed, 21 Jul 2021 17:26:30 +0100
Subject: [PATCH 02/43] :octocat: Updates action that generates Thank you to
contributors of Dashy
---
.github/workflows/generate-contributors.yml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/.github/workflows/generate-contributors.yml b/.github/workflows/generate-contributors.yml
index f2416011..02fe2e6d 100644
--- a/.github/workflows/generate-contributors.yml
+++ b/.github/workflows/generate-contributors.yml
@@ -1,3 +1,5 @@
+# Generates an image showing profile picture of everyone who'se contributed to Dashy
+# Which is embeded in the Readme Credits section, as they deserve some recognition
name: Contributors
on:
schedule:
From a87dab117af0484e8873a7e8e24ad331d8cfc425 Mon Sep 17 00:00:00 2001
From: Alicia Sykes
Date: Wed, 21 Jul 2021 17:51:57 +0100
Subject: [PATCH 03/43] =?UTF-8?q?=F0=9F=91=B7=20Adds=20a=20GH=20action=20t?=
=?UTF-8?q?o=20lint=20all=20merged=20code?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.github/workflows/blank.yml | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
create mode 100644 .github/workflows/blank.yml
diff --git a/.github/workflows/blank.yml b/.github/workflows/blank.yml
new file mode 100644
index 00000000..d5be4189
--- /dev/null
+++ b/.github/workflows/blank.yml
@@ -0,0 +1,21 @@
+# Lints code merged into master branch
+name: Lint Code Base
+on:
+ push:
+ pull_request:
+ branches: [master]
+jobs:
+ build:
+ name: Lint Code Base
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout Code
+ uses: actions/checkout@v2
+ with:
+ fetch-depth: 0
+ - name: Lint Code Base
+ uses: github/super-linter@v4
+ env:
+ VALIDATE_ALL_CODEBASE: false
+ DEFAULT_BRANCH: master
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
From c849a53a3d83bd8a11caf76767d985e17b7dce85 Mon Sep 17 00:00:00 2001
From: Alicia Sykes
Date: Wed, 21 Jul 2021 17:57:15 +0100
Subject: [PATCH 04/43] =?UTF-8?q?=F0=9F=91=B7=20Adds=20an=20action=20to=20?=
=?UTF-8?q?cache=20artifacts,=20to=20speed=20up=20build?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.github/workflows/cache-artifacts.yml | 13 +++++++++++++
1 file changed, 13 insertions(+)
create mode 100644 .github/workflows/cache-artifacts.yml
diff --git a/.github/workflows/cache-artifacts.yml b/.github/workflows/cache-artifacts.yml
new file mode 100644
index 00000000..c418519b
--- /dev/null
+++ b/.github/workflows/cache-artifacts.yml
@@ -0,0 +1,13 @@
+# Caches artifacts, including NPM dependencies, to speed up build times
+name: Caching Primes
+on: push
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/cache@v2
+ with:
+ path: ~/.npm
+ key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
+ restore-keys: |
+ ${{ runner.os }}-node-
From 7a9df638314b451fd25c2aab111feef57c621e66 Mon Sep 17 00:00:00 2001
From: Alicia Sykes
Date: Wed, 21 Jul 2021 17:59:35 +0100
Subject: [PATCH 05/43] =?UTF-8?q?=F0=9F=91=B7=20Adds=20action=20to=20get?=
=?UTF-8?q?=20the=20compressed=20size=20of=20a=20PR?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.github/workflows/get-size.yml | 9 +++++++++
1 file changed, 9 insertions(+)
create mode 100644 .github/workflows/get-size.yml
diff --git a/.github/workflows/get-size.yml b/.github/workflows/get-size.yml
new file mode 100644
index 00000000..2b602fd0
--- /dev/null
+++ b/.github/workflows/get-size.yml
@@ -0,0 +1,9 @@
+# Adds a comment to new PRs, showing the compressed size and size difference of new code
+name: Compressed Size
+on: [pull_request]
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - uses: preactjs/compressed-size-action@v2
From b8ef43387f3bddfa37100fe71ad91f79a59a9253 Mon Sep 17 00:00:00 2001
From: Alicia Sykes
Date: Wed, 21 Jul 2021 18:05:16 +0100
Subject: [PATCH 06/43] =?UTF-8?q?=F0=9F=91=B7=20Adds=20GH=20action=20to=20?=
=?UTF-8?q?inspect=20changes=20to=20yarn.lock?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../workflows/dependency-updates-summary.yml | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
create mode 100644 .github/workflows/dependency-updates-summary.yml
diff --git a/.github/workflows/dependency-updates-summary.yml b/.github/workflows/dependency-updates-summary.yml
new file mode 100644
index 00000000..145064a5
--- /dev/null
+++ b/.github/workflows/dependency-updates-summary.yml
@@ -0,0 +1,18 @@
+# Shows changes to yarn.lock in PR comment
+# Useful for easily understanding dependency changes
+name: Yarn Lock Changes
+on: [pull_request]
+jobs:
+ check:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ - name: Yarn Lock Changes
+ uses: Simek/yarn-lock-changes@main
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ collapsibleThreshold: '25'
+ failOnDowngrade: 'false'
+ path: 'yarn.lock'
+ updateComment: 'true'
From 67711f5b33f655e08397a0b7c867251657308e8d Mon Sep 17 00:00:00 2001
From: Alicia Sykes
Date: Thu, 22 Jul 2021 14:16:56 +0100
Subject: [PATCH 07/43] =?UTF-8?q?=F0=9F=97=91=EF=B8=8F=20Deletes=20user-gu?=
=?UTF-8?q?ide.md=20-=20I=20don't=20think=20it=20was=20helpful=20to=20anyo?=
=?UTF-8?q?ne?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/user-guide.md | 125 ---------------------------------------------
1 file changed, 125 deletions(-)
delete mode 100644 docs/user-guide.md
diff --git a/docs/user-guide.md b/docs/user-guide.md
deleted file mode 100644
index 60d2c549..00000000
--- a/docs/user-guide.md
+++ /dev/null
@@ -1,125 +0,0 @@
-## User Guide
-
-This article outlines how to use the application. If you are instead looking for deployment instructions, see [Deployment](/docs/deployment.md) and [Configuring](/docs/configuring.md)
-
-### Contents
-- [Searching](#searching)
-- [Keyboard Shortcuts](#keyboard-shortcuts)
-- [Theme Switching](#theme-switching)
-- [Visual Options](#visual-options)
-- [Opening Items](#opening-items)
-- [Sections and Items](#sections-and-items)
-- [Icons](#icons)
-- [Metadata](#metadata)
-- [Editing Config](#editing-config)
-- [Managing Config Data](#managing-config-data)
-
-### Searching
-
-A key requirement for any start page is being able to quickly and effectively find the item your looking for. For Dashy, a lot of thought was put into the most intuitive method to filter links.
-
-To start searching, simply start typing. Your search term will show up in the filter field in the upper-left section, and results will be filtered accordingly.
-
-The following properties are used to filter items by:
-- Title / Item name
-- Provider - The optional field, indicating the provider of a given app or service
-- URL - Only the base URL is searched, the protocol and parameters are omitted
-- Description
-
-**[โฌ๏ธ Back to Top](#user-guide)**
-
-### Keyboard Shortcuts
-
-Many people find using the keyboard significantly more efficient than having to reach for the mouse. And so Dashy has a series of keybindings and shortcuts to enable you to navigate through items quickly.
-
-Once you've searched for a given item, you can then tab through the list (or Shift + Tab to go backwards) until you've found the item you're looking for. You can also use the arrow keys to navigate up, down, left and right through the grid. To launch an item, just hit enter. You can also open an item in a new tab with Ctrl + Enter, or open the item in a pop-up modal with Alt + Enter. To close an open popup item, or any open menus, just hit Esc.
-
-**[โฌ๏ธ Back to Top](#user-guide)**
-
-### Theme Switching
-
-You can change the current theme using the dropdown menu in the upper-right-hand quadrant. Your selected theme will be stored in local storage, and applied next time you load the page. For more information on customizing the look and feel of Dashy, see [Themeing Docs](/docs/theming.md)
-
-**[โฌ๏ธ Back to Top](#user-guide)**
-
-### Visual Options
-
-There are several pre-built layout options to choose from depending on your requirements. Like the theme these options will be remembered in browser storage and applied on load.
-
-The first is Layout. This determines how sections are organised on the screen. This can be set to either grid (auto), horizontal or vertical. Vertical layout will cause each section to take up the full width of the screen, and minimum height. Horizontal is the opposite, where every section is on the same row, and spans the full height of the screen.
-
-Next there's icon size. This changes the size of the item and it's icon. It can be useful to use a smaller size when there are a lot of items, or a larger size if you commonly access Dashy from a touch screen tablet.
-
-
-
-**[โฌ๏ธ Back to Top](#user-guide)**
-
-### Opening Items
-
-There are three methods of opening items. Clicking (or hitting Enter on a selected item) will use the default method, specified in the config file, under `item.target`. You can use Ctrl + Click or Ctrl + Enter to open and item in a new tab.
-
-You can also use Alt + Click or Alt + Enter, to open an item in a popup window. You can use drag the tab in the bottom-right corner of the pop-up to resize it. To close an item opened in a pop-up, click the close button, use the Esc key, or click anywhere outside the popup.
-
-
-
-**[โฌ๏ธ Back to Top](#user-guide)**
-
-### Sections and Items
-
-The main content in Dashy is defined as an array of sections, each of which contains an array of items. You can have as many sections as you need, and each section can have an unlimited amount of items. If you are using the grid layout, then it works better, visually if each of your sections have similar number of items.
-
-Sections are collapsible, which is useful for those sections which contain less used applications, or are particularly long. The collapse state of a given section is remembered (stored in local storage), and applied on load.
-
-Sections also have several optional properties, which are specified under `section.displayData`, and let you set certain display settings. A full list of options can be found in the [configuring docs](/docs/configuring.md).
-
-
-```
- โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
- โ Title โ
- โ Sub-Title/ Description Link 1 Link 2 โ
- โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโค
- โ Search โ โ Display Options โ
- โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโค
- โ โ
- โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
- โ โ Section 1 โ โ Section 2 โ โ Section 3 โ โ
- โ โโโโโโโโโโโโโโโโค โโโโโโโโโโโโโโโโค โโโโโโโโโโโโโโโโค โ
- โ โ โโโโโ โโโโโ โ โ โโโโโ โโโโโ โ โ โโโโโ โโโโโ โ โ
- โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ
- โ โ โโโโโ โโโโโ โ โ โโโโโ โโโโโ โ โ โโโโโ โโโโโ โ โ
- โ โ โโโโโ โโโโโ โ โ โโโโโ โโโโโ โ โ โโโโโ โโโโโ โ โ
- โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ
- โ โ โโโโโ โโโโโ โ โ โโโโโ โโโโโ โ โ โโโโโ โโโโโ โ โ
- โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
- โ โ
- โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
- โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
-```
-
-**[โฌ๏ธ Back to Top](#user-guide)**
-
-### Icons
-
-Both sections and items can have an icon associated with them. There are several options for specifying icons. You can let the icon be automatically resolved and fetched from the items associated URL, by setting it's value to `favicon`. You can use a font-awesome icon, by specifying it's name and category, e.g. `fas fa-rocket`. Or you can pass in a URL, either to a locally hosted or remote image. For local images, you can put them in `./public/item-icons/` and then reference them just by the file name.
-
-**[โฌ๏ธ Back to Top](#user-guide)**
-
-### Metadata
-
-Basic site information, displayed in the header and footer can be set from the UI. This includes: title, sub-title, footer text, and nav-bar links. Click the wrench icon in the upper-right corner, then go to the Site Metadata tab. Fill in your new data, and hit save. The page will be refreshed, and your changes will appear. These settings are stored under `pageInfo` in the config, and if set through the UI, will only be applied locally.
-
-**[โฌ๏ธ Back to Top](#user-guide)**
-
-### Editing Config
-
-The config file can be edited from the UI, but take note that changes are only applied locally. You will need to either export this data into your conf.yml, or use the cloud backup and sync feature.
-
-To make changes to the config file, click the wrench icon in the upper-left hand corner. Then go to the Config tab. Here you'll find a JSON editor. You can switch from tree mode to plain-text mode if you find that easier. And parsing or validation issues will be displayed at the bottom of the screen.
-
-**[โฌ๏ธ Back to Top](#user-guide)**
-
-### Managing Config Data
-
-You can download, backup or reset local config data directly from the UI. To apply config to Dashy on other devices, you will need to either download the config file, or use the cloud backup and sync feature. To download config, click the Wrench icon, in the upper-right hand corner, and then go to Download. Similarly, for cloud backup, click the Cloud icon in the upper right corner, and fill in the required fields. For detailed instructions, and technical information about backup and sync, please see the [Cloud Backup Documentation](/docs/backup-restore.md). You can also Reset all local settings from the config menu. This will not effect any data saved in your systems `conf.yml` file.
-
-**[โฌ๏ธ Back to Top](#user-guide)**
From 4c6ba0a81722ef7415d1eeaaff26a51703bded73 Mon Sep 17 00:00:00 2001
From: Alicia Sykes
Date: Thu, 22 Jul 2021 14:19:45 +0100
Subject: [PATCH 08/43] =?UTF-8?q?=F0=9F=91=B7=20Fixes=20incorrect=20name?=
=?UTF-8?q?=20in=20GH=20action?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.github/workflows/cache-artifacts.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/cache-artifacts.yml b/.github/workflows/cache-artifacts.yml
index c418519b..498ce16e 100644
--- a/.github/workflows/cache-artifacts.yml
+++ b/.github/workflows/cache-artifacts.yml
@@ -1,5 +1,5 @@
# Caches artifacts, including NPM dependencies, to speed up build times
-name: Caching Primes
+name: Caching Atrifacts
on: push
jobs:
build:
From b8c108504443ce66082792a4567755f1c27af3d1 Mon Sep 17 00:00:00 2001
From: Alicia Sykes
Date: Thu, 22 Jul 2021 22:19:07 +0100
Subject: [PATCH 09/43] =?UTF-8?q?=E2=9E=95=20Adds=20i18n=20dependency,=20f?=
=?UTF-8?q?or=20multi-language=20support?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
package.json | 3 ++-
yarn.lock | 5 +++++
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/package.json b/package.json
index 95db1abe..1a2fbf4f 100644
--- a/package.json
+++ b/package.json
@@ -31,6 +31,7 @@
"v-tooltip": "^2.1.3",
"vue": "^2.6.10",
"vue-cli-plugin-yaml": "^1.0.2",
+ "vue-i18n": "^8.25.0",
"vue-js-modal": "^2.0.0-rc.6",
"vue-material-tabs": "^0.1.2",
"vue-prism-editor": "^1.2.2",
@@ -87,4 +88,4 @@
"> 1%",
"last 2 versions"
]
-}
\ No newline at end of file
+}
diff --git a/yarn.lock b/yarn.lock
index 440b69bd..d534c905 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -8866,6 +8866,11 @@ vue-hot-reload-api@^2.3.0:
resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2"
integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==
+vue-i18n@^8.25.0:
+ version "8.25.0"
+ resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-8.25.0.tgz#1037d9295fa2845a230b771de473481edb2cfc4c"
+ integrity sha512-ynhcL+PmTxuuSE1T10htiSXzjBozxYIE3ffbM1RfgAkVbr/v1SP+9Mi/7/uv8ZVV1yGuKjFAYp9BXq+X7op6MQ==
+
vue-js-modal@^2.0.0-rc.6:
version "2.0.0-rc.6"
resolved "https://registry.yarnpkg.com/vue-js-modal/-/vue-js-modal-2.0.0-rc.6.tgz#2fd596c79a713d2cbf447150abb5fefce65efd2d"
From 0606cb07aec1219cb450066877482f90e71e7217 Mon Sep 17 00:00:00 2001
From: Alicia Sykes
Date: Thu, 22 Jul 2021 22:20:03 +0100
Subject: [PATCH 10/43] :sparkles: Implements localisation
---
src/assets/locales/en-GB.json | 4 ++++
src/main.js | 29 +++++++++++++++++++++++------
2 files changed, 27 insertions(+), 6 deletions(-)
create mode 100644 src/assets/locales/en-GB.json
diff --git a/src/assets/locales/en-GB.json b/src/assets/locales/en-GB.json
new file mode 100644
index 00000000..0288acea
--- /dev/null
+++ b/src/assets/locales/en-GB.json
@@ -0,0 +1,4 @@
+{
+ "test": "Hello World!",
+ "test2": "Im a fallback"
+}
\ No newline at end of file
diff --git a/src/main.js b/src/main.js
index ca08f56d..1004cfc1 100644
--- a/src/main.js
+++ b/src/main.js
@@ -1,18 +1,25 @@
+// Import core framework and essential utils
import Vue from 'vue';
+import VueI18n from 'vue-i18n'; // i18n for localization
-/* Import component Vue plugins, used throughout the app */
+// Import component Vue plugins, used throughout the app
import VTooltip from 'v-tooltip'; // A Vue directive for Popper.js, tooltip component
import VModal from 'vue-js-modal'; // Modal component
import VSelect from 'vue-select'; // Select dropdown component
import VTabs from 'vue-material-tabs'; // Tab view component, used on the config page
import Toasted from 'vue-toasted'; // Toast component, used to show confirmation notifications
-import { toastedOptions } from '@/utils/defaults';
+// Import base Dashy components and utils
import Dashy from '@/App.vue';
import router from '@/router';
import registerServiceWorker from '@/registerServiceWorker';
import clickOutside from '@/utils/ClickOutside';
+import { toastedOptions } from '@/utils/defaults';
+// Locales - Import translation files here!
+import en from '@/assets/locales/en-GB.json';
+
+Vue.use(VueI18n);
Vue.use(VTooltip);
Vue.use(VModal);
Vue.use(VTabs);
@@ -22,10 +29,20 @@ Vue.directive('clickOutside', clickOutside);
Vue.config.productionTip = false;
+// Setup translations
+const messages = { en }; // <-- Add new language files here!
+
+const i18n = new VueI18n({
+ locale: 'en',
+ fallbackLocale: 'en',
+ messages,
+});
+
// Register Service Worker
registerServiceWorker();
-new Vue({
- router,
- render: (awesome) => awesome(Dashy),
-}).$mount('#app');
+// Render function
+const render = (awesome) => awesome(Dashy);
+
+// All done, now just initialize main Vue app!
+new Vue({ router, render, i18n }).$mount('#app');
From e02d33b0dfdd78e377beed2f3c36d4871e06fc8b Mon Sep 17 00:00:00 2001
From: Alicia Sykes
Date: Thu, 22 Jul 2021 22:33:47 +0100
Subject: [PATCH 11/43] :globe_with_meridians: Adds en translations for Home
and Search components
---
src/assets/locales/en-GB.json | 11 +++++++++--
src/components/Settings/SearchBar.vue | 6 +++---
src/views/Home.vue | 2 +-
3 files changed, 13 insertions(+), 6 deletions(-)
diff --git a/src/assets/locales/en-GB.json b/src/assets/locales/en-GB.json
index 0288acea..35e86637 100644
--- a/src/assets/locales/en-GB.json
+++ b/src/assets/locales/en-GB.json
@@ -1,4 +1,11 @@
{
- "test": "Hello World!",
- "test2": "Im a fallback"
+ "home": {
+ "no-results": "No Search Results",
+ "no-data": "No Data Configured"
+ },
+ "search": {
+ "search-label": "Search",
+ "search-placeholder": "Start typing to filter",
+ "clear-search-tooltip": "Clear Search"
+ }
}
\ No newline at end of file
diff --git a/src/components/Settings/SearchBar.vue b/src/components/Settings/SearchBar.vue
index 160edbc3..a78976c6 100644
--- a/src/components/Settings/SearchBar.vue
+++ b/src/components/Settings/SearchBar.vue
@@ -1,16 +1,16 @@
diff --git a/src/views/Home.vue b/src/views/Home.vue
index 4bd0494b..53425eed 100644
--- a/src/views/Home.vue
+++ b/src/views/Home.vue
@@ -34,7 +34,7 @@
@@ -76,6 +81,7 @@ import 'highlight.js/styles/mono-blue.css';
import JsonToYaml from '@/utils/JsonToYaml';
import { localStorageKeys, modalNames } from '@/utils/defaults';
+import { getUsersLanguage } from '@/utils/ConfigHelpers';
import JsonEditor from '@/components/Configuration/JsonEditor';
import CustomCssEditor from '@/components/Configuration/CustomCss';
import RebuildApp from '@/components/Configuration/RebuildApp';
@@ -86,6 +92,7 @@ import EditIcon from '@/assets/interface-icons/config-edit-json.svg';
import CustomCssIcon from '@/assets/interface-icons/config-custom-css.svg';
import CloudIcon from '@/assets/interface-icons/cloud-backup-restore.svg';
import RebuildIcon from '@/assets/interface-icons/application-rebuild.svg';
+import LanguageIcon from '@/assets/interface-icons/config-language.svg';
import IconAbout from '@/assets/interface-icons/application-about.svg';
export default {
@@ -117,6 +124,7 @@ export default {
EditIcon,
CloudIcon,
CustomCssIcon,
+ LanguageIcon,
RebuildIcon,
IconAbout,
},
@@ -135,6 +143,9 @@ export default {
openCloudSync() {
this.$modal.show(modalNames.CLOUD_BACKUP);
},
+ openLanguageSwitchModal() {
+ this.$modal.show(modalNames.LANG_SWITCHER);
+ },
copyConfigToClipboard() {
navigator.clipboard.writeText(this.jsonParser(this.config));
this.$toasted.show(this.$t('config.data-copied-msg'));
@@ -168,6 +179,10 @@ export default {
const highlighted = hljs.highlight(this.jsonParser(this.config), { language: 'yaml' }).value;
document.getElementById('conf-yaml').innerHTML = highlighted;
},
+ getLanguage() {
+ const lang = getUsersLanguage();
+ return lang ? `${lang.flag} ${lang.name}` : '';
+ },
},
mounted() {
this.initiateStntaxHighlighter();
@@ -217,10 +232,11 @@ a.config-button, button.config-button {
}
}
-p.app-version {
+p.app-version, p.language {
margin: 0.5rem auto;
font-size: 1rem;
color: var(--transparent-white-50);
+ cursor: default;
}
div.code-container {
diff --git a/src/components/Settings/ConfigLauncher.vue b/src/components/Settings/ConfigLauncher.vue
index 272cf432..3eca1fda 100644
--- a/src/components/Settings/ConfigLauncher.vue
+++ b/src/components/Settings/ConfigLauncher.vue
@@ -20,6 +20,13 @@
@closed="$emit('modalChanged', false)" classes="dashy-modal">
+
+
+
+
+
+
@@ -29,6 +36,7 @@ import IconSpanner from '@/assets/interface-icons/config-editor.svg';
import IconCloud from '@/assets/interface-icons/cloud-backup-restore.svg';
import ConfigContainer from '@/components/Configuration/ConfigContainer';
import CloudBackupRestore from '@/components/Configuration/CloudBackupRestore';
+import LanguageSwitcher from '@/components/Settings/LanguageSwitcher';
import { topLevelConfKeys, localStorageKeys, modalNames } from '@/utils/defaults';
export default {
@@ -43,6 +51,7 @@ export default {
IconCloud,
ConfigContainer,
CloudBackupRestore,
+ LanguageSwitcher,
},
props: {
sections: Array,
From 1faa36f7df0583cdd45fc0c85052f9faf3f8e6d7 Mon Sep 17 00:00:00 2001
From: Alicia Sykes
Date: Sat, 24 Jul 2021 21:38:38 +0100
Subject: [PATCH 28/43] :zap: Writes handler util for managing languages
---
src/utils/languages.js | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/src/utils/languages.js b/src/utils/languages.js
index 1819c83c..5f43353a 100644
--- a/src/utils/languages.js
+++ b/src/utils/languages.js
@@ -1,14 +1,21 @@
// Locales - Import translation files here!
-import enGB from '@/assets/locales/en-GB.json';
+import en from '@/assets/locales/en.json';
+import de from '@/assets/locales/de.json';
// Language data - Add your country name, locale code and imported file here
export const languages = [
{
name: 'English',
- code: 'en-GB',
- locale: enGB,
+ code: 'en',
+ locale: en,
flag: '๐ฌ๐ง',
},
+ {
+ name: 'German',
+ code: 'de',
+ locale: de,
+ flag: '๐ฉ๐ช',
+ },
// Including:
// name - Human readable name for your language
// code - ISO language code
From 075e63f9b5130aa71e0cf44dff3b700bb7324956 Mon Sep 17 00:00:00 2001
From: Alicia Sykes
Date: Sat, 24 Jul 2021 21:39:14 +0100
Subject: [PATCH 29/43] :fire: Adds language into Config handlers
---
src/utils/ConfigAccumalator.js | 3 +++
src/utils/ConfigHelpers.js | 20 +++++++++++++++++++-
2 files changed, 22 insertions(+), 1 deletion(-)
diff --git a/src/utils/ConfigAccumalator.js b/src/utils/ConfigAccumalator.js
index a93efb51..1237897c 100644
--- a/src/utils/ConfigAccumalator.js
+++ b/src/utils/ConfigAccumalator.js
@@ -11,6 +11,7 @@ import {
pageInfo as defaultPageInfo,
iconSize as defaultIconSize,
layout as defaultLayout,
+ language as defaultLanguage,
} from '@/utils/defaults';
import conf from '../../public/conf.yml';
@@ -33,6 +34,8 @@ export default class ConfigAccumulator {
|| appConfigFile.layout || defaultLayout;
usersAppConfig.iconSize = localStorage[localStorageKeys.ICON_SIZE]
|| appConfigFile.iconSize || defaultIconSize;
+ usersAppConfig.language = localStorage[localStorageKeys.LANGUAGE]
+ || appConfigFile.language || defaultLanguage;
return usersAppConfig;
}
diff --git a/src/utils/ConfigHelpers.js b/src/utils/ConfigHelpers.js
index a1848b66..d282c297 100644
--- a/src/utils/ConfigHelpers.js
+++ b/src/utils/ConfigHelpers.js
@@ -1,5 +1,11 @@
import ConfigAccumulator from '@/utils/ConfigAccumalator';
-import { visibleComponents, localStorageKeys, theme as defaultTheme } from '@/utils/defaults';
+import { languages } from '@/utils/languages';
+import {
+ visibleComponents,
+ localStorageKeys,
+ theme as defaultTheme,
+ language as defaultLanguage,
+} from '@/utils/defaults';
/**
* Initiates the Accumulator class and generates a complete config object
@@ -74,3 +80,15 @@ export const getCustomKeyShortcuts = () => {
});
return results.flat();
};
+
+/**
+ * Gets the users chosen language. Defaults to English.
+ * @returns {object} Language, including code, name and flag
+ */
+export const getUsersLanguage = () => {
+ const langCode = localStorage[localStorageKeys.LANGUAGE]
+ || config.appConfig.language
+ || defaultLanguage;
+ const langObj = languages.find(lang => lang.code === langCode);
+ return langObj;
+};
From b1f176260b8615da91bbcf7930e7a2a2e3e7f961 Mon Sep 17 00:00:00 2001
From: Alicia Sykes
Date: Sat, 24 Jul 2021 21:40:21 +0100
Subject: [PATCH 30/43] :world_map: Adds default value for language, English
---
src/utils/defaults.js | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/utils/defaults.js b/src/utils/defaults.js
index bde25c4c..d146508c 100644
--- a/src/utils/defaults.js
+++ b/src/utils/defaults.js
@@ -11,6 +11,8 @@ module.exports = {
},
/* Default appConfig to be used, if user does not specify their own */
appConfig: {},
+ /* Default language code */
+ language: 'en',
/* Default icon size to be applied on initial load */
iconSize: 'medium',
/* Default layout to be applied on initial load */
@@ -58,6 +60,7 @@ module.exports = {
},
/* Key names for local storage identifiers */
localStorageKeys: {
+ LANGUAGE: 'language',
HIDE_WELCOME_BANNER: 'hideWelcomeHelpers',
LAYOUT_ORIENTATION: 'layoutOrientation',
COLLAPSE_STATE: 'collapseState',
@@ -87,6 +90,7 @@ module.exports = {
REBUILD_APP: 'REBUILD_APP',
THEME_MAKER: 'THEME_MAKER',
ABOUT_APP: 'ABOUT_APP',
+ LANG_SWITCHER: 'LANG_SWITCHER',
},
/* Key names for the top-level objects in conf.yml */
topLevelConfKeys: {
From a18574dcd670ea0a990c36465c036e20caa198d9 Mon Sep 17 00:00:00 2001
From: Alicia Sykes
Date: Sat, 24 Jul 2021 21:41:16 +0100
Subject: [PATCH 31/43] :sparkles: Auto loads users prefered language
---
src/App.vue | 21 +++++++++++++++++++++
src/main.js | 6 +++---
2 files changed, 24 insertions(+), 3 deletions(-)
diff --git a/src/App.vue b/src/App.vue
index 806c33e4..775769d9 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -70,9 +70,30 @@ export default {
this.isLoading = false;
}
},
+ /* Checks local storage, then appConfig, and if a custom language is specified, its applied */
+ applyLanguage() {
+ // If user has specified a language, then check and apply it
+ const lang = localStorage[localStorageKeys.LANGUAGE] || this.appConfig.language;
+ if (lang && this.$i18n.availableLocales.includes(lang)) {
+ this.$i18n.locale = lang;
+ } else {
+ // Attempt to apply language automatically, based on their system language
+ let locale;
+ const usersBorwserLang1 = window.navigator.language || ''; // e.g. en-GB or or ''
+ const usersBorwserLang2 = usersBorwserLang1.split('-')[0]; // e.g. en or undefined
+ const availibleLocales = this.$i18n.availableLocales;
+ if (availibleLocales.includes(usersBorwserLang1)) {
+ locale = usersBorwserLang1;
+ } else if (availibleLocales.includes(usersBorwserLang2)) {
+ locale = usersBorwserLang2;
+ }
+ if (locale) this.$i18n.locale = locale; // If lanuage was found, apply it
+ }
+ },
},
/* When component mounted, hide splash and initiate the injection of custom styles */
mounted() {
+ this.applyLanguage();
this.hideSplash();
if (this.appConfig.customCss) {
const cleanedCss = this.appConfig.customCss.replace(/<\/?[^>]+(>|$)/g, '');
diff --git a/src/main.js b/src/main.js
index 6de769f3..7af5b0aa 100644
--- a/src/main.js
+++ b/src/main.js
@@ -14,7 +14,7 @@ import Dashy from '@/App.vue';
import router from '@/router';
import registerServiceWorker from '@/registerServiceWorker';
import clickOutside from '@/utils/ClickOutside';
-import { toastedOptions } from '@/utils/defaults';
+import { toastedOptions, language as defaultLanguage } from '@/utils/defaults';
import { messages } from '@/utils/languages';
Vue.use(VueI18n);
@@ -29,8 +29,8 @@ Vue.config.productionTip = false;
// Setup i18n translations
const i18n = new VueI18n({
- locale: 'en-GB',
- fallbackLocale: 'en-GB',
+ locale: defaultLanguage,
+ fallbackLocale: defaultLanguage,
messages,
});
From 107ead5046654072b7d254fde381c8eeb565f46c Mon Sep 17 00:00:00 2001
From: Alicia Sykes
Date: Sat, 24 Jul 2021 21:41:50 +0100
Subject: [PATCH 32/43] :lipstick: Updates styling for dropdown component
---
src/styles/global-styles.scss | 32 ++++++++++++++++++++++++++++++--
1 file changed, 30 insertions(+), 2 deletions(-)
diff --git a/src/styles/global-styles.scss b/src/styles/global-styles.scss
index 1855ad2b..a5b7c25e 100644
--- a/src/styles/global-styles.scss
+++ b/src/styles/global-styles.scss
@@ -24,8 +24,8 @@ html {
/* Overriding styles for the modal component */
.vm--modal, .dashy-modal {
box-shadow: 0 40px 70px -2px hsl(0deg 0% 0% / 60%), 1px 1px 6px var(--primary) !important;
- min-width: 300px;
- min-height: 500px;
+ min-width: 350px;
+ min-height: 200px;
}
.vm--overlay {
background: #00000080;
@@ -48,4 +48,32 @@ html {
background: var(--success) !important;
color: var(--white) !important;
font-size: 1.25rem !important;
+}
+
+/* v-select, dropdown styles */
+.v-select {
+ .vs__dropdown-toggle {
+ border-color: var(--primary);
+ background: var(--background);
+ cursor: pointer;
+ span.vs__selected {
+ color: var(--primary);
+ }
+ .vs__actions svg path { fill: var(--primary); }
+ }
+ ul.vs__dropdown-menu {
+ background: var(--background);
+ border-color: var(--primary);
+ li {
+ color: var(--primary);
+ &:hover {
+ color: var(--background);
+ background: var(--primary);
+ }
+ &.vs__dropdown-option--highlight {
+ color: var(--background);
+ background: var(--primary);
+ }
+ }
+ }
}
\ No newline at end of file
From bb82e312b01aa921fdd81671b502add7b401dfc9 Mon Sep 17 00:00:00 2001
From: Alicia Sykes
Date: Sat, 24 Jul 2021 21:42:37 +0100
Subject: [PATCH 33/43] :globe_with_meridians: Updates translations, adds test
German lang
---
src/assets/locales/de.json | 130 +++++++++++++++++++++
src/assets/locales/{en-GB.json => en.json} | 1 +
2 files changed, 131 insertions(+)
create mode 100644 src/assets/locales/de.json
rename src/assets/locales/{en-GB.json => en.json} (96%)
diff --git a/src/assets/locales/de.json b/src/assets/locales/de.json
new file mode 100644
index 00000000..d0303265
--- /dev/null
+++ b/src/assets/locales/de.json
@@ -0,0 +1,130 @@
+{
+ "home": {
+ "no-results": "___",
+ "no-data": "_________"
+ },
+ "search": {
+ "search-label": "______",
+ "search-placeholder": "_________",
+ "clear-search-tooltip": "______"
+ },
+ "login": {
+ "title": "___",
+ "username-label": "______",
+ "password-label": "______",
+ "login-button": "___",
+ "remember-me-label": "_________",
+ "remember-me-never": "___",
+ "remember-me-hour": "____",
+ "remember-me-day": "___",
+ "remember-me-week": "___"
+ },
+ "config": {
+ "main-tab": "______",
+ "view-config-tab": "_________",
+ "edit-config-tab": "_________",
+ "custom-css-tab": "_________",
+ "heading": "_________",
+ "download-config-button": "_________",
+ "edit-config-button": "_________",
+ "edit-css-button": "_________",
+ "cloud-sync-button": "_________",
+ "edit-cloud-sync-button": "_________",
+ "rebuild-app-button": "_________",
+ "change-language-button": "_________",
+ "reset-settings-button": "_________",
+ "app-info-button": "_________",
+ "app-version-note": "_________",
+ "backup-note": "_________________________________",
+ "reset-config-msg-l1": "_________________________________",
+ "reset-config-msg-l2": "_________________________________",
+ "reset-config-msg-l3": "_________________________________",
+ "data-cleared-msg": "_________",
+ "actions-label": "___",
+ "copy-config-label": "___",
+ "data-copied-msg": "_________",
+ "reset-config-label": "______",
+ "css-save-btn": "______",
+ "css-note-label": "___",
+ "css-note-l1": "____________________________________",
+ "css-note-l2": "____________________________________",
+ "css-note-l3": "____________________________________"
+ },
+ "settings": {
+ "theme-label": "___",
+ "layout-label": "___",
+ "layout-auto": "___",
+ "layout-horizontal": "______",
+ "layout-vertical": "______",
+ "item-size-label": "______",
+ "item-size-small": "______",
+ "item-size-medium": "______",
+ "item-size-large": "______",
+ "config-launcher-label": "______"
+ },
+ "theme-maker": {
+ "title": "_________",
+ "export-button": "_________",
+ "reset-button": "_________",
+ "show-all-button": "_________",
+ "save-button": "___",
+ "cancel-button": "___",
+ "saved-toast": "{theme} _________",
+ "copied-toast": "___ {theme} ___",
+ "reset-toast": "___ {theme} ___"
+ },
+ "config-editor": {
+ "save-location-label": "_________",
+ "location-local-label": "_________",
+ "location-disk-label": "_________",
+ "save-button": "_________",
+ "valid-label": "_________",
+ "status-success-msg": "_________",
+ "status-fail-msg": "_________",
+ "success-msg-disk": "_________",
+ "success-msg-local": "_________",
+ "success-note-l1": "_________",
+ "success-note-l2": "_________",
+ "success-note-l3": "__________________",
+ "error-msg-save-mode": "__________________",
+ "error-msg-cannot-save": "__________________",
+ "error-msg-bad-json": "__________________",
+ "warning-msg-validation": "__________________"
+ },
+ "app-rebuild": {
+ "title": "______",
+ "rebuild-note-l1": "__________________",
+ "rebuild-note-l2": "__________________",
+ "rebuild-note-l3": "__________________",
+ "rebuild-button": "_________",
+ "rebuilding-status-1": "______...",
+ "rebuilding-status-2": "_________",
+ "error-permission": "_________",
+ "success-msg": "_________",
+ "fail-msg": "_________",
+ "reload-note": "_________",
+ "reload-button": "______"
+ },
+ "cloud-sync": {
+ "title": "_________",
+ "intro-l1": "__________________",
+ "intro-l2": "__________________",
+ "intro-l3": "__________________",
+ "backup-title-setup": "_________",
+ "backup-title-update": "_________",
+ "password-label-setup": "_________",
+ "password-label-update": "_________",
+ "backup-button-setup": "______",
+ "backup-button-update": "______",
+ "backup-id-label": "______",
+ "backup-id-note": "__________________",
+ "restore-title": "_________",
+ "restore-id-label": "_________",
+ "restore-password-label": "______",
+ "restore-button": "______",
+ "backup-error-unknown": "_________",
+ "backup-error-password": "_________",
+ "backup-success-msg": "_________",
+ "restore-success-msg": "_________"
+ }
+}
\ No newline at end of file
diff --git a/src/assets/locales/en-GB.json b/src/assets/locales/en.json
similarity index 96%
rename from src/assets/locales/en-GB.json
rename to src/assets/locales/en.json
index e2cf9638..f8f74ee9 100644
--- a/src/assets/locales/en-GB.json
+++ b/src/assets/locales/en.json
@@ -31,6 +31,7 @@
"cloud-sync-button": "Enable Cloud Sync",
"edit-cloud-sync-button": "Edit Cloud Sync",
"rebuild-app-button": "Rebuild Application",
+ "change-language-button": "Change App Language",
"reset-settings-button": "Reset Local Settings",
"app-info-button": "App Info",
"app-version-note": "Dashy version",
From 914b381436cd199dcb1aaf7bbe65130528c8fc6e Mon Sep 17 00:00:00 2001
From: Alicia Sykes
Date: Sat, 24 Jul 2021 21:50:33 +0100
Subject: [PATCH 34/43] :card_file_box: Adds language attribute to appConfig,
so user can set language
---
docs/configuring.md | 1 +
src/utils/ConfigSchema.json | 4 ++++
2 files changed, 5 insertions(+)
diff --git a/docs/configuring.md b/docs/configuring.md
index 1216c6ab..f577197d 100644
--- a/docs/configuring.md
+++ b/docs/configuring.md
@@ -54,6 +54,7 @@ To disallow any changes from being written to disk via the UI config editor, set
**Field** | **Type** | **Required**| **Description**
--- | --- | --- | ---
+**`language`** | `string` | _Optional_ | The 2 (or 4-digit) [ISO 639-1 code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) for your language, e.g. `en` or `en-GB`. This must be a language that the app has already been [translated](https://github.com/Lissy93/dashy/tree/master/src/assets/locales) into. If your language is unavailable, Dashy will fallback to English. By default Dashy will attempt to auto-detect your language, although this may not work on some privacy browsers.
**`statusCheck`** | `boolean` | _Optional_ | When set to `true`, Dashy will ping each of your services and display their status as a dot next to each item. This can be overridden by setting `statusCheck` under each item. Defaults to `false`
**`statusCheckInterval`** | `boolean` | _Optional_ | The number of seconds between checks. If set to `0` then service will only be checked on initial page load, which is usually the desired functionality. If value is less than `10` you may experience a hit in performance. Defaults to `0`
**`backgroundImg`** | `string` | _Optional_ | Path to an optional full-screen app background image. This can be either remote (http) or local (/). Note that this will slow down initial load
diff --git a/src/utils/ConfigSchema.json b/src/utils/ConfigSchema.json
index 86615453..bb7a04d1 100644
--- a/src/utils/ConfigSchema.json
+++ b/src/utils/ConfigSchema.json
@@ -54,6 +54,10 @@
"type": "string",
"description": "A URL to an image asset to be displayed as background"
},
+ "language": {
+ "type": "string",
+ "description": "The ISO code of your desired language, must have translations present, check docs for more info"
+ },
"theme": {
"type": "string",
"default": "callisto",
From a8290996310b94598285121a2a1f024482fea8f7 Mon Sep 17 00:00:00 2001
From: Alicia Sykes
Date: Sat, 24 Jul 2021 21:57:45 +0100
Subject: [PATCH 35/43] :zap: Removed demo language, adds note when thres only
1 language
---
src/assets/locales/de.json | 130 -------------------
src/components/Settings/LanguageSwitcher.vue | 9 ++
src/utils/languages.js | 13 +-
3 files changed, 12 insertions(+), 140 deletions(-)
delete mode 100644 src/assets/locales/de.json
diff --git a/src/assets/locales/de.json b/src/assets/locales/de.json
deleted file mode 100644
index d0303265..00000000
--- a/src/assets/locales/de.json
+++ /dev/null
@@ -1,130 +0,0 @@
-{
- "home": {
- "no-results": "___",
- "no-data": "_________"
- },
- "search": {
- "search-label": "______",
- "search-placeholder": "_________",
- "clear-search-tooltip": "______"
- },
- "login": {
- "title": "___",
- "username-label": "______",
- "password-label": "______",
- "login-button": "___",
- "remember-me-label": "_________",
- "remember-me-never": "___",
- "remember-me-hour": "____",
- "remember-me-day": "___",
- "remember-me-week": "___"
- },
- "config": {
- "main-tab": "______",
- "view-config-tab": "_________",
- "edit-config-tab": "_________",
- "custom-css-tab": "_________",
- "heading": "_________",
- "download-config-button": "_________",
- "edit-config-button": "_________",
- "edit-css-button": "_________",
- "cloud-sync-button": "_________",
- "edit-cloud-sync-button": "_________",
- "rebuild-app-button": "_________",
- "change-language-button": "_________",
- "reset-settings-button": "_________",
- "app-info-button": "_________",
- "app-version-note": "_________",
- "backup-note": "_________________________________",
- "reset-config-msg-l1": "_________________________________",
- "reset-config-msg-l2": "_________________________________",
- "reset-config-msg-l3": "_________________________________",
- "data-cleared-msg": "_________",
- "actions-label": "___",
- "copy-config-label": "___",
- "data-copied-msg": "_________",
- "reset-config-label": "______",
- "css-save-btn": "______",
- "css-note-label": "___",
- "css-note-l1": "____________________________________",
- "css-note-l2": "____________________________________",
- "css-note-l3": "____________________________________"
- },
- "settings": {
- "theme-label": "___",
- "layout-label": "___",
- "layout-auto": "___",
- "layout-horizontal": "______",
- "layout-vertical": "______",
- "item-size-label": "______",
- "item-size-small": "______",
- "item-size-medium": "______",
- "item-size-large": "______",
- "config-launcher-label": "______"
- },
- "theme-maker": {
- "title": "_________",
- "export-button": "_________",
- "reset-button": "_________",
- "show-all-button": "_________",
- "save-button": "___",
- "cancel-button": "___",
- "saved-toast": "{theme} _________",
- "copied-toast": "___ {theme} ___",
- "reset-toast": "___ {theme} ___"
- },
- "config-editor": {
- "save-location-label": "_________",
- "location-local-label": "_________",
- "location-disk-label": "_________",
- "save-button": "_________",
- "valid-label": "_________",
- "status-success-msg": "_________",
- "status-fail-msg": "_________",
- "success-msg-disk": "_________",
- "success-msg-local": "_________",
- "success-note-l1": "_________",
- "success-note-l2": "_________",
- "success-note-l3": "__________________",
- "error-msg-save-mode": "__________________",
- "error-msg-cannot-save": "__________________",
- "error-msg-bad-json": "__________________",
- "warning-msg-validation": "__________________"
- },
- "app-rebuild": {
- "title": "______",
- "rebuild-note-l1": "__________________",
- "rebuild-note-l2": "__________________",
- "rebuild-note-l3": "__________________",
- "rebuild-button": "_________",
- "rebuilding-status-1": "______...",
- "rebuilding-status-2": "_________",
- "error-permission": "_________",
- "success-msg": "_________",
- "fail-msg": "_________",
- "reload-note": "_________",
- "reload-button": "______"
- },
- "cloud-sync": {
- "title": "_________",
- "intro-l1": "__________________",
- "intro-l2": "__________________",
- "intro-l3": "__________________",
- "backup-title-setup": "_________",
- "backup-title-update": "_________",
- "password-label-setup": "_________",
- "password-label-update": "_________",
- "backup-button-setup": "______",
- "backup-button-update": "______",
- "backup-id-label": "______",
- "backup-id-note": "__________________",
- "restore-title": "_________",
- "restore-id-label": "_________",
- "restore-password-label": "______",
- "restore-button": "______",
- "backup-error-unknown": "_________",
- "backup-error-password": "_________",
- "backup-success-msg": "_________",
- "restore-success-msg": "_________"
- }
-}
\ No newline at end of file
diff --git a/src/components/Settings/LanguageSwitcher.vue b/src/components/Settings/LanguageSwitcher.vue
index 693a0897..40df51a4 100644
--- a/src/components/Settings/LanguageSwitcher.vue
+++ b/src/components/Settings/LanguageSwitcher.vue
@@ -15,6 +15,10 @@
{{ language.flag }} {{ language.name }}
+
+ There are not currently any additional languages supported,
+ but stay tuned as more are on their way!
+
@@ -82,6 +86,11 @@ export default {
width: 100%;
}
+ p.sad-times {
+ color: var(--warning);
+ text-align: center;
+ }
+
.language-dropdown {
margin: 1rem auto;
div.vs__dropdown-toggle {
diff --git a/src/utils/languages.js b/src/utils/languages.js
index 5f43353a..5c5ddc79 100644
--- a/src/utils/languages.js
+++ b/src/utils/languages.js
@@ -1,6 +1,5 @@
// Locales - Import translation files here!
import en from '@/assets/locales/en.json';
-import de from '@/assets/locales/de.json';
// Language data - Add your country name, locale code and imported file here
export const languages = [
@@ -10,17 +9,11 @@ export const languages = [
locale: en,
flag: '๐ฌ๐ง',
},
- {
- name: 'German',
- code: 'de',
- locale: de,
- flag: '๐ฉ๐ช',
- },
// Including:
- // name - Human readable name for your language
- // code - ISO language code
+ // name - Human readable name for your language (e.g German)
+ // code - ISO language code (e.g. de)
// locale - The file that you imported above
- // flag - A nice emoji flag (optional)
+ // flag - A nice emoji flag (optional, e.g. ๐ฉ๐ช)
];
const i18nMessages = {};
From f6e0092190745244ecd4c41ee18d62d9ad56c993 Mon Sep 17 00:00:00 2001
From: Alicia Sykes
Date: Sat, 24 Jul 2021 22:02:49 +0100
Subject: [PATCH 36/43] :globe_with_meridians: Adds translations for
language-switcher component
---
src/assets/locales/en.json | 6 ++++++
src/components/Settings/LanguageSwitcher.vue | 12 ++++++++----
2 files changed, 14 insertions(+), 4 deletions(-)
diff --git a/src/assets/locales/en.json b/src/assets/locales/en.json
index f8f74ee9..9b69980b 100644
--- a/src/assets/locales/en.json
+++ b/src/assets/locales/en.json
@@ -62,6 +62,12 @@
"item-size-large": "Large",
"config-launcher-label": "Config"
},
+ "language-switcher": {
+ "title": "Change Application Language",
+ "dropdown-label": "Select a Language",
+ "save-button": "Save",
+ "success-msg": "Language Updated to"
+ },
"theme-maker": {
"title": "Theme Configurator",
"export-button": "Export Custom Variables",
diff --git a/src/components/Settings/LanguageSwitcher.vue b/src/components/Settings/LanguageSwitcher.vue
index 40df51a4..7def9ab3 100644
--- a/src/components/Settings/LanguageSwitcher.vue
+++ b/src/components/Settings/LanguageSwitcher.vue
@@ -1,7 +1,7 @@
-
Change Application Language
-
Select a Language:
+
{{ $t('language-switcher.title') }}
+
{{ $t('language-switcher.dropdown-label') }}:
{{ language.flag }} {{ language.name }}
@@ -42,20 +42,24 @@ export default {
};
},
methods: {
+ /* Save language to local storage */
saveLanguage() {
const selectedLanguage = this.language;
if (this.checkLocale(selectedLanguage)) {
localStorage.setItem(localStorageKeys.LANGUAGE, selectedLanguage.code);
this.setLangLocally();
- const successMsg = `${selectedLanguage.flag} Language Updated to ${selectedLanguage.name}`;
+ const successMsg = `${selectedLanguage.flag} `
+ + `${this.$t('language-switcher.success-msg')} ${selectedLanguage.name}`;
this.$toasted.show(successMsg, { className: 'toast-success' });
}
},
+ /* Check language is supported, before saving */
checkLocale(selectedLanguage) {
if (!selectedLanguage || !selectedLanguage.code) return false;
const i18nLocales = this.$i18n.availableLocales;
return i18nLocales.includes(selectedLanguage.code);
},
+ /* Apply language locally */
setLangLocally() {
if (this.language && this.language.code) {
this.$i18n.locale = this.language.code;
From f2e477811ffe747fd254079f777c8299f2960326 Mon Sep 17 00:00:00 2001
From: Alicia Sykes
Date: Sat, 24 Jul 2021 22:11:23 +0100
Subject: [PATCH 37/43] :package: Re-syncs yarn.lock
---
yarn.lock | 891 ++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 863 insertions(+), 28 deletions(-)
diff --git a/yarn.lock b/yarn.lock
index d534c905..a84a1628 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,6 +2,99 @@
# yarn lockfile v1
+"@architect/asap@~3.13.8":
+ version "3.13.8"
+ resolved "https://registry.yarnpkg.com/@architect/asap/-/asap-3.13.8.tgz#30ec1c2c47146b055fc0d9b1f27b60b02c733cde"
+ integrity sha512-PQVSKtFpFa7FF4yDuzQSx9gqshns5zY8k86YWd7KrdAO9jEs94xYM4+pvJ8XAl4lujIeq7/JszAbBV65KnpVuA==
+
+"@architect/create@~1.4.3":
+ version "1.4.3"
+ resolved "https://registry.yarnpkg.com/@architect/create/-/create-1.4.3.tgz#84475dde81a80a469d187e6da9b8ab9c5489230f"
+ integrity sha512-err8aueZ0y6BEffRnEgyCwaJqcU0CEbaQ/vAeassS6lElCnvGFtUnJAwODF4SdMnjkeg/FxlWoivjf800u/urw==
+ dependencies:
+ "@architect/inventory" "~1.4.3"
+ "@architect/utils" "~2.1.3"
+ chalk "~4.1.1"
+ run-parallel "~1.2.0"
+ run-series "~1.1.9"
+
+"@architect/hydrate@~1.10.2":
+ version "1.10.2"
+ resolved "https://registry.yarnpkg.com/@architect/hydrate/-/hydrate-1.10.2.tgz#fd307441ee00fabb381634a69349f78af1af6f2e"
+ integrity sha512-fp8o68yl7vtjSsOMGTnoCKK2AfWPQhJVFgwOjHPy51wgmjQU6aURAfizmgOZxUsG43Td8RBlJZ1wfKPar6IlrA==
+ dependencies:
+ "@architect/inventory" "~1.4.3"
+ "@architect/parser" "~3.0.1"
+ "@architect/utils" "~2.1.2"
+ acorn-loose "~8.1.0"
+ chalk "~4.1.1"
+ cpr "~3.0.1"
+ esquery "~1.4.0"
+ glob "~7.1.7"
+ rimraf "~3.0.2"
+ run-series "~1.1.9"
+ strip-ansi "~6.0.0"
+ symlink-or-copy "~1.3.1"
+
+"@architect/inventory@~1.4.3":
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/@architect/inventory/-/inventory-1.4.4.tgz#6b0fe4f6570238c5da606606a5af398b3e824e2a"
+ integrity sha512-qxHpgcmvBmEyn6g2EpZ8T4/q+5SC0VjTWpQEDuS/1TxOEAr90X8sr0P/ClxsgN7/E3oDOESD1hFye58vQGCv9w==
+ dependencies:
+ "@architect/asap" "~3.13.8"
+ "@architect/parser" "~3.0.1"
+ "@architect/utils" "~2.1.3"
+
+"@architect/parser@~3.0.1":
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/@architect/parser/-/parser-3.0.1.tgz#cb3cb62b1289cc8ab1f46cc9d2222c6fe0496664"
+ integrity sha512-mXn5Ha5a3tEOV5vkGHLdrDinSRfO8g9s72gKuOWA13HJtGcfI+jkYrEdQbLqe63gz0RPQN27h0e1IKc2kSzqHw==
+
+"@architect/sandbox@^3.7.4":
+ version "3.7.4"
+ resolved "https://registry.yarnpkg.com/@architect/sandbox/-/sandbox-3.7.4.tgz#c927c2b6fb7b2026860024ed51dc509320ad8231"
+ integrity sha512-5d5LZFvN4duu1JeEZqWZulwtEA3S4ZMoGpJ4DcOWW9Hr72jIgGcS35JTN9U/1sxqiz2DUWMVU3kOx+lToTcNVQ==
+ dependencies:
+ "@architect/asap" "~3.13.8"
+ "@architect/create" "~1.4.3"
+ "@architect/hydrate" "~1.10.2"
+ "@architect/inventory" "~1.4.3"
+ "@architect/parser" "~3.0.1"
+ "@architect/utils" "~2.1.3"
+ "@begin/hashid" "~1.0.0"
+ aws-sdk "~2.880.0"
+ body-parser "~1.19.0"
+ chalk "~4.1.1"
+ depstatus "~1.1.1"
+ dotenv "~10.0.0"
+ dynalite "~3.2.1"
+ finalhandler "~1.1.2"
+ glob "~7.1.7"
+ http-proxy "~1.18.1"
+ node-watch "~0.7.1"
+ router "~1.3.5"
+ run-parallel "~1.2.0"
+ run-series "~1.1.9"
+ run-waterfall "~1.1.7"
+ send "~0.17.1"
+ server-destroy "~1.0.1"
+ tree-kill "~1.2.2"
+ update-notifier "~5.1.0"
+ ws "~7.5.0"
+
+"@architect/utils@~2.1.2", "@architect/utils@~2.1.3":
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/@architect/utils/-/utils-2.1.3.tgz#eac7e612c3488c7144093cf2415cdf44eb33282a"
+ integrity sha512-zqkxclZQlvSpmpvtLccLAUWFHgcb3+VWeMD625Qogbe0eXNBJhK76kBXO3zDHqA08Xkw+RlUv7ZIxdODGJHCFw==
+ dependencies:
+ chalk "~4.1.1"
+ glob "~7.1.7"
+ path-sort "~0.1.0"
+ restore-cursor "~3.1.0"
+ run-series "~1.1.9"
+ run-waterfall "~1.1.7"
+ sha "~3.0.0"
+
"@babel/code-frame@7.12.11":
version "7.12.11"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f"
@@ -910,6 +1003,11 @@
"@babel/helper-validator-identifier" "^7.14.5"
to-fast-properties "^2.0.0"
+"@begin/hashid@~1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@begin/hashid/-/hashid-1.0.0.tgz#e3e3f9698423cdd74855f99b2411ed50ed6cf041"
+ integrity sha512-w+U9klEtRkt7hyW/f+/SvwPgJ4CTMO2ENddisX9dGgLUZKu+iKpb/IhYnQWIt9/Nnm/5DkApmiHGimPs621wwA==
+
"@eslint/eslintrc@^0.4.2":
version "0.4.2"
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.2.tgz#f63d0ef06f5c0c57d76c4ab5f63d3835c51b0179"
@@ -993,6 +1091,11 @@
resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b"
integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==
+"@sindresorhus/is@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea"
+ integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==
+
"@soda/friendly-errors-webpack-plugin@^1.7.1":
version "1.8.0"
resolved "https://registry.yarnpkg.com/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.0.tgz#84751d82a93019d5c92c0cf0e45ac59087cd2240"
@@ -1013,6 +1116,13 @@
resolved "https://registry.yarnpkg.com/@sphinxxxx/color-conversion/-/color-conversion-2.2.2.tgz#03ecc29279e3c0c832f6185a5bfa3497858ac8ca"
integrity sha512-XExJS3cLqgrmNBIP3bBw6+1oQ1ksGjFh0+oClDKFYpCCqx/hlqwWO5KO/S63fzUo67SxI9dMrF0y5T/Ey7h8Zw==
+"@szmarczak/http-timer@^1.1.2":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421"
+ integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==
+ dependencies:
+ defer-to-connect "^1.0.1"
+
"@types/body-parser@*":
version "1.19.1"
resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.1.tgz#0c0174c42a7d017b818303d4b5d969cb0b75929c"
@@ -1618,6 +1728,28 @@
resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
+abstract-leveldown@^6.2.1, abstract-leveldown@^6.3.0:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.3.0.tgz#d25221d1e6612f820c35963ba4bd739928f6026a"
+ integrity sha512-TU5nlYgta8YrBMNpc9FwQzRbiXsj49gsALsXadbGHt9CROPzX5fB0rWDR5mtdpOOKa5XqRFpbj1QroPAoPzVjQ==
+ dependencies:
+ buffer "^5.5.0"
+ immediate "^3.2.3"
+ level-concat-iterator "~2.0.0"
+ level-supports "~1.0.0"
+ xtend "~4.0.0"
+
+abstract-leveldown@~6.2.1:
+ version "6.2.3"
+ resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz#036543d87e3710f2528e47040bc3261b77a9a8eb"
+ integrity sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==
+ dependencies:
+ buffer "^5.5.0"
+ immediate "^3.2.3"
+ level-concat-iterator "~2.0.0"
+ level-supports "~1.0.0"
+ xtend "~4.0.0"
+
accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7:
version "1.3.7"
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
@@ -1636,6 +1768,13 @@ acorn-jsx@^5.2.0, acorn-jsx@^5.3.1:
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
+acorn-loose@~8.1.0:
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/acorn-loose/-/acorn-loose-8.1.0.tgz#60056c516883e7df2ed6c57ef91a670bb08b8d36"
+ integrity sha512-+X1zk54qiOWwIRywGBhfz8sLHFJ/adQRuVqn25m4HuD7/+GTXM1c0b3LH0bWerQ0H97lTk2GyuScGbSiQK9M1g==
+ dependencies:
+ acorn "^8.2.0"
+
acorn-walk@^7.1.1:
version "7.2.0"
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
@@ -1651,6 +1790,11 @@ acorn@^7.1.1, acorn@^7.4.0:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
+acorn@^8.2.0:
+ version "8.4.1"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.4.1.tgz#56c36251fc7cabc7096adc18f05afe814321a28c"
+ integrity sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==
+
address@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6"
@@ -1691,6 +1835,13 @@ alphanum-sort@^1.0.0:
resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=
+ansi-align@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb"
+ integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==
+ dependencies:
+ string-width "^3.0.0"
+
ansi-colors@^3.0.0:
version "3.2.4"
resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf"
@@ -1810,6 +1961,11 @@ array-flatten@1.1.1:
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=
+array-flatten@3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-3.0.0.tgz#6428ca2ee52c7b823192ec600fa3ed2f157cd541"
+ integrity sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==
+
array-flatten@^2.1.0:
version "2.1.2"
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099"
@@ -1902,7 +2058,7 @@ async-limiter@~1.0.0:
resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
-async@^2.6.2:
+async@^2.6.2, async@^2.6.3:
version "2.6.3"
resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff"
integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==
@@ -1932,6 +2088,21 @@ autoprefixer@^9.8.6:
postcss "^7.0.32"
postcss-value-parser "^4.1.0"
+aws-sdk@~2.880.0:
+ version "2.880.0"
+ resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.880.0.tgz#2198818f3b42bdd387e1898c8aab5fcca2409a36"
+ integrity sha512-/dBk3ejw22ED2edzGfmJB83KXDA4wLIw5Hb+2YMhly+gOWecvevy0tML2+YN/cmxyTy+wT0E0sM7fm1v7kmHtw==
+ dependencies:
+ buffer "4.9.2"
+ events "1.1.1"
+ ieee754 "1.1.13"
+ jmespath "0.15.0"
+ querystring "0.2.0"
+ sax "1.2.1"
+ url "0.10.3"
+ uuid "3.3.2"
+ xml2js "0.4.19"
+
aws-sign2@~0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
@@ -2040,7 +2211,7 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
-base64-js@^1.0.2:
+base64-js@^1.0.2, base64-js@^1.3.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
@@ -2122,7 +2293,7 @@ bn.js@^5.0.0, bn.js@^5.1.1:
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002"
integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==
-body-parser@1.19.0, body-parser@^1.19.0:
+body-parser@1.19.0, body-parser@^1.19.0, body-parser@~1.19.0:
version "1.19.0"
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a"
integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==
@@ -2155,6 +2326,20 @@ boolbase@^1.0.0, boolbase@~1.0.0:
resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
+boxen@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.0.1.tgz#657528bdd3f59a772b8279b831f27ec2c744664b"
+ integrity sha512-49VBlw+PrWEF51aCmy7QIteYPIFZxSpvqBdP/2itCPPlJ49kj9zg/XPRFrdkne2W+CfwXUls8exMvu1RysZpKA==
+ dependencies:
+ ansi-align "^3.0.0"
+ camelcase "^6.2.0"
+ chalk "^4.1.0"
+ cli-boxes "^2.2.1"
+ string-width "^4.2.0"
+ type-fest "^0.20.2"
+ widest-line "^3.1.0"
+ wrap-ansi "^7.0.0"
+
brace-expansion@^1.1.7:
version "1.1.11"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
@@ -2263,6 +2448,11 @@ browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.16.6:
escalade "^3.1.1"
node-releases "^1.1.71"
+buffer-crc32@^0.2.13:
+ version "0.2.13"
+ resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
+ integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=
+
buffer-from@^1.0.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
@@ -2283,7 +2473,7 @@ buffer-xor@^1.0.3:
resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=
-buffer@^4.3.0:
+buffer@4.9.2, buffer@^4.3.0:
version "4.9.2"
resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8"
integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==
@@ -2292,6 +2482,14 @@ buffer@^4.3.0:
ieee754 "^1.1.4"
isarray "^1.0.0"
+buffer@^5.5.0, buffer@^5.6.0:
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
+ integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
+ dependencies:
+ base64-js "^1.3.1"
+ ieee754 "^1.1.13"
+
builtin-status-codes@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
@@ -2355,6 +2553,19 @@ cache-loader@^4.1.0:
neo-async "^2.6.1"
schema-utils "^2.0.0"
+cacheable-request@^6.0.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912"
+ integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==
+ dependencies:
+ clone-response "^1.0.2"
+ get-stream "^5.1.0"
+ http-cache-semantics "^4.0.0"
+ keyv "^3.0.0"
+ lowercase-keys "^2.0.0"
+ normalize-url "^4.1.0"
+ responselike "^1.0.2"
+
call-bind@^1.0.0, call-bind@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
@@ -2405,7 +2616,7 @@ camelcase@^5.0.0, camelcase@^5.3.1:
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
-camelcase@^6.0.0:
+camelcase@^6.0.0, camelcase@^6.2.0:
version "6.2.0"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809"
integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==
@@ -2452,7 +2663,7 @@ chalk@^3.0.0:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
-chalk@^4.0.0, chalk@^4.1.0:
+chalk@^4.0.0, chalk@^4.1.0, chalk@~4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad"
integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==
@@ -2519,6 +2730,11 @@ ci-info@^1.5.0:
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497"
integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==
+ci-info@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
+ integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
+
cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
@@ -2544,6 +2760,11 @@ clean-css@4.2.x:
dependencies:
source-map "~0.6.0"
+cli-boxes@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f"
+ integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==
+
cli-cursor@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
@@ -2625,6 +2846,13 @@ clone-deep@^4.0.1:
kind-of "^6.0.2"
shallow-clone "^3.0.0"
+clone-response@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b"
+ integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=
+ dependencies:
+ mimic-response "^1.0.0"
+
clone@^1.0.2:
version "1.0.4"
resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
@@ -2764,6 +2992,18 @@ concat-stream@^1.5.0:
readable-stream "^2.2.2"
typedarray "^0.0.6"
+configstore@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96"
+ integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==
+ dependencies:
+ dot-prop "^5.2.0"
+ graceful-fs "^4.1.2"
+ make-dir "^3.0.0"
+ unique-string "^2.0.0"
+ write-file-atomic "^3.0.0"
+ xdg-basedir "^4.0.0"
+
confusing-browser-globals@^1.0.10:
version "1.0.10"
resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59"
@@ -2898,6 +3138,16 @@ cosmiconfig@^5.0.0:
js-yaml "^3.13.1"
parse-json "^4.0.0"
+cpr@~3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/cpr/-/cpr-3.0.1.tgz#b9a55038b7cd81a35c17b9761895bd8496aef1e5"
+ integrity sha1-uaVQOLfNgaNcF7l2GJW9hJau8eU=
+ dependencies:
+ graceful-fs "^4.1.5"
+ minimist "^1.2.0"
+ mkdirp "~0.5.1"
+ rimraf "^2.5.4"
+
create-ecdh@^4.0.0:
version "4.0.4"
resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e"
@@ -2980,6 +3230,11 @@ crypto-js@^4.0.0:
resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.0.0.tgz#2904ab2677a9d042856a2ea2ef80de92e4a36dcc"
integrity sha512-bzHZN8Pn+gS7DQA6n+iUmBfl0hO5DJq++QP3U6uTucDtk/0iGpXd/Gg7CGR0p8tJhofJyaKoWBuJI4eAO00BBg==
+crypto-random-string@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5"
+ integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==
+
css-color-names@0.0.4, css-color-names@^0.0.4:
version "0.0.4"
resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
@@ -3192,6 +3447,13 @@ decode-uri-component@^0.2.0:
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
+decompress-response@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3"
+ integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=
+ dependencies:
+ mimic-response "^1.0.0"
+
deep-equal@^1.0.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a"
@@ -3204,6 +3466,11 @@ deep-equal@^1.0.1:
object-keys "^1.1.1"
regexp.prototype.flags "^1.2.0"
+deep-extend@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
+ integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
+
deep-is@^0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
@@ -3236,6 +3503,19 @@ defaults@^1.0.3:
dependencies:
clone "^1.0.2"
+defer-to-connect@^1.0.1:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591"
+ integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==
+
+deferred-leveldown@~5.3.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz#27a997ad95408b61161aa69bd489b86c71b78058"
+ integrity sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw==
+ dependencies:
+ abstract-leveldown "~6.2.1"
+ inherits "^2.0.3"
+
define-properties@^1.1.2, define-properties@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
@@ -3265,6 +3545,11 @@ define-property@^2.0.2:
is-descriptor "^1.0.2"
isobject "^3.0.1"
+defined@~0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/defined/-/defined-0.0.0.tgz#f35eea7d705e933baf13b2f03b3f83d921403b3e"
+ integrity sha1-817qfXBekzuvE7LwOz+D2SFAOz4=
+
del@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4"
@@ -3288,6 +3573,13 @@ depd@~1.1.2:
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
+depstatus@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/depstatus/-/depstatus-1.1.1.tgz#b0d8873cedae68c621cd18d6235fea3c6795ee89"
+ integrity sha512-QT4i2Ql8RS1ttcj7zo4RzYvKz+/eOOIh6N7CXHqfDqC5ZX1hfx5KX6T88gy/j2UWP2x2ytjSoFBl+XW0gVZMug==
+ dependencies:
+ semver "^7.3.2"
+
des.js@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843"
@@ -3436,6 +3728,16 @@ dotenv@^8.2.0:
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b"
integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==
+dotenv@~10.0.0:
+ version "10.0.0"
+ resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81"
+ integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==
+
+duplexer3@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
+ integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=
+
duplexer@^0.1.1:
version "0.1.2"
resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6"
@@ -3451,6 +3753,24 @@ duplexify@^3.4.2, duplexify@^3.6.0:
readable-stream "^2.0.0"
stream-shift "^1.0.0"
+dynalite@~3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/dynalite/-/dynalite-3.2.1.tgz#24f0f8db65ffe910b4e70b5cde3cbbd2203e1381"
+ integrity sha512-PgpagYk1ecSzhjGuFMuFHEuWJ0BNddqTrG89ra+Jhs0zgjr/IPoNCmrAdBUumy2Ds2hx8V3aNuLKpPbaGcVwtQ==
+ dependencies:
+ async "^2.6.3"
+ big.js "^5.2.2"
+ buffer-crc32 "^0.2.13"
+ lazy "^1.0.11"
+ levelup "^4.4.0"
+ lock "^1.1.0"
+ memdown "^5.1.0"
+ minimist "^1.2.5"
+ once "^1.4.0"
+ subleveldown "^5.0.0"
+ optionalDependencies:
+ leveldown "^5.2.1"
+
easy-stack@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/easy-stack/-/easy-stack-1.0.1.tgz#8afe4264626988cabb11f3c704ccd0c835411066"
@@ -3517,6 +3837,16 @@ encodeurl@~1.0.2:
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
+encoding-down@^6.2.0:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/encoding-down/-/encoding-down-6.3.0.tgz#b1c4eb0e1728c146ecaef8e32963c549e76d082b"
+ integrity sha512-QKrV0iKR6MZVJV08QY0wp1e7vF6QbhnbQhb07bwpEyuz4uZiZgPlEGdkCROuFkUwdxlFaiPIhjyarH1ee/3vhw==
+ dependencies:
+ abstract-leveldown "^6.2.1"
+ inherits "^2.0.3"
+ level-codec "^9.0.0"
+ level-errors "^2.0.0"
+
end-of-stream@^1.0.0, end-of-stream@^1.1.0:
version "1.4.4"
resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
@@ -3545,7 +3875,7 @@ entities@^2.0.0:
resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
-errno@^0.1.3, errno@~0.1.7:
+errno@^0.1.3, errno@~0.1.1, errno@~0.1.7:
version "0.1.8"
resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f"
integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==
@@ -3602,6 +3932,11 @@ escalade@^3.1.1:
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
+escape-goat@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675"
+ integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==
+
escape-html@~1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
@@ -3837,7 +4172,7 @@ esprima@^4.0.0:
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
-esquery@^1.4.0:
+esquery@^1.4.0, esquery@~1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5"
integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==
@@ -3881,6 +4216,11 @@ eventemitter3@^4.0.0:
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
+events@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
+ integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=
+
events@^3.0.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
@@ -4324,7 +4664,7 @@ function-bind@^1.1.1:
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
-functional-red-black-tree@^1.0.1:
+functional-red-black-tree@^1.0.1, functional-red-black-tree@~1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
@@ -4358,14 +4698,14 @@ get-stream@^3.0.0:
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=
-get-stream@^4.0.0:
+get-stream@^4.0.0, get-stream@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
dependencies:
pump "^3.0.0"
-get-stream@^5.0.0:
+get-stream@^5.0.0, get-stream@^5.1.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
@@ -4404,7 +4744,7 @@ glob-to-regexp@^0.3.0:
resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab"
integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=
-glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4:
+glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@~7.1.7:
version "7.1.7"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90"
integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==
@@ -4416,6 +4756,13 @@ glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4:
once "^1.3.0"
path-is-absolute "^1.0.0"
+global-dirs@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686"
+ integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==
+ dependencies:
+ ini "2.0.0"
+
globals@^11.1.0:
version "11.12.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
@@ -4465,7 +4812,24 @@ globby@^9.2.0:
pify "^4.0.1"
slash "^2.0.0"
-graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6:
+got@^9.6.0:
+ version "9.6.0"
+ resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85"
+ integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==
+ dependencies:
+ "@sindresorhus/is" "^0.14.0"
+ "@szmarczak/http-timer" "^1.1.2"
+ cacheable-request "^6.0.0"
+ decompress-response "^3.3.0"
+ duplexer3 "^0.1.4"
+ get-stream "^4.1.0"
+ lowercase-keys "^1.0.1"
+ mimic-response "^1.0.1"
+ p-cancelable "^1.0.0"
+ to-readable-stream "^1.0.0"
+ url-parse-lax "^3.0.0"
+
+graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6:
version "4.2.6"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee"
integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==
@@ -4552,6 +4916,11 @@ has-values@^1.0.0:
is-number "^3.0.0"
kind-of "^4.0.0"
+has-yarn@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77"
+ integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==
+
has@^1.0.0, has@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
@@ -4696,6 +5065,11 @@ htmlparser2@^6.1.0:
domutils "^2.5.2"
entities "^2.0.0"
+http-cache-semantics@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390"
+ integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==
+
http-deceiver@^1.2.7:
version "1.2.7"
resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
@@ -4759,7 +5133,7 @@ http-proxy-middleware@^1.0.0:
is-plain-obj "^3.0.0"
micromatch "^4.0.2"
-http-proxy@^1.17.0, http-proxy@^1.18.1:
+http-proxy@^1.17.0, http-proxy@^1.18.1, http-proxy@~1.18.1:
version "1.18.1"
resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549"
integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==
@@ -4801,7 +5175,12 @@ icss-utils@^4.0.0, icss-utils@^4.1.1:
dependencies:
postcss "^7.0.14"
-ieee754@^1.1.4:
+ieee754@1.1.13:
+ version "1.1.13"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
+ integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==
+
+ieee754@^1.1.13, ieee754@^1.1.4:
version "1.2.1"
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
@@ -4826,6 +5205,16 @@ ignore@^5.0.2:
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57"
integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==
+immediate@^3.2.3:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.3.0.tgz#1aef225517836bcdf7f2a2de2600c79ff0269266"
+ integrity sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==
+
+immediate@~3.2.3:
+ version "3.2.3"
+ resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.2.3.tgz#d140fa8f614659bd6541233097ddaac25cdd991c"
+ integrity sha1-0UD6j2FGWb1lQSMwl92qwlzdmRw=
+
import-cwd@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9"
@@ -4856,6 +5245,11 @@ import-from@^2.1.0:
dependencies:
resolve-from "^3.0.0"
+import-lazy@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43"
+ integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=
+
import-local@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d"
@@ -4902,6 +5296,16 @@ inherits@2.0.3:
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
+ini@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5"
+ integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==
+
+ini@~1.3.0:
+ version "1.3.8"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
+ integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
+
inquirer@^7.1.0:
version "7.3.3"
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003"
@@ -5028,6 +5432,13 @@ is-ci@^1.0.10:
dependencies:
ci-info "^1.5.0"
+is-ci@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c"
+ integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==
+ dependencies:
+ ci-info "^2.0.0"
+
is-color-stop@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345"
@@ -5135,11 +5546,24 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
dependencies:
is-extglob "^2.1.1"
+is-installed-globally@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520"
+ integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==
+ dependencies:
+ global-dirs "^3.0.0"
+ is-path-inside "^3.0.2"
+
is-negative-zero@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24"
integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==
+is-npm@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8"
+ integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==
+
is-number-object@^1.0.4:
version "1.0.5"
resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.5.tgz#6edfaeed7950cff19afedce9fbfca9ee6dd289eb"
@@ -5186,6 +5610,11 @@ is-path-inside@^2.1.0:
dependencies:
path-is-inside "^1.0.2"
+is-path-inside@^3.0.2:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
+ integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
+
is-plain-obj@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
@@ -5243,7 +5672,7 @@ is-symbol@^1.0.2, is-symbol@^1.0.3:
dependencies:
has-symbols "^1.0.2"
-is-typedarray@~1.0.0:
+is-typedarray@^1.0.0, is-typedarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
@@ -5265,6 +5694,11 @@ is-wsl@^2.1.1, is-wsl@^2.2.0:
dependencies:
is-docker "^2.0.0"
+is-yarn-global@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232"
+ integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==
+
isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
@@ -5302,7 +5736,7 @@ javascript-stringify@^2.0.1:
resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-2.1.0.tgz#27c76539be14d8bd128219a2d731b09337904e79"
integrity sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==
-jmespath@^0.15.0:
+jmespath@0.15.0, jmespath@^0.15.0:
version "0.15.0"
resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217"
integrity sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=
@@ -5354,6 +5788,11 @@ jsesc@~0.5.0:
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
+json-buffer@3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898"
+ integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=
+
json-loader@^0.5.7:
version "0.5.7"
resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d"
@@ -5472,6 +5911,13 @@ jsprim@^1.2.2:
json-schema "0.2.3"
verror "1.10.0"
+keyv@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9"
+ integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==
+ dependencies:
+ json-buffer "3.0.0"
+
killable@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892"
@@ -5501,6 +5947,13 @@ kind-of@^6.0.0, kind-of@^6.0.2:
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
+latest-version@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face"
+ integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==
+ dependencies:
+ package-json "^6.3.0"
+
launch-editor-middleware@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/launch-editor-middleware/-/launch-editor-middleware-2.2.1.tgz#e14b07e6c7154b0a4b86a0fd345784e45804c157"
@@ -5516,6 +5969,73 @@ launch-editor@^2.2.1:
chalk "^2.3.0"
shell-quote "^1.6.1"
+lazy@^1.0.11:
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/lazy/-/lazy-1.0.11.tgz#daa068206282542c088288e975c297c1ae77b690"
+ integrity sha1-2qBoIGKCVCwIgojpdcKXwa53tpA=
+
+level-codec@^9.0.0:
+ version "9.0.2"
+ resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-9.0.2.tgz#fd60df8c64786a80d44e63423096ffead63d8cbc"
+ integrity sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ==
+ dependencies:
+ buffer "^5.6.0"
+
+level-concat-iterator@~2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz#1d1009cf108340252cb38c51f9727311193e6263"
+ integrity sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw==
+
+level-errors@^2.0.0, level-errors@~2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-2.0.1.tgz#2132a677bf4e679ce029f517c2f17432800c05c8"
+ integrity sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw==
+ dependencies:
+ errno "~0.1.1"
+
+level-iterator-stream@~4.0.0:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz#7ceba69b713b0d7e22fcc0d1f128ccdc8a24f79c"
+ integrity sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q==
+ dependencies:
+ inherits "^2.0.4"
+ readable-stream "^3.4.0"
+ xtend "^4.0.2"
+
+level-option-wrap@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/level-option-wrap/-/level-option-wrap-1.1.0.tgz#ad20e68d9f3c22c8897531cc6aa7af596b1ed129"
+ integrity sha1-rSDmjZ88IsiJdTHMaqevWWse0Sk=
+ dependencies:
+ defined "~0.0.0"
+
+level-supports@~1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-1.0.1.tgz#2f530a596834c7301622521988e2c36bb77d122d"
+ integrity sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==
+ dependencies:
+ xtend "^4.0.2"
+
+leveldown@^5.2.1:
+ version "5.6.0"
+ resolved "https://registry.yarnpkg.com/leveldown/-/leveldown-5.6.0.tgz#16ba937bb2991c6094e13ac5a6898ee66d3eee98"
+ integrity sha512-iB8O/7Db9lPaITU1aA2txU/cBEXAt4vWwKQRrrWuS6XDgbP4QZGj9BL2aNbwb002atoQ/lIotJkfyzz+ygQnUQ==
+ dependencies:
+ abstract-leveldown "~6.2.1"
+ napi-macros "~2.0.0"
+ node-gyp-build "~4.1.0"
+
+levelup@^4.4.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/levelup/-/levelup-4.4.0.tgz#f89da3a228c38deb49c48f88a70fb71f01cafed6"
+ integrity sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ==
+ dependencies:
+ deferred-leveldown "~5.3.0"
+ level-errors "~2.0.0"
+ level-iterator-stream "~4.0.0"
+ level-supports "~1.0.0"
+ xtend "~4.0.0"
+
levn@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
@@ -5603,6 +6123,11 @@ locate-path@^5.0.0:
dependencies:
p-locate "^4.1.0"
+lock@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/lock/-/lock-1.1.0.tgz#53157499d1653b136ca66451071fca615703fa55"
+ integrity sha1-UxV0mdFlOxNspmRRBx/KYVcD+lU=
+
lodash._reinterpolate@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
@@ -5695,6 +6220,16 @@ lower-case@^1.1.1:
resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac"
integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw=
+lowercase-keys@^1.0.0, lowercase-keys@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f"
+ integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==
+
+lowercase-keys@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479"
+ integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==
+
lru-cache@^4.0.1, lru-cache@^4.1.2:
version "4.1.5"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
@@ -5717,6 +6252,11 @@ lru-cache@^6.0.0:
dependencies:
yallist "^4.0.0"
+ltgt@~2.2.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5"
+ integrity sha1-81ypHEk/e3PaDgdJUwTxezH4fuU=
+
make-dir@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
@@ -5725,7 +6265,7 @@ make-dir@^2.0.0:
pify "^4.0.1"
semver "^5.6.0"
-make-dir@^3.0.2, make-dir@^3.1.0:
+make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
@@ -5768,6 +6308,18 @@ media-typer@0.3.0:
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
+memdown@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/memdown/-/memdown-5.1.0.tgz#608e91a9f10f37f5b5fe767667a8674129a833cb"
+ integrity sha512-B3J+UizMRAlEArDjWHTMmadet+UKwHd3UjMgGBkZcKAxAYVPS9o0Yeiha4qvz7iGiL2Sb3igUft6p7nbFWctpw==
+ dependencies:
+ abstract-leveldown "~6.2.1"
+ functional-red-black-tree "~1.0.1"
+ immediate "~3.2.3"
+ inherits "~2.0.1"
+ ltgt "~2.2.0"
+ safe-buffer "~5.2.0"
+
memory-fs@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
@@ -5883,6 +6435,11 @@ mimic-fn@^2.1.0:
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
+mimic-response@^1.0.0, mimic-response@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
+ integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==
+
mini-css-extract-plugin@^0.9.0:
version "0.9.0"
resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz#47f2cf07aa165ab35733b1fc97d4c46c0564339e"
@@ -6039,6 +6596,11 @@ nanomatch@^1.2.9:
snapdragon "^0.8.1"
to-regex "^3.0.1"
+napi-macros@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.0.0.tgz#2b6bae421e7b96eb687aa6c77a7858640670001b"
+ integrity sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg==
+
natural-compare@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
@@ -6071,6 +6633,11 @@ node-forge@^0.10.0:
resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3"
integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==
+node-gyp-build@~4.1.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.1.1.tgz#d7270b5d86717068d114cc57fff352f96d745feb"
+ integrity sha512-dSq1xmcPDKPZ2EED2S6zw/b9NKsqzXRE6dVr8TVQnI3FJOTteUMuqF3Qqs6LZg+mLGYJWqQzMbIjMtJqTv87nQ==
+
node-ipc@^9.1.1:
version "9.2.1"
resolved "https://registry.yarnpkg.com/node-ipc/-/node-ipc-9.2.1.tgz#b32f66115f9d6ce841dc4ec2009d6a733f98bb6b"
@@ -6126,6 +6693,11 @@ node-releases@^1.1.71:
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.73.tgz#dd4e81ddd5277ff846b80b52bb40c49edf7a7b20"
integrity sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==
+node-watch@~0.7.1:
+ version "0.7.1"
+ resolved "https://registry.yarnpkg.com/node-watch/-/node-watch-0.7.1.tgz#0caaa6a6833b0d533487f953c52a6c787769ba7c"
+ integrity sha512-UWblPYuZYrkCQCW5PxAwYSxaELNBLUckrTBBk8xr1/bUgyOkYYTsUcV4e3ytcazFEOyiRyiUrsG37pu6I0I05g==
+
normalize-package-data@^2.3.2, normalize-package-data@^2.5.0:
version "2.5.0"
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
@@ -6173,6 +6745,11 @@ normalize-url@^3.0.0:
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559"
integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==
+normalize-url@^4.1.0:
+ version "4.5.1"
+ resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a"
+ integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==
+
npm-run-all@^4.1.5:
version "4.1.5"
resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba"
@@ -6412,6 +6989,11 @@ os-tmpdir@~1.0.2:
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
+p-cancelable@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc"
+ integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==
+
p-finally@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
@@ -6479,6 +7061,16 @@ p-try@^2.0.0:
resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
+package-json@^6.3.0:
+ version "6.5.0"
+ resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0"
+ integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==
+ dependencies:
+ got "^9.6.0"
+ registry-auth-token "^4.0.0"
+ registry-url "^5.0.0"
+ semver "^6.2.0"
+
pako@~1.0.5:
version "1.0.11"
resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
@@ -6615,6 +7207,11 @@ path-parse@^1.0.6:
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
+path-sort@~0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/path-sort/-/path-sort-0.1.0.tgz#cb0175d4ecbfa5a18fe674cc6d720bfe15e0b805"
+ integrity sha1-ywF11Oy/paGP5nTMbXIL/hXguAU=
+
path-to-regexp@0.1.7:
version "0.1.7"
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
@@ -7089,6 +7686,11 @@ prepend-http@^1.0.0:
resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=
+prepend-http@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897"
+ integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=
+
prettier@^1.18.2:
version "1.19.1"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb"
@@ -7215,6 +7817,13 @@ punycode@^2.1.0, punycode@^2.1.1:
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
+pupa@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62"
+ integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==
+ dependencies:
+ escape-goat "^2.0.0"
+
q@^1.1.2:
version "1.5.1"
resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
@@ -7253,6 +7862,11 @@ querystringify@^2.1.1:
resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6"
integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==
+queue-microtask@^1.2.2:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
+ integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
+
randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
@@ -7283,6 +7897,21 @@ raw-body@2.4.0:
iconv-lite "0.4.24"
unpipe "1.0.0"
+rc@^1.2.8:
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
+ integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
+ dependencies:
+ deep-extend "^0.6.0"
+ ini "~1.3.0"
+ minimist "^1.2.0"
+ strip-json-comments "~2.0.1"
+
+reachdown@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/reachdown/-/reachdown-1.1.0.tgz#c3b85b459dbd0fe2c79782233a0a38e66a9b5454"
+ integrity sha512-6LsdRe4cZyOjw4NnvbhUd/rGG7WQ9HMopPr+kyL018Uci4kijtxcGR5kVb5Ln13k4PEE+fEFQbjfOvNw7cnXmA==
+
read-pkg-up@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07"
@@ -7323,7 +7952,7 @@ read-pkg@^5.1.1:
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
-readable-stream@^3.0.6, readable-stream@^3.6.0:
+readable-stream@^3.0.6, readable-stream@^3.4.0, readable-stream@^3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
@@ -7420,6 +8049,20 @@ register-service-worker@^1.6.2:
resolved "https://registry.yarnpkg.com/register-service-worker/-/register-service-worker-1.7.2.tgz#6516983e1ef790a98c4225af1216bc80941a4bd2"
integrity sha512-CiD3ZSanZqcMPRhtfct5K9f7i3OLCcBBWsJjLh1gW9RO/nS94sVzY59iS+fgYBOBqaBpf4EzfqUF3j9IG+xo8A==
+registry-auth-token@^4.0.0:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250"
+ integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==
+ dependencies:
+ rc "^1.2.8"
+
+registry-url@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009"
+ integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==
+ dependencies:
+ rc "^1.2.8"
+
regjsgen@^0.5.1:
version "0.5.2"
resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733"
@@ -7549,6 +8192,13 @@ resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.2
is-core-module "^2.2.0"
path-parse "^1.0.6"
+responselike@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7"
+ integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=
+ dependencies:
+ lowercase-keys "^1.0.0"
+
restore-cursor@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
@@ -7557,7 +8207,7 @@ restore-cursor@^2.0.0:
onetime "^2.0.0"
signal-exit "^3.0.2"
-restore-cursor@^3.1.0:
+restore-cursor@^3.1.0, restore-cursor@~3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e"
integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==
@@ -7592,7 +8242,7 @@ rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3:
dependencies:
glob "^7.1.3"
-rimraf@^3.0.2:
+rimraf@^3.0.2, rimraf@~3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
@@ -7607,11 +8257,31 @@ ripemd160@^2.0.0, ripemd160@^2.0.1:
hash-base "^3.0.0"
inherits "^2.0.1"
+router@~1.3.5:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/router/-/router-1.3.5.tgz#cb2f47f74fd99a77fb3bc01cc947f46b79b1790f"
+ integrity sha512-kozCJZUhuSJ5VcLhSb3F8fsmGXy+8HaDbKCAerR1G6tq3mnMZFMuSohbFvGv1c5oMFipijDjRZuuN/Sq5nMf3g==
+ dependencies:
+ array-flatten "3.0.0"
+ debug "2.6.9"
+ methods "~1.1.2"
+ parseurl "~1.3.3"
+ path-to-regexp "0.1.7"
+ setprototypeof "1.2.0"
+ utils-merge "1.0.1"
+
run-async@^2.4.0:
version "2.4.1"
resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==
+run-parallel@~1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
+ integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
+ dependencies:
+ queue-microtask "^1.2.2"
+
run-queue@^1.0.0, run-queue@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47"
@@ -7619,6 +8289,16 @@ run-queue@^1.0.0, run-queue@^1.0.3:
dependencies:
aproba "^1.1.1"
+run-series@~1.1.9:
+ version "1.1.9"
+ resolved "https://registry.yarnpkg.com/run-series/-/run-series-1.1.9.tgz#15ba9cb90e6a6c054e67c98e1dc063df0ecc113a"
+ integrity sha512-Arc4hUN896vjkqCYrUXquBFtRZdv1PfLbTYP71efP6butxyQ0kWpiNJyAgsxscmQg1cqvHY32/UCBzXedTpU2g==
+
+run-waterfall@~1.1.7:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/run-waterfall/-/run-waterfall-1.1.7.tgz#ae368b549b2f5171f86c2924492cab3352a6e9c5"
+ integrity sha512-iFPgh7SatHXOG1ClcpdwHI63geV3Hc/iL6crGSyBlH2PY7Rm/za+zoKz6FfY/Qlw5K7JwSol8pseO8fN6CMhhQ==
+
rxjs@^6.6.0:
version "6.6.7"
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9"
@@ -7666,7 +8346,12 @@ sass@^1.18.0:
dependencies:
chokidar ">=3.0.0 <4.0.0"
-sax@~1.2.4:
+sax@1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a"
+ integrity sha1-e45lYZCyKOgaZq6nSEgNgozS03o=
+
+sax@>=0.6.0, sax@~1.2.4:
version "1.2.4"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
@@ -7701,6 +8386,13 @@ selfsigned@^1.10.8:
dependencies:
node-forge "^0.10.0"
+semver-diff@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b"
+ integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==
+ dependencies:
+ semver "^6.3.0"
+
"semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0:
version "5.7.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
@@ -7711,19 +8403,19 @@ semver@7.0.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
-semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
+semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0:
version "6.3.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
-semver@^7.2.1, semver@^7.3.2:
+semver@^7.2.1, semver@^7.3.2, semver@^7.3.4:
version "7.3.5"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
dependencies:
lru-cache "^6.0.0"
-send@0.17.1:
+send@0.17.1, send@~0.17.1:
version "0.17.1"
resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8"
integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==
@@ -7772,6 +8464,11 @@ serve-static@1.14.1, serve-static@^1.14.1:
parseurl "~1.3.3"
send "0.17.1"
+server-destroy@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/server-destroy/-/server-destroy-1.0.1.tgz#f13bf928e42b9c3e79383e61cc3998b5d14e6cdd"
+ integrity sha1-8Tv5KOQrnD55OD5hzDmYtdFObN0=
+
set-blocking@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
@@ -7802,6 +8499,11 @@ setprototypeof@1.1.1:
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==
+setprototypeof@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
+ integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
+
sha.js@^2.4.0, sha.js@^2.4.8:
version "2.4.11"
resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
@@ -7810,6 +8512,13 @@ sha.js@^2.4.0, sha.js@^2.4.8:
inherits "^2.0.1"
safe-buffer "^5.0.1"
+sha@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/sha/-/sha-3.0.0.tgz#b2f2f90af690c16a3a839a6a6c680ea51fedd1ae"
+ integrity sha512-DOYnM37cNsLNSGIG/zZWch5CKIRNoLdYUQTQlcgkRkoYIUwDYjqDyye16YcDZg/OPdcbUgTKMjc4SY6TB7ZAPw==
+ dependencies:
+ graceful-fs "^4.1.2"
+
shallow-clone@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3"
@@ -8151,7 +8860,7 @@ string-width@^3.0.0, string-width@^3.1.0:
is-fullwidth-code-point "^2.0.0"
strip-ansi "^5.1.0"
-string-width@^4.1.0, string-width@^4.2.0:
+string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0:
version "4.2.2"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5"
integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==
@@ -8229,7 +8938,7 @@ strip-ansi@^5, strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
dependencies:
ansi-regex "^4.1.0"
-strip-ansi@^6.0.0:
+strip-ansi@^6.0.0, strip-ansi@~6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532"
integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==
@@ -8269,6 +8978,11 @@ strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
+strip-json-comments@~2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
+ integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
+
stylehacks@^4.0.0:
version "4.0.3"
resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5"
@@ -8278,6 +8992,18 @@ stylehacks@^4.0.0:
postcss "^7.0.0"
postcss-selector-parser "^3.0.0"
+subleveldown@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/subleveldown/-/subleveldown-5.0.1.tgz#aa2b4e4698a48d9a86856b2c4df1b6bce2d2ce53"
+ integrity sha512-cVqd/URpp7si1HWu5YqQ3vqQkjuolAwHypY1B4itPlS71/lsf6TQPZ2Y0ijT22EYVkvH5ove9JFJf4u7VGPuZw==
+ dependencies:
+ abstract-leveldown "^6.3.0"
+ encoding-down "^6.2.0"
+ inherits "^2.0.3"
+ level-option-wrap "^1.1.0"
+ levelup "^4.4.0"
+ reachdown "^1.1.0"
+
supports-color@^5.3.0:
version "5.5.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
@@ -8330,6 +9056,11 @@ svgo@^1.0.0, svgo@^1.3.2:
unquote "~1.1.1"
util.promisify "~1.0.0"
+symlink-or-copy@~1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/symlink-or-copy/-/symlink-or-copy-1.3.1.tgz#9506dd64d8e98fa21dcbf4018d1eab23e77f71fe"
+ integrity sha512-0K91MEXFpBUaywiwSSkmKjnGcasG/rVBXFLJz5DrgGabpYD6N+3yZrfD6uUIfpuTu65DZLHi7N8CizHc07BPZA==
+
table@^6.0.9:
version "6.7.1"
resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2"
@@ -8453,6 +9184,11 @@ to-object-path@^0.3.0:
dependencies:
kind-of "^3.0.2"
+to-readable-stream@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771"
+ integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==
+
to-regex-range@^2.1.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
@@ -8496,6 +9232,11 @@ tough-cookie@~2.5.0:
psl "^1.1.28"
punycode "^2.1.1"
+tree-kill@~1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc"
+ integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==
+
tryer@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8"
@@ -8567,6 +9308,13 @@ type-is@~1.6.17, type-is@~1.6.18:
media-typer "0.3.0"
mime-types "~2.1.24"
+typedarray-to-buffer@^3.1.5:
+ version "3.1.5"
+ resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080"
+ integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==
+ dependencies:
+ is-typedarray "^1.0.0"
+
typedarray@^0.0.6:
version "0.0.6"
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
@@ -8647,6 +9395,13 @@ unique-slug@^2.0.0:
dependencies:
imurmurhash "^0.1.4"
+unique-string@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d"
+ integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==
+ dependencies:
+ crypto-random-string "^2.0.0"
+
universalify@^0.1.0:
version "0.1.2"
resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
@@ -8675,6 +9430,26 @@ upath@^1.1.1:
resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894"
integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==
+update-notifier@~5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9"
+ integrity sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==
+ dependencies:
+ boxen "^5.0.0"
+ chalk "^4.1.0"
+ configstore "^5.0.1"
+ has-yarn "^2.1.0"
+ import-lazy "^2.1.0"
+ is-ci "^2.0.0"
+ is-installed-globally "^0.4.0"
+ is-npm "^5.0.0"
+ is-yarn-global "^0.3.0"
+ latest-version "^5.1.0"
+ pupa "^2.1.1"
+ semver "^7.3.4"
+ semver-diff "^3.1.1"
+ xdg-basedir "^4.0.0"
+
upper-case@^1.1.1:
version "1.1.3"
resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598"
@@ -8701,6 +9476,13 @@ url-loader@^2.2.0:
mime "^2.4.4"
schema-utils "^2.5.0"
+url-parse-lax@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c"
+ integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=
+ dependencies:
+ prepend-http "^2.0.0"
+
url-parse@^1.4.3, url-parse@^1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.1.tgz#d5fa9890af8a5e1f274a2c98376510f6425f6e3b"
@@ -8709,6 +9491,14 @@ url-parse@^1.4.3, url-parse@^1.5.1:
querystringify "^2.1.1"
requires-port "^1.0.0"
+url@0.10.3:
+ version "0.10.3"
+ resolved "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64"
+ integrity sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=
+ dependencies:
+ punycode "1.3.2"
+ querystring "0.2.0"
+
url@^0.11.0:
version "0.11.0"
resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
@@ -8769,6 +9559,11 @@ utils-merge@1.0.1:
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
+uuid@3.3.2:
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
+ integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==
+
uuid@^3.3.2, uuid@^3.4.0:
version "3.4.0"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
@@ -9182,6 +9977,13 @@ which@^2.0.1, which@^2.0.2:
dependencies:
isexe "^2.0.0"
+widest-line@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca"
+ integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==
+ dependencies:
+ string-width "^4.0.0"
+
word-wrap@^1.2.3:
version "1.2.3"
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
@@ -9361,6 +10163,16 @@ wrappy@1:
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+write-file-atomic@^3.0.0:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8"
+ integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==
+ dependencies:
+ imurmurhash "^0.1.4"
+ is-typedarray "^1.0.0"
+ signal-exit "^3.0.2"
+ typedarray-to-buffer "^3.1.5"
+
ws@^6.0.0, ws@^6.2.1:
version "6.2.2"
resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e"
@@ -9368,7 +10180,30 @@ ws@^6.0.0, ws@^6.2.1:
dependencies:
async-limiter "~1.0.0"
-xtend@^4.0.0, xtend@~4.0.1:
+ws@~7.5.0:
+ version "7.5.3"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74"
+ integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==
+
+xdg-basedir@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13"
+ integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==
+
+xml2js@0.4.19:
+ version "0.4.19"
+ resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7"
+ integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==
+ dependencies:
+ sax ">=0.6.0"
+ xmlbuilder "~9.0.1"
+
+xmlbuilder@~9.0.1:
+ version "9.0.7"
+ resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d"
+ integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=
+
+xtend@^4.0.0, xtend@^4.0.2, xtend@~4.0.0, xtend@~4.0.1:
version "4.0.2"
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
From 1fe3909cd61417bf5b0888903fadbfe891a4c415 Mon Sep 17 00:00:00 2001
From: Alicia Sykes
Date: Sun, 25 Jul 2021 12:28:32 +0100
Subject: [PATCH 38/43] :zap: Closes modal agter apply, and adds error toast
---
src/components/Settings/LanguageSwitcher.vue | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/src/components/Settings/LanguageSwitcher.vue b/src/components/Settings/LanguageSwitcher.vue
index 7def9ab3..ea512fbd 100644
--- a/src/components/Settings/LanguageSwitcher.vue
+++ b/src/components/Settings/LanguageSwitcher.vue
@@ -26,7 +26,7 @@
import Button from '@/components/FormElements/Button';
import { languages } from '@/utils/languages';
import SaveConfigIcon from '@/assets/interface-icons/save-config.svg';
-import { localStorageKeys } from '@/utils/defaults';
+import { localStorageKeys, modalNames } from '@/utils/defaults';
export default {
name: 'LanguageSwitcher',
@@ -39,10 +39,11 @@ export default {
return {
availibleLanguages: languages,
language: '',
+ modalName: modalNames.LANG_SWITCHER,
};
},
methods: {
- /* Save language to local storage */
+ /* Save language to local storage, show success msg and close modal */
saveLanguage() {
const selectedLanguage = this.language;
if (this.checkLocale(selectedLanguage)) {
@@ -51,6 +52,9 @@ export default {
const successMsg = `${selectedLanguage.flag} `
+ `${this.$t('language-switcher.success-msg')} ${selectedLanguage.name}`;
this.$toasted.show(successMsg, { className: 'toast-success' });
+ this.$modal.hide(this.modalName);
+ } else {
+ this.$toasted.show('Unable to update language', { className: 'toast-error' });
}
},
/* Check language is supported, before saving */
From 0f5b6a2ec75cf36458fccf78a73c416e0dc44609 Mon Sep 17 00:00:00 2001
From: Alicia Sykes
Date: Sun, 25 Jul 2021 12:29:38 +0100
Subject: [PATCH 39/43] :adhesive_bandage: Quick fix, dont emmit close event
for Lang switcher
---
src/components/Settings/ConfigLauncher.vue | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/components/Settings/ConfigLauncher.vue b/src/components/Settings/ConfigLauncher.vue
index 3eca1fda..d16141e3 100644
--- a/src/components/Settings/ConfigLauncher.vue
+++ b/src/components/Settings/ConfigLauncher.vue
@@ -22,8 +22,8 @@
-
+
From bc9011ee0bf399546b519602daa536dc84bddf54 Mon Sep 17 00:00:00 2001
From: Alicia Sykes
Date: Sun, 25 Jul 2021 12:30:43 +0100
Subject: [PATCH 40/43] :zap: Improve + refactor the Auto-Detect language apply
method
---
src/App.vue | 24 ++++++++++++++----------
1 file changed, 14 insertions(+), 10 deletions(-)
diff --git a/src/App.vue b/src/App.vue
index 775769d9..7d7faee4 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -17,6 +17,7 @@ import {
localStorageKeys,
splashScreenTime,
visibleComponents as defaultVisibleComponents,
+ language as defaultLanguage,
} from '@/utils/defaults';
const Accumulator = new ConfigAccumulator();
@@ -72,23 +73,26 @@ export default {
},
/* Checks local storage, then appConfig, and if a custom language is specified, its applied */
applyLanguage() {
- // If user has specified a language, then check and apply it
- const lang = localStorage[localStorageKeys.LANGUAGE] || this.appConfig.language;
- if (lang && this.$i18n.availableLocales.includes(lang)) {
- this.$i18n.locale = lang;
+ let language = defaultLanguage; // Language to apply
+ const availibleLocales = this.$i18n.availableLocales; // All available locales
+
+ // If user has specified a language, locally or in config, then check and apply it
+ const usersLang = localStorage[localStorageKeys.LANGUAGE] || this.appConfig.language;
+ if (usersLang && availibleLocales.includes(usersLang)) {
+ language = usersLang;
} else {
- // Attempt to apply language automatically, based on their system language
- let locale;
+ // Otherwise, attempt to apply language automatically, based on their system language
const usersBorwserLang1 = window.navigator.language || ''; // e.g. en-GB or or ''
const usersBorwserLang2 = usersBorwserLang1.split('-')[0]; // e.g. en or undefined
- const availibleLocales = this.$i18n.availableLocales;
if (availibleLocales.includes(usersBorwserLang1)) {
- locale = usersBorwserLang1;
+ language = usersBorwserLang1;
} else if (availibleLocales.includes(usersBorwserLang2)) {
- locale = usersBorwserLang2;
+ language = usersBorwserLang2;
}
- if (locale) this.$i18n.locale = locale; // If lanuage was found, apply it
}
+ // Apply Language
+ this.$i18n.locale = language;
+ document.getElementsByTagName('html')[0].setAttribute('lang', language);
},
},
/* When component mounted, hide splash and initiate the injection of custom styles */
From ed8d7a0fff687d89facd882ae8b324820e17d6cc Mon Sep 17 00:00:00 2001
From: Alicia Sykes
Date: Sun, 25 Jul 2021 13:38:11 +0100
Subject: [PATCH 41/43] :memo: Extract development guides into their own file
---
docs/developing.md | 70 ++++++++++++++++++----------------------------
1 file changed, 27 insertions(+), 43 deletions(-)
diff --git a/docs/developing.md b/docs/developing.md
index de600bfd..0d085507 100644
--- a/docs/developing.md
+++ b/docs/developing.md
@@ -1,22 +1,22 @@
-## Developing
+# Developing
-This article outlines how to get Dashy running in a development environment, and outlines the basics of the architecture.
+This article outlines how to get Dashy running in a development environment, and outlines the basics of the architecture.
+If you're adding new features, you may want to check out the [Development Guides](./docs/development-guides.md) docs, for tutorials covering basic tasks.
- [Setting up the Development Environment](#setting-up-the-dev-environment)
- [Resources for Beginners](#resources-for-beginners)
- [Style Guide](#style-guide)
- [Frontend Components](#frontend-components)
-- [Common Tasks](#common-tasks)
- [Project Structure](#directory-structure)
- [Dependencies and Packages](#dependencies-and-packages)
-### Setting up the Dev Environment
+## Setting up the Dev Environment
-#### Prerequisites
+### Prerequisites
You will need either the latest or LTS version of **[Node.js](https://nodejs.org/)** to build and serve the application and **[Git](https://git-scm.com/downloads)** to easily fetch the code, and push any changes. If you plan on running or deploying the container, you'll also need **[Docker](https://docs.docker.com/get-docker/)**. To avoid any unexpected issues, ensure you've got at least **[NPM](https://www.npmjs.com/get-npm)** V 7.5 or **[Yarn](https://classic.yarnpkg.com/en/docs/install/#windows-stable)** 1.22 (you may find [NVM](https://github.com/nvm-sh/nvm) helpful for switching/ managing versions).
-#### Running the Project
+### Running the Project
1. Get Code: `git clone git@github.com:Lissy93/dashy.git`
2. Navigate into the directory: `cd dashy`
@@ -25,7 +25,7 @@ You will need either the latest or LTS version of **[Node.js](https://nodejs.org
Dashy should now be being served on http://localhost:8080/. Hot reload is enabled, so making changes to any of the files will trigger them to be rebuilt and the page refreshed.
-#### Project Commands
+### Project Commands
- `yarn dev` - Starts the development server with hot reloading
- `yarn build` - Builds the project for production, and outputs it into `./dist`
@@ -47,7 +47,7 @@ Note:
- If you are using NPM, replace `yarn` with `npm run`
- If you are using Docker, precede each command with `docker exec -it [container-id]`. Container ID can be found by running `docker ps`
-### Environmental Variables
+## Environmental Variables
- `PORT` - The port in which the application will run (defaults to `4000` for the Node.js server, and `80` within the Docker container)
- `NODE_ENV` - Which environment to use, either `production`, `development` or `test`
- `VUE_APP_DOMAIN` - The URL where Dashy is going to be accessible from. This should include the protocol, hostname and (if not 80 or 443), then the port too, e.g. `https://localhost:3000`, `http://192.168.1.2:4002` or `https://dashy.mydomain.com`
@@ -58,7 +58,7 @@ If you do add new variables, ensure that there is always a fallback (define it i
Any environmental variables used by the frontend are preceded with `VUE_APP_`. Vue will merge the contents of your `.env` file into the app in a similar way to the ['dotenv'](https://github.com/motdotla/dotenv) package, where any variables that you set on your system will always take preference over the contents of any `.env` file.
-### Environment Modes
+## Environment Modes
Both the Node app and Vue app supports several environments: `production`, `development` and `test`. You can set the environment using the `NODE_ENV` variable (either with your OS, in the Docker script or in an `.env` file - see [Environmental Variables](#environmental-variables) above).
The production environment will build the app in full, minifying and streamlining all assets. This means that building takes longer, but the app will then run faster. Whereas the dev environment creates a webpack configuration which enables HMR, doesn't hash assets or create vendor bundles in order to allow for fast re-builds when running a dev server. It supports sourcemaps and other debugging tools, re-compiles and reloads quickly but is not optimized, and so the app will not be as snappy as it could be. The test environment is intended for test running servers, it ignores assets that aren't needed for testing, and focuses on running all the E2E, regression and unit tests. For more information, see [Vue CLI Environment Modes](https://cli.vuejs.org/guide/mode-and-env.html#modes).
@@ -67,7 +67,7 @@ By default:
- `production` is used by `yarn build` (or `vue-cli-service build`) and `yarn build-and-start` and `yarn pm2-start`
- `development` is used by `yarn dev` (or `vue-cli-service serve`)
- `test` is used by `yarn test` (or `vue-cli-service test:unit`)
-### Resources for Beginners
+## Resources for Beginners
New to Web Development? Glad you're here! Dashy is a pretty simple app, so it should make a good candidate for your first PR. Presuming that you already have a basic knowledge of JavaScript, the following articles should point you in the right direction for getting up to speed with the technologies used in this project:
- [Introduction to Vue.js](https://v3.vuejs.org/guide/introduction.html)
- [Vue.js Walkthrough](https://www.taniarascia.com/getting-started-with-vue/)
@@ -82,7 +82,7 @@ New to Web Development? Glad you're here! Dashy is a pretty simple app, so it sh
As well as Node, Git and Docker- you'll also need an IDE (e.g. [VS Code](https://code.visualstudio.com/) or [Vim](https://www.vim.org/)) and a terminal (Windows users may find [WSL](https://docs.microsoft.com/en-us/windows/wsl/) more convenient).
-### Style Guide
+## Style Guide
Linting is done using [ESLint](https://eslint.org/), and using the [Vue.js Styleguide](https://github.com/vuejs/eslint-config-standard), which is very similar to the [AirBnB Stylguide](https://github.com/airbnb/javascript). You can run `yarn lint` to report and fix issues. While the dev server is running, issues will be reported to the console automatically. Any lint errors will trigger the build to fail. Note that all lint checks must pass before any PR can be merged. Linting is also run as a git pre-commit hook
@@ -99,7 +99,7 @@ The most significant things to note are:
For the full styleguide, see: [github.com/airbnb/javascript](https://github.com/airbnb/javascript)
-### Frontend Components
+## Frontend Components
All frontend code is located in the `./src` directory, which is split into 5 sub-folders:
- Components - All frontend web components are located here. Each component should have a distinct, well defined and simple task, and ideally should not be too long. The components directory is organised into a series of sub-directories, representing a specific area of the application
@@ -116,37 +116,21 @@ The structure of the components directory is similar to that of the frontend app
-### Common Tasks
-
-#### Creating a new theme
-
-See [Theming](./theming.md)
-
-#### Adding a new option in the config file
-
-All application config is specified in `./public/conf.yml` - see [Configuring Docs](./configuring.md) for info. Before adding a new option in the config file, first ensure that there is nothing similar available, that is is definitely necessary, it will not conflict with any other options and most importantly that it will not cause any breaking changes. Ensure that you choose an appropriate and relevant section to place it under.
-
-Checklist:
-- Update the [Schema](https://github.com/Lissy93/dashy/blob/master/src/utils/ConfigSchema.js) with the parameters for your new option
-- Set a default value (if required) within [`defaults.js`](https://github.com/Lissy93/dashy/blob/master/src/utils/defaults.js)
-- Document the new value in [`configuring.md`](./configuring.md)
-- Test that the reading of the new attribute is properly handled, and will not cause any errors when it is missing or populated with an unexpected value
-
-#### Updating Dependencies
+### Updating Dependencies
Running `yarn upgrade` will updated all dependencies based on the ranges specified in the `package.json`. The `yarn.lock` file will be updated, as will the contents of `./node_modules`, for more info, see the [yarn upgrade documentation](https://classic.yarnpkg.com/en/docs/cli/upgrade/). It is important to thoroughly test after any big dependency updates.
-### Development Tools
+## Development Tools
-#### Performance - Lighthouse
+### Performance - Lighthouse
The easiest method of checking performance is to use Chromium's build in auditing tool, Lighthouse. To run the test, open Developer Tools (usually F12) --> Lighthouse and click on the 'Generate Report' button at the bottom.
-#### Dependencies - BundlePhobia
+### Dependencies - BundlePhobia
[BundlePhobia](https://bundlephobia.com/) is a really useful app that lets you analyze the cost of adding any particular dependency to an application
-### Directory Structure
+## Directory Structure
-#### Files in the Root: `./`
+### Files in the Root: `./`
```
โฎ
โโโ package.json # Project meta-data, dependencies and paths to scripts
@@ -163,7 +147,7 @@ The easiest method of checking performance is to use Chromium's build in auditin
โฏ
```
-#### Frontend Source: `./src/`
+### Frontend Source: `./src/`
```
./src
@@ -219,17 +203,17 @@ The easiest method of checking performance is to use Chromium's build in auditin
```
---
-### Dependencies and Packages
+## Dependencies and Packages
During development I made the conscious decision to not reinvent the wheel if not necessary. It is often really tempting to try an build everything yourself, but sometimes it's just not practical. Often there's packages out there, developed by amazing individuals which are probably built better than I could have done. That being said, I have looked through the code of most these dependencies, to verify that they are both legitimate and efficient.
The following packages are used. Full credit, and massive kudos to each of their authors.
-#### Core
+### Core
At it's core, the application uses [Vue.js](https://github.com/vuejs/vue), as well as it's services. Styling is done with [SCSS](https://github.com/sass/sass), JavaScript is currently [Babel](https://github.com/babel/babel), (but I am in the process of converting to [TypeScript](https://github.com/Microsoft/TypeScript)), linting is done with [ESLint](https://github.com/eslint/eslint), the config is defined in [YAML](https://github.com/yaml/yaml), and there is a simple [Node.js](https://github.com/nodejs/node) server to serve up the static app.
-#### Frontend Components
+### Frontend Components
- [`vue-select`](https://github.com/sagalbot/vue-select) - Dropdown component by @sagalbot `MIT`
- [`vue-js-modal`](https://github.com/euvl/vue-js-modal) - Modal component by @euvl `MIT`
@@ -241,23 +225,23 @@ At it's core, the application uses [Vue.js](https://github.com/vuejs/vue), as we
- [`vue-prism-editor`](https://github.com/koca/vue-prism-editor) - Lightweight code editor by @koca `MIT`
- Forked from [`prism.js`](https://github.com/PrismJS/prism) `MIT`
-#### Utilities
+### Utilities
- [`crypto-js`](https://github.com/brix/crypto-js) - Encryption implementations by @evanvosberg and community `MIT`
- [`axios`](https://github.com/axios/axios) - Promise based HTTP client by @mzabriskie and community `MIT`
- [`ajv`](https://github.com/ajv-validator/ajv) - JSON schema Validator by @epoberezkin and community `MIT`
-#### Server
+### Server
- [`connect`](https://github.com/senchalabs/connect) - Minimilistic middleware layer for chaining together Node.js requests handled by the server file `MIT`
- [`serve-static`](https://github.com/expressjs/serve-static) - Lightweight static Node file server `MIT`
-##### External Services
+#### External Services
The 1-Click deploy demo uses [Play-with-Docker Labs](https://play-with-docker.com/). Code is hosted on [GitHub](https://github.com), Docker image is hosted on [DockerHub](https://hub.docker.com/), and the demos are hosted on [Netlify](https://www.netlify.com/).
-### Notes
+## Notes
-#### Known Warnings
+### Known Warnings
When running the build command, several warnings appear. These are not errors, and do not affect the security or performance of the application. They will be addressed in a future update
From 5a37534d73b2e00b3668256099c6102f12a7dd36 Mon Sep 17 00:00:00 2001
From: Alicia Sykes
Date: Sun, 25 Jul 2021 13:38:39 +0100
Subject: [PATCH 42/43] :memo: Adds documentation for Language Switching
---
README.md | 16 ++++++
docs/development-guides.md | 113 +++++++++++++++++++++++++++++++++++++
2 files changed, 129 insertions(+)
create mode 100644 docs/development-guides.md
diff --git a/README.md b/README.md
index 6d279f4e..5e495cb9 100644
--- a/README.md
+++ b/README.md
@@ -29,6 +29,7 @@
- Easy single-file YAML-based configuration, which can also be configured directly through the UI
- Small bundle size, fully responsive UI and PWA makes the app easy to use on any device
- Easy to setup with Docker, or on bare metal, or with 1-Click cloud deployment
+- Multi-language support, with additional languages coming soon
- Plus lots more...
## Demo โก
@@ -304,6 +305,21 @@ From the Settings Menu in Dashy, you can download, backup, edit and rest your co
---
+## Language Switching ๐
+
+Dashy has the ability to support multiple languages and locales. When available, you're language should be automatically detected and applied on load, based on your browser or systems settings. But you can also select a language through the UI, under Config --> Switch Language.
+
+Alternatively, set you're language in the config file, under `appConfig.language`. The language must be specified as either a 2-digit [ISO 639-1 code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) (such as `en`), or where available, the 2-digit code followed by a region or dialect (e.g. `en-GB`).
+
+#### Supported Languages
+- ๐ฌ๐ง **English**: `en`
+
+#### Add your Language
+I would love for Dashy to be available and comfortable to use for all, including non-native English speakers. If you speak another language, and have a few minutes to sapir, you're help with translating it would be very much appreciated.
+There's not too much text to translate, and it's all located in [a single JSON file](https://github.com/Lissy93/dashy/tree/master/src/assets/locales), and you don't have to translate it all, as any missing items will just fallback to English. For more info, see the [Development Guides Docs](https://github.com/Lissy93/dashy/blob/master/docs/development-guides.md#adding-translations), and feel free to reach out if you need any support.
+
+---
+
## Sections & Items ๐๏ธ
Dashy is made up of a series of sections, each containing a series of items.
diff --git a/docs/development-guides.md b/docs/development-guides.md
new file mode 100644
index 00000000..f05282ca
--- /dev/null
+++ b/docs/development-guides.md
@@ -0,0 +1,113 @@
+# Development Guides
+
+A series of short tutorials, to guide you through the most common development tasks.
+
+Sections:
+- [Creating a new theme](#creating-a-new-theme)
+- [Adding Translations](#adding-translations)
+- [Adding a new option in the config file](#adding-a-new-option-in-the-config-file)
+
+## Creating a new theme
+
+See [Theming](./theming.md)
+
+## Adding Translations
+
+Dashy is using [vue-i18n](https://vue-i18n.intlify.dev/guide/) to manage multi-language support.
+
+Adding a new language is pretty straightforward, with just three steps:
+
+##### 1. Create a new Language File
+Create a new JSON file in `./src/assets/locales` name is a 2-digit [ISO-639 code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) for your language, E.g. for German `de.json`, French `fr.json` or Spanish `es.json` - You can find a list of all ISO codes at [iso.org](https://www.iso.org/obp/ui).
+If your language is a specific dialect or regional language, then use the Posfix [CLDR](http://cldr.unicode.org/) format, where, e.g. `en-GB.json` (British), `es-MX.json` (Spanish, in Mexico) or `zh-CN.json` (Chinese, simplified) - A list of which can be found [here](https://github.com/unicode-org/cldr-json/blob/master/cldr-json/cldr-core/availableLocales.json)
+
+
+##### 2. Translate!
+Using [`en.json`](https://github.com/Lissy93/dashy/tree/master/src/assets/locales/en.json) as an example, translate the JSON values to your language, while leaving the keys as they are. It's fine to leave out certain items, as if they're missing they will fall-back to English. If you see any attribute which include curly braces (`{xxx}`), then leave the inner value of these braces as is, as this is for variables.
+
+```json
+{
+ "theme-maker": {
+ "export-button": "Benutzerdefinierte Variablen exportieren",
+ "reset-button": "Stile zurรผcksetzen fรผr",
+ "show-all-button": "Alle Variablen anzeigen",
+ "save-button": "Speichern",
+ "cancel-button": "Abbrechen",
+ "saved-toast": "{theme} Erfolgreich aktualisiert",
+ "reset-toast": "Benutzerdefinierte Farben fรผr {theme} entfernt"
+ },
+}
+```
+
+##### 3. Add your file to the app
+
+In [`./src/utils/languages.js`](https://github.com/Lissy93/dashy/tree/master/src/utils/languages.js), you need to do 2 small things:
+
+First import your new translation file, do this at the top of the page.
+E.g. `import de from '@/assets/locales/de.json';`
+
+Second, add it to the array of languages, e.g:
+```javascript
+export const languages = [
+ {
+ name: 'English',
+ code: 'en',
+ locale: en,
+ flag: '๐ฌ๐ง',
+ },
+ {
+ name: 'German', // The name of your language
+ code: 'de', // The ISO code of your language
+ locale: de, // The name of the file you imported (no quotes)
+ flag: '๐ฉ๐ช', // An optional flag emoji
+ },
+];
+```
+You can also add your new language to the readme, under the [Language Switching](https://github.com/Lissy93/dashy#language-switching-) section and optionally include your name/ username if you'd like to be credited for your work. Done!
+
+If you are not comfortable with making pull requests, or do not want to modify the code, then feel free to instead send the translated file to me, and I can add it into the application. I will be sure to credit you appropriately.
+
+# Adding a new option in the config file
+
+This section is for, if you're adding a new component or setting, that requires an additional item to be added to the users config file.
+
+All of the users config is specified in `./public/conf.yml` - see [Configuring Docs](./configuring.md) for info.
+Before adding a new option in the config file, first ensure that there is nothing similar available, that is is definitely necessary, it will not conflict with any other options and most importantly that it will not cause any breaking changes. Ensure that you choose an appropriate and relevant section to place it under.
+
+Next decide the most appropriate place for your attribute:
+- Application settings should be located under `appConfig`
+- Page info (such as text and metadata) should be under `pageInfo`
+- Data relating to specific sections should be under `section[n].displayData`
+- And for setting applied to specific items, it should be under `item[n]`
+
+In order for the user to be able to add your new attribute using the Config Editor, and for the build validation to pass, your attribute must be included within the [ConfigSchema](https://github.com/Lissy93/dashy/blob/master/src/utils/ConfigSchema.js). You can read about how to do this on the [ajv docs](https://ajv.js.org/json-schema.html). Give your property a type and a description, as well as any other optional fields that you feel are relevant. For example:
+
+```json
+"fontAwesomeKey": {
+ "type": "string",
+ "pattern": "^[a-z0-9]{10}$",
+ "description": "API key for font-awesome",
+ "example": "0821c65656"
+}
+```
+or
+```json
+"iconSize": {
+ "enum": [ "small", "medium", "large" ],
+ "default": "medium",
+ "description": "The size of each link item / icon"
+}
+```
+
+Next, if you're property should have a default value, then add it to [`defaults.js`](https://github.com/Lissy93/dashy/blob/master/src/utils/defaults.js). This ensures that nothing will break if the user does not use your property, and having all defaults together keeps things organised and easy to manage.
+
+If your property needs additional logic for fetching, setting or processing, then you can add a helper function within [`ConfigHelpers.js`](https://github.com/Lissy93/dashy/blob/master/src/utils/ConfigHelpers.js).
+
+Finally, add your new property to the [`configuring.md`](./configuring.md) API docs. Put it under the relevant section, and be sure to include field name, data type, a description and mention that it is optional. If your new feature needs more explaining, then you can also document it under the relevant section elsewhere in the documentation.
+
+Checklist:
+- [] Ensure the new attribute is actually necessary, and nothing similar already exists
+- [] Update the [Schema](https://github.com/Lissy93/dashy/blob/master/src/utils/ConfigSchema.js) with the parameters for your new option
+- [] Set a default value (if required) within [`defaults.js`](https://github.com/Lissy93/dashy/blob/master/src/utils/defaults.js)
+- [] Document the new value in [`configuring.md`](./configuring.md)
+- [] Test that the reading of the new attribute is properly handled, and will not cause any errors when it is missing or populated with an unexpected value
\ No newline at end of file
From 51641d0c0db75ec9677c4d60d74e67f496e4fc45 Mon Sep 17 00:00:00 2001
From: Alicia Sykes
Date: Sun, 25 Jul 2021 13:39:49 +0100
Subject: [PATCH 43/43] :bookmark: Bumped to version 1.4.2 -
Internationalisation
---
package.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/package.json b/package.json
index c123f9c8..d1196a42 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "Dashy",
- "version": "1.4.1",
+ "version": "1.4.2",
"license": "MIT",
"main": "server",
"scripts": {
@@ -89,4 +89,4 @@
"> 1%",
"last 2 versions"
]
-}
+}
\ No newline at end of file